Assembly Diffs
linux arm64
Diffs are based on 2,520,572 contexts (999,218 MinOpts, 1,521,354 FullOpts).
MISSED contexts: base: 4 (0.00%), diff: 97 (0.00%)
Overall (+366,484 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run_pgo.linux.arm64.checked.mch |
74,854,976 |
-16,084 |
| coreclr_tests.run.linux.arm64.checked.mch |
509,287,460 |
+21,008 |
| libraries.pmi.linux.arm64.checked.mch |
76,692,260 |
+136 |
| libraries_tests.run.linux.arm64.Release.mch |
380,944,972 |
+363,948 |
| librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
164,707,488 |
-2,524 |
FullOpts (+366,484 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run_pgo.linux.arm64.checked.mch |
52,852,636 |
-16,084 |
| coreclr_tests.run.linux.arm64.checked.mch |
160,417,140 |
+21,008 |
| libraries.pmi.linux.arm64.checked.mch |
76,572,276 |
+136 |
| libraries_tests.run.linux.arm64.Release.mch |
166,327,572 |
+363,948 |
| librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
151,304,588 |
-2,524 |
Example diffs
benchmarks.run_pgo.linux.arm64.checked.mch
-48 (-6.94%) : 119565.dasm - System.Linq.Enumerable:Countushort:int (Tier1-OSR)
@@ -11,143 +11,214 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Collections.Generic.IEnumerable`1[ushort]>
-; V01 arg1 [V01,T03] ( 8,301.97) ref -> x19 class-hnd single-def <System.Func`2[ushort,ubyte]>
-; V02 loc0 [V02,T10] ( 5,198.10) int -> [fp+0xD4] do-not-enreg[Z] EH-live tier0-frame
-; V03 loc1 [V03,T00] ( 21,901.02) ref -> [fp+0xC8] do-not-enreg[H] class-hnd EH-live tier0-frame <System.Collections.Generic.IEnumerator`1[ushort]>
-; V04 loc2 [V04,T05] ( 7,299.97) ushort -> x1
+; V01 arg1 [V01,T10] ( 7, 3.04) ref -> x19 class-hnd single-def <System.Func`2[ushort,ubyte]>
+; V02 loc0 [V02,T07] ( 5,199.98) int -> [fp+0xB4] do-not-enreg[Z] EH-live tier0-frame
+; V03 loc1 [V03,T00] ( 21,901.02) ref -> [fp+0xA8] do-not-enreg[H] class-hnd EH-live tier0-frame <System.Collections.Generic.IEnumerator`1[ushort]>
+; V04 loc2 [V04,T06] ( 6,199.98) ushort -> x1
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref "guarded devirt return temp"
;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.String>
; V08 tmp3 [V08,T08] ( 4,199.98) int -> x1 "guarded devirt return temp"
;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.CharEnumerator>
-; V10 tmp5 [V10,T09] ( 4,199.98) int -> x0 "guarded devirt return temp"
+; V10 tmp5 [V10,T15] ( 2, 0 ) int -> x0 "guarded devirt return temp"
;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp" <Jil.Deserialize.InlineDeserializer`1+<>c[System.__Canon]>
-; V12 tmp7 [V12,T01] ( 5,200 ) int -> x2 "guarded devirt return temp"
+; V12 tmp7 [V12,T01] ( 5,200 ) int -> x1 "guarded devirt return temp"
;* V13 tmp8 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.CharEnumerator>
-;* V14 tmp9 [V14,T14] ( 0, 0 ) int -> zero-ref "OSR entry state var"
+;* V14 tmp9 [V14,T13] ( 0, 0 ) int -> zero-ref "OSR entry state var"
;* V15 tmp10 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.CharEnumerator>
-; V16 tmp11 [V16,T07] ( 6,299.97) int -> x23 "Inline stloc first use temp"
-; V17 tmp12 [V17,T06] ( 6,299.97) ref -> x24 class-hnd exact "Inline stloc first use temp" <System.String>
-; V18 tmp13 [V18,T02] ( 6,600 ) int -> x21 "Inline stloc first use temp"
-; V19 tmp14 [V19,T04] ( 6,300 ) int -> x22 "Inline stloc first use temp"
-; V20 PSPSym [V20,T15] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
-; V21 cse0 [V21,T11] ( 2,197.98) int -> x1 "CSE - aggressive"
-; V22 cse1 [V22,T12] ( 6, 3.04) long -> x20 hoist multi-def "CSE - aggressive"
-; V23 cse2 [V23,T13] ( 2, 2.00) int -> x1 "CSE - moderate"
+; V16 tmp11 [V16,T05] ( 6,299.97) int -> x0 "Inline stloc first use temp"
+; V17 tmp12 [V17,T04] ( 6,299.97) ref -> x11 class-hnd exact "Inline stloc first use temp" <System.String>
+; V18 tmp13 [V18,T02] ( 6,600 ) int -> x0 "Inline stloc first use temp"
+; V19 tmp14 [V19,T03] ( 6,300 ) int -> x11 "Inline stloc first use temp"
+; V20 PSPSym [V20,T14] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
+; V21 cse0 [V21,T09] ( 2,197.98) int -> x1 "CSE - aggressive"
+; V22 cse1 [V22,T11] ( 6, 3.04) long -> x20 hoist multi-def "CSE - aggressive"
+; V23 cse2 [V23,T12] ( 2, 2.00) int -> x1 "CSE - moderate"
;
; Lcl frame size = 16
G_M33418_IG01: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
+ stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
- stp x23, x24, [sp, #0x40]
mov fp, sp
- add xip1, sp, #240
+ add xip1, sp, #208
str xip1, [fp, #0x18] // [V20 PSPSym]
- ldr x19, [fp, #0xD8]
+ ldr x19, [fp, #0xB8]
; gcrRegs +[x19]
- ;; size=32 bbWeight=0.02 PerfScore 0.16
+ ;; size=24 bbWeight=0.02 PerfScore 0.12
G_M33418_IG02: ; bbWeight=0.02, gcVars=0000000000000001 {V03}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V03}
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ; gcrRegs +[x1]
- cbz x1, G_M33418_IG15
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ldr x20, [x1]
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ cbz x0, G_M33418_IG08
+ cbz x19, G_M33418_IG08
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ldr x20, [x0]
+ movz x0, #0xD1FFAB1E
+ ; gcrRegs -[x0]
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ cmp x20, x0
+ bne G_M33418_IG08
+ ldr x0, [x19, #0x18]
+ movz x11, #0xD1FFAB1E // code for Jil.Deserialize.InlineDeserializer`1+<>c[System.__Canon]:<BuildWithNewDelegate>b__103_0(ushort):ubyte:this
+ movk x11, #0xD1FFAB1E LSL #16
+ movk x11, #0xD1FFAB1E LSL #32
+ cmp x0, x11
+ bne G_M33418_IG08
+ b G_M33418_IG04
+ ;; size=68 bbWeight=0.02 PerfScore 0.38
+G_M33418_IG03: ; bbWeight=98.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x19]
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ ldr w0, [x0, #0x10]
+ ; gcrRegs -[x0]
+ ldr x11, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x11]
+ ldr x11, [x11, #0x08]
+ ldr w1, [x11, #0x08]
+ cmp w1, w0
+ bls G_M33418_IG20
+ add x11, x11, #12
+ ; gcrRegs -[x11]
+ ; byrRegs +[x11]
+ ldrh w1, [x11, w0, UXTW #2]
+ cmp w1, #10
+ bne G_M33418_IG04
+ ldr w0, [fp, #0xB4] // [V02 loc0]
+ adds w1, w0, #1
+ bvs G_M33418_IG16
+ str w1, [fp, #0xB4] // [V02 loc0]
+ ;; size=60 bbWeight=98.99 PerfScore 2375.76
+G_M33418_IG04: ; bbWeight=99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x11]
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ ldr w0, [x0, #0x10]
+ ; gcrRegs -[x0]
+ add w0, w0, #1
+ ldr x11, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x11]
+ ldr x11, [x11, #0x08]
+ ldr w11, [x11, #0x08]
+ ; gcrRegs -[x11]
+ cmp w0, w11
+ bge G_M33418_IG06
+ ;; size=32 bbWeight=99 PerfScore 1485.00
+G_M33418_IG05: ; bbWeight=396, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr x11, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x11]
+ str w0, [x11, #0x10]
+ b G_M33418_IG03
+ ;; size=12 bbWeight=396 PerfScore 1584.00
+G_M33418_IG06: ; bbWeight=99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x11]
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ str w11, [x0, #0x10]
+ mov w1, wzr
+ cbz w1, G_M33418_IG21
+ ;; size=16 bbWeight=99 PerfScore 445.50
+G_M33418_IG07: ; bbWeight=98.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ b G_M33418_IG03
+ ;; size=4 bbWeight=98.99 PerfScore 98.99
+G_M33418_IG08: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x19]
+ ldr x11, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x11]
+ ldr x20, [x11]
+ b G_M33418_IG11
+ ;; size=12 bbWeight=0.00 PerfScore 0.00
+G_M33418_IG09: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x11]
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ ldr x20, [x0]
+ movz x0, #0xD1FFAB1E
+ ; gcrRegs -[x0]
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ cmp x20, x0
+ bne G_M33418_IG19
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ ldr w0, [x0, #0x10]
+ ; gcrRegs -[x0]
+ ldr x11, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x11]
+ ldr x11, [x11, #0x08]
+ ldr w1, [x11, #0x08]
+ cmp w1, w0
+ bls G_M33418_IG20
+ add x11, x11, #12
+ ; gcrRegs -[x11]
+ ; byrRegs +[x11]
+ ldrh w1, [x11, w0, UXTW #2]
+ ldr x0, [x19, #0x18]
+ movz x11, #0xD1FFAB1E
+ ; byrRegs -[x11]
+ movk x11, #0xD1FFAB1E LSL #16
+ movk x11, #0xD1FFAB1E LSL #32
+ cmp x0, x11
+ bne G_M33418_IG18
+ cmp w1, #10
+ bne G_M33418_IG11
+ ;; size=96 bbWeight=1.00 PerfScore 33.50
+G_M33418_IG10: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ldr w0, [fp, #0xB4] // [V02 loc0]
+ adds w0, w0, #1
+ bvs G_M33418_IG16
+ str w0, [fp, #0xB4] // [V02 loc0]
+ ;; size=16 bbWeight=1.00 PerfScore 4.50
+G_M33418_IG11: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
movz x1, #0xD1FFAB1E
- ; gcrRegs -[x1]
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x20, x1
- bne G_M33418_IG15
- b G_M33418_IG05
- ;; size=40 bbWeight=0.02 PerfScore 0.24
-G_M33418_IG03: ; bbWeight=98.99, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ; gcrRegs +[x1]
- ldr w23, [x1, #0x10]
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ldr x24, [x1, #0x08]
- ; gcrRegs +[x24]
- ldr w1, [x24, #0x08]
- ; gcrRegs -[x1]
- cmp w1, w23
- bls G_M33418_IG12
- add x1, x24, #12
- ; byrRegs +[x1]
- ldrh w1, [x1, w23, UXTW #2]
- ; byrRegs -[x1]
- ldr x0, [x19, #0x18]
- movz x2, #0xD1FFAB1E // code for Jil.Deserialize.InlineDeserializer`1+<>c[System.__Canon]:<BuildWithNewDelegate>b__103_0(ushort):ubyte:this
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- cmp x0, x2
- bne G_M33418_IG07
- cmp w1, #10
- bne G_M33418_IG05
- ;; size=68 bbWeight=98.99 PerfScore 2524.25
-G_M33418_IG04: ; bbWeight=98.99, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x24]
- ldr w1, [fp, #0xD4] // [V02 loc0]
- adds w1, w1, #1
- bvs G_M33418_IG09
- str w1, [fp, #0xD4] // [V02 loc0]
- ;; size=16 bbWeight=98.99 PerfScore 445.46
-G_M33418_IG05: ; bbWeight=99, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ; gcrRegs +[x1]
- ldr w1, [x1, #0x10]
- ; gcrRegs -[x1]
- add w21, w1, #1
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ; gcrRegs +[x1]
- ldr x1, [x1, #0x08]
- ldr w22, [x1, #0x08]
- cmp w21, w22
- bge G_M33418_IG13
- ;; size=32 bbWeight=99 PerfScore 1485.00
-G_M33418_IG06: ; bbWeight=396, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x1]
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ; gcrRegs +[x1]
- str w21, [x1, #0x10]
- b G_M33418_IG03
...
-48 (-6.94%) : 128721.dasm - System.Linq.Enumerable:Countushort:int (Tier1-OSR)
@@ -11,143 +11,214 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Collections.Generic.IEnumerable`1[ushort]>
-; V01 arg1 [V01,T03] ( 8,301.97) ref -> x19 class-hnd single-def <System.Func`2[ushort,ubyte]>
-; V02 loc0 [V02,T10] ( 5,198.10) int -> [fp+0xD4] do-not-enreg[Z] EH-live tier0-frame
-; V03 loc1 [V03,T00] ( 21,901.02) ref -> [fp+0xC8] do-not-enreg[H] class-hnd EH-live tier0-frame <System.Collections.Generic.IEnumerator`1[ushort]>
-; V04 loc2 [V04,T05] ( 7,299.97) ushort -> x1
+; V01 arg1 [V01,T10] ( 7, 3.04) ref -> x19 class-hnd single-def <System.Func`2[ushort,ubyte]>
+; V02 loc0 [V02,T07] ( 5,199.98) int -> [fp+0xB4] do-not-enreg[Z] EH-live tier0-frame
+; V03 loc1 [V03,T00] ( 21,901.02) ref -> [fp+0xA8] do-not-enreg[H] class-hnd EH-live tier0-frame <System.Collections.Generic.IEnumerator`1[ushort]>
+; V04 loc2 [V04,T06] ( 6,199.98) ushort -> x1
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref "guarded devirt return temp"
;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.String>
; V08 tmp3 [V08,T08] ( 4,199.98) int -> x1 "guarded devirt return temp"
;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.CharEnumerator>
-; V10 tmp5 [V10,T09] ( 4,199.98) int -> x0 "guarded devirt return temp"
+; V10 tmp5 [V10,T15] ( 2, 0 ) int -> x0 "guarded devirt return temp"
;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp" <Jil.Deserialize.InlineDeserializer`1+<>c[System.__Canon]>
-; V12 tmp7 [V12,T01] ( 5,200.00) int -> x2 "guarded devirt return temp"
+; V12 tmp7 [V12,T01] ( 5,200.00) int -> x1 "guarded devirt return temp"
;* V13 tmp8 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.CharEnumerator>
-;* V14 tmp9 [V14,T14] ( 0, 0 ) int -> zero-ref "OSR entry state var"
+;* V14 tmp9 [V14,T13] ( 0, 0 ) int -> zero-ref "OSR entry state var"
;* V15 tmp10 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.CharEnumerator>
-; V16 tmp11 [V16,T07] ( 6,299.97) int -> x23 "Inline stloc first use temp"
-; V17 tmp12 [V17,T06] ( 6,299.97) ref -> x24 class-hnd exact "Inline stloc first use temp" <System.String>
-; V18 tmp13 [V18,T02] ( 6,600.00) int -> x21 "Inline stloc first use temp"
-; V19 tmp14 [V19,T04] ( 6,300.00) int -> x22 "Inline stloc first use temp"
-; V20 PSPSym [V20,T15] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
-; V21 cse0 [V21,T11] ( 2,197.98) int -> x1 "CSE - aggressive"
-; V22 cse1 [V22,T12] ( 6, 3.04) long -> x20 hoist multi-def "CSE - aggressive"
-; V23 cse2 [V23,T13] ( 2, 2.00) int -> x1 "CSE - moderate"
+; V16 tmp11 [V16,T05] ( 6,299.97) int -> x0 "Inline stloc first use temp"
+; V17 tmp12 [V17,T04] ( 6,299.97) ref -> x11 class-hnd exact "Inline stloc first use temp" <System.String>
+; V18 tmp13 [V18,T02] ( 6,600.00) int -> x0 "Inline stloc first use temp"
+; V19 tmp14 [V19,T03] ( 6,300.00) int -> x11 "Inline stloc first use temp"
+; V20 PSPSym [V20,T14] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
+; V21 cse0 [V21,T09] ( 2,197.98) int -> x1 "CSE - aggressive"
+; V22 cse1 [V22,T11] ( 6, 3.04) long -> x20 hoist multi-def "CSE - aggressive"
+; V23 cse2 [V23,T12] ( 2, 2.00) int -> x1 "CSE - moderate"
;
; Lcl frame size = 16
G_M33418_IG01: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
+ stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
- stp x23, x24, [sp, #0x40]
mov fp, sp
- add xip1, sp, #240
+ add xip1, sp, #208
str xip1, [fp, #0x18] // [V20 PSPSym]
- ldr x19, [fp, #0xD8]
+ ldr x19, [fp, #0xB8]
; gcrRegs +[x19]
- ;; size=32 bbWeight=0.02 PerfScore 0.16
+ ;; size=24 bbWeight=0.02 PerfScore 0.12
G_M33418_IG02: ; bbWeight=0.02, gcVars=0000000000000001 {V03}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V03}
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ; gcrRegs +[x1]
- cbz x1, G_M33418_IG15
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ldr x20, [x1]
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ cbz x0, G_M33418_IG08
+ cbz x19, G_M33418_IG08
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ldr x20, [x0]
+ movz x0, #0xD1FFAB1E
+ ; gcrRegs -[x0]
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ cmp x20, x0
+ bne G_M33418_IG08
+ ldr x0, [x19, #0x18]
+ movz x11, #0xD1FFAB1E // code for Jil.Deserialize.InlineDeserializer`1+<>c[System.__Canon]:<BuildWithNewDelegate>b__103_0(ushort):ubyte:this
+ movk x11, #0xD1FFAB1E LSL #16
+ movk x11, #0xD1FFAB1E LSL #32
+ cmp x0, x11
+ bne G_M33418_IG08
+ b G_M33418_IG04
+ ;; size=68 bbWeight=0.02 PerfScore 0.38
+G_M33418_IG03: ; bbWeight=98.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x19]
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ ldr w0, [x0, #0x10]
+ ; gcrRegs -[x0]
+ ldr x11, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x11]
+ ldr x11, [x11, #0x08]
+ ldr w1, [x11, #0x08]
+ cmp w1, w0
+ bls G_M33418_IG20
+ add x11, x11, #12
+ ; gcrRegs -[x11]
+ ; byrRegs +[x11]
+ ldrh w1, [x11, w0, UXTW #2]
+ cmp w1, #10
+ bne G_M33418_IG04
+ ldr w0, [fp, #0xB4] // [V02 loc0]
+ adds w1, w0, #1
+ bvs G_M33418_IG16
+ str w1, [fp, #0xB4] // [V02 loc0]
+ ;; size=60 bbWeight=98.99 PerfScore 2375.76
+G_M33418_IG04: ; bbWeight=99.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x11]
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ ldr w0, [x0, #0x10]
+ ; gcrRegs -[x0]
+ add w0, w0, #1
+ ldr x11, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x11]
+ ldr x11, [x11, #0x08]
+ ldr w11, [x11, #0x08]
+ ; gcrRegs -[x11]
+ cmp w0, w11
+ bge G_M33418_IG06
+ ;; size=32 bbWeight=99.00 PerfScore 1485.00
+G_M33418_IG05: ; bbWeight=396.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr x11, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x11]
+ str w0, [x11, #0x10]
+ b G_M33418_IG03
+ ;; size=12 bbWeight=396.00 PerfScore 1584.00
+G_M33418_IG06: ; bbWeight=99.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x11]
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ str w11, [x0, #0x10]
+ mov w1, wzr
+ cbz w1, G_M33418_IG21
+ ;; size=16 bbWeight=99.00 PerfScore 445.50
+G_M33418_IG07: ; bbWeight=98.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ b G_M33418_IG03
+ ;; size=4 bbWeight=98.99 PerfScore 98.99
+G_M33418_IG08: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x19]
+ ldr x11, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x11]
+ ldr x20, [x11]
+ b G_M33418_IG11
+ ;; size=12 bbWeight=0.00 PerfScore 0.00
+G_M33418_IG09: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x11]
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ ldr x20, [x0]
+ movz x0, #0xD1FFAB1E
+ ; gcrRegs -[x0]
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ cmp x20, x0
+ bne G_M33418_IG19
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ ldr w0, [x0, #0x10]
+ ; gcrRegs -[x0]
+ ldr x11, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x11]
+ ldr x11, [x11, #0x08]
+ ldr w1, [x11, #0x08]
+ cmp w1, w0
+ bls G_M33418_IG20
+ add x11, x11, #12
+ ; gcrRegs -[x11]
+ ; byrRegs +[x11]
+ ldrh w1, [x11, w0, UXTW #2]
+ ldr x0, [x19, #0x18]
+ movz x11, #0xD1FFAB1E
+ ; byrRegs -[x11]
+ movk x11, #0xD1FFAB1E LSL #16
+ movk x11, #0xD1FFAB1E LSL #32
+ cmp x0, x11
+ bne G_M33418_IG18
+ cmp w1, #10
+ bne G_M33418_IG11
+ ;; size=96 bbWeight=1.00 PerfScore 33.50
+G_M33418_IG10: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ldr w0, [fp, #0xB4] // [V02 loc0]
+ adds w0, w0, #1
+ bvs G_M33418_IG16
+ str w0, [fp, #0xB4] // [V02 loc0]
+ ;; size=16 bbWeight=1.00 PerfScore 4.50
+G_M33418_IG11: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
movz x1, #0xD1FFAB1E
- ; gcrRegs -[x1]
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x20, x1
- bne G_M33418_IG15
- b G_M33418_IG05
- ;; size=40 bbWeight=0.02 PerfScore 0.24
-G_M33418_IG03: ; bbWeight=98.99, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ; gcrRegs +[x1]
- ldr w23, [x1, #0x10]
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ldr x24, [x1, #0x08]
- ; gcrRegs +[x24]
- ldr w1, [x24, #0x08]
- ; gcrRegs -[x1]
- cmp w1, w23
- bls G_M33418_IG12
- add x1, x24, #12
- ; byrRegs +[x1]
- ldrh w1, [x1, w23, UXTW #2]
- ; byrRegs -[x1]
- ldr x0, [x19, #0x18]
- movz x2, #0xD1FFAB1E // code for Jil.Deserialize.InlineDeserializer`1+<>c[System.__Canon]:<BuildWithNewDelegate>b__103_0(ushort):ubyte:this
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- cmp x0, x2
- bne G_M33418_IG07
- cmp w1, #10
- bne G_M33418_IG05
- ;; size=68 bbWeight=98.99 PerfScore 2524.25
-G_M33418_IG04: ; bbWeight=98.99, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x24]
- ldr w1, [fp, #0xD4] // [V02 loc0]
- adds w1, w1, #1
- bvs G_M33418_IG09
- str w1, [fp, #0xD4] // [V02 loc0]
- ;; size=16 bbWeight=98.99 PerfScore 445.46
-G_M33418_IG05: ; bbWeight=99.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ; gcrRegs +[x1]
- ldr w1, [x1, #0x10]
- ; gcrRegs -[x1]
- add w21, w1, #1
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ; gcrRegs +[x1]
- ldr x1, [x1, #0x08]
- ldr w22, [x1, #0x08]
- cmp w21, w22
- bge G_M33418_IG13
- ;; size=32 bbWeight=99.00 PerfScore 1485.00
-G_M33418_IG06: ; bbWeight=396.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x1]
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ; gcrRegs +[x1]
- str w21, [x1, #0x10]
- b G_M33418_IG03
...
-48 (-6.94%) : 60062.dasm - System.Linq.Enumerable:Countushort:int (Tier1-OSR)
@@ -11,143 +11,214 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Collections.Generic.IEnumerable`1[ushort]>
-; V01 arg1 [V01,T03] ( 8,301.97) ref -> x19 class-hnd single-def <System.Func`2[ushort,ubyte]>
-; V02 loc0 [V02,T10] ( 5,198.10) int -> [fp+0xD4] do-not-enreg[Z] EH-live tier0-frame
-; V03 loc1 [V03,T00] ( 21,901.02) ref -> [fp+0xC8] do-not-enreg[H] class-hnd EH-live tier0-frame <System.Collections.Generic.IEnumerator`1[ushort]>
-; V04 loc2 [V04,T05] ( 7,299.97) ushort -> x1
+; V01 arg1 [V01,T10] ( 7, 3.04) ref -> x19 class-hnd single-def <System.Func`2[ushort,ubyte]>
+; V02 loc0 [V02,T07] ( 5,199.98) int -> [fp+0xB4] do-not-enreg[Z] EH-live tier0-frame
+; V03 loc1 [V03,T00] ( 21,901.02) ref -> [fp+0xA8] do-not-enreg[H] class-hnd EH-live tier0-frame <System.Collections.Generic.IEnumerator`1[ushort]>
+; V04 loc2 [V04,T06] ( 6,199.98) ushort -> x1
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref "guarded devirt return temp"
;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.String>
; V08 tmp3 [V08,T08] ( 4,199.98) int -> x1 "guarded devirt return temp"
;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.CharEnumerator>
-; V10 tmp5 [V10,T09] ( 4,199.98) int -> x0 "guarded devirt return temp"
+; V10 tmp5 [V10,T15] ( 2, 0 ) int -> x0 "guarded devirt return temp"
;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp" <Jil.Deserialize.InlineDeserializer`1+<>c[System.__Canon]>
-; V12 tmp7 [V12,T01] ( 5,200.00) int -> x2 "guarded devirt return temp"
+; V12 tmp7 [V12,T01] ( 5,200.00) int -> x1 "guarded devirt return temp"
;* V13 tmp8 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.CharEnumerator>
-;* V14 tmp9 [V14,T14] ( 0, 0 ) int -> zero-ref "OSR entry state var"
+;* V14 tmp9 [V14,T13] ( 0, 0 ) int -> zero-ref "OSR entry state var"
;* V15 tmp10 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.CharEnumerator>
-; V16 tmp11 [V16,T07] ( 6,299.97) int -> x23 "Inline stloc first use temp"
-; V17 tmp12 [V17,T06] ( 6,299.97) ref -> x24 class-hnd exact "Inline stloc first use temp" <System.String>
-; V18 tmp13 [V18,T02] ( 6,600.00) int -> x21 "Inline stloc first use temp"
-; V19 tmp14 [V19,T04] ( 6,300.00) int -> x22 "Inline stloc first use temp"
-; V20 PSPSym [V20,T15] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
-; V21 cse0 [V21,T11] ( 2,197.98) int -> x1 "CSE - aggressive"
-; V22 cse1 [V22,T12] ( 6, 3.04) long -> x20 hoist multi-def "CSE - aggressive"
-; V23 cse2 [V23,T13] ( 2, 2.00) int -> x1 "CSE - moderate"
+; V16 tmp11 [V16,T05] ( 6,299.97) int -> x0 "Inline stloc first use temp"
+; V17 tmp12 [V17,T04] ( 6,299.97) ref -> x11 class-hnd exact "Inline stloc first use temp" <System.String>
+; V18 tmp13 [V18,T02] ( 6,600.00) int -> x0 "Inline stloc first use temp"
+; V19 tmp14 [V19,T03] ( 6,300.00) int -> x11 "Inline stloc first use temp"
+; V20 PSPSym [V20,T14] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
+; V21 cse0 [V21,T09] ( 2,197.98) int -> x1 "CSE - aggressive"
+; V22 cse1 [V22,T11] ( 6, 3.04) long -> x20 hoist multi-def "CSE - aggressive"
+; V23 cse2 [V23,T12] ( 2, 2.00) int -> x1 "CSE - moderate"
;
; Lcl frame size = 16
G_M33418_IG01: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
+ stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
- stp x23, x24, [sp, #0x40]
mov fp, sp
- add xip1, sp, #240
+ add xip1, sp, #208
str xip1, [fp, #0x18] // [V20 PSPSym]
- ldr x19, [fp, #0xD8]
+ ldr x19, [fp, #0xB8]
; gcrRegs +[x19]
- ;; size=32 bbWeight=0.02 PerfScore 0.16
+ ;; size=24 bbWeight=0.02 PerfScore 0.12
G_M33418_IG02: ; bbWeight=0.02, gcVars=0000000000000001 {V03}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V03}
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ; gcrRegs +[x1]
- cbz x1, G_M33418_IG15
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ldr x20, [x1]
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ cbz x0, G_M33418_IG08
+ cbz x19, G_M33418_IG08
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ldr x20, [x0]
+ movz x0, #0xD1FFAB1E
+ ; gcrRegs -[x0]
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ cmp x20, x0
+ bne G_M33418_IG08
+ ldr x0, [x19, #0x18]
+ movz x11, #0xD1FFAB1E // code for Jil.Deserialize.InlineDeserializer`1+<>c[System.__Canon]:<BuildWithNewDelegate>b__103_0(ushort):ubyte:this
+ movk x11, #0xD1FFAB1E LSL #16
+ movk x11, #0xD1FFAB1E LSL #32
+ cmp x0, x11
+ bne G_M33418_IG08
+ b G_M33418_IG04
+ ;; size=68 bbWeight=0.02 PerfScore 0.38
+G_M33418_IG03: ; bbWeight=98.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x19]
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ ldr w0, [x0, #0x10]
+ ; gcrRegs -[x0]
+ ldr x11, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x11]
+ ldr x11, [x11, #0x08]
+ ldr w1, [x11, #0x08]
+ cmp w1, w0
+ bls G_M33418_IG20
+ add x11, x11, #12
+ ; gcrRegs -[x11]
+ ; byrRegs +[x11]
+ ldrh w1, [x11, w0, UXTW #2]
+ cmp w1, #10
+ bne G_M33418_IG04
+ ldr w0, [fp, #0xB4] // [V02 loc0]
+ adds w1, w0, #1
+ bvs G_M33418_IG16
+ str w1, [fp, #0xB4] // [V02 loc0]
+ ;; size=60 bbWeight=98.99 PerfScore 2375.76
+G_M33418_IG04: ; bbWeight=99.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x11]
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ ldr w0, [x0, #0x10]
+ ; gcrRegs -[x0]
+ add w0, w0, #1
+ ldr x11, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x11]
+ ldr x11, [x11, #0x08]
+ ldr w11, [x11, #0x08]
+ ; gcrRegs -[x11]
+ cmp w0, w11
+ bge G_M33418_IG06
+ ;; size=32 bbWeight=99.00 PerfScore 1485.00
+G_M33418_IG05: ; bbWeight=396.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr x11, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x11]
+ str w0, [x11, #0x10]
+ b G_M33418_IG03
+ ;; size=12 bbWeight=396.00 PerfScore 1584.00
+G_M33418_IG06: ; bbWeight=99.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x11]
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ str w11, [x0, #0x10]
+ mov w1, wzr
+ cbz w1, G_M33418_IG21
+ ;; size=16 bbWeight=99.00 PerfScore 445.50
+G_M33418_IG07: ; bbWeight=98.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ b G_M33418_IG03
+ ;; size=4 bbWeight=98.99 PerfScore 98.99
+G_M33418_IG08: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x19]
+ ldr x11, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x11]
+ ldr x20, [x11]
+ b G_M33418_IG11
+ ;; size=12 bbWeight=0.00 PerfScore 0.00
+G_M33418_IG09: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x11]
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ ldr x20, [x0]
+ movz x0, #0xD1FFAB1E
+ ; gcrRegs -[x0]
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ cmp x20, x0
+ bne G_M33418_IG19
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ ldr w0, [x0, #0x10]
+ ; gcrRegs -[x0]
+ ldr x11, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x11]
+ ldr x11, [x11, #0x08]
+ ldr w1, [x11, #0x08]
+ cmp w1, w0
+ bls G_M33418_IG20
+ add x11, x11, #12
+ ; gcrRegs -[x11]
+ ; byrRegs +[x11]
+ ldrh w1, [x11, w0, UXTW #2]
+ ldr x0, [x19, #0x18]
+ movz x11, #0xD1FFAB1E
+ ; byrRegs -[x11]
+ movk x11, #0xD1FFAB1E LSL #16
+ movk x11, #0xD1FFAB1E LSL #32
+ cmp x0, x11
+ bne G_M33418_IG18
+ cmp w1, #10
+ bne G_M33418_IG11
+ ;; size=96 bbWeight=1.00 PerfScore 33.50
+G_M33418_IG10: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ldr w0, [fp, #0xB4] // [V02 loc0]
+ adds w0, w0, #1
+ bvs G_M33418_IG16
+ str w0, [fp, #0xB4] // [V02 loc0]
+ ;; size=16 bbWeight=1.00 PerfScore 4.50
+G_M33418_IG11: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
movz x1, #0xD1FFAB1E
- ; gcrRegs -[x1]
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x20, x1
- bne G_M33418_IG15
- b G_M33418_IG05
- ;; size=40 bbWeight=0.02 PerfScore 0.24
-G_M33418_IG03: ; bbWeight=98.99, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ; gcrRegs +[x1]
- ldr w23, [x1, #0x10]
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ldr x24, [x1, #0x08]
- ; gcrRegs +[x24]
- ldr w1, [x24, #0x08]
- ; gcrRegs -[x1]
- cmp w1, w23
- bls G_M33418_IG12
- add x1, x24, #12
- ; byrRegs +[x1]
- ldrh w1, [x1, w23, UXTW #2]
- ; byrRegs -[x1]
- ldr x0, [x19, #0x18]
- movz x2, #0xD1FFAB1E // code for Jil.Deserialize.InlineDeserializer`1+<>c[System.__Canon]:<BuildWithNewDelegate>b__103_0(ushort):ubyte:this
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- cmp x0, x2
- bne G_M33418_IG07
- cmp w1, #10
- bne G_M33418_IG05
- ;; size=68 bbWeight=98.99 PerfScore 2524.25
-G_M33418_IG04: ; bbWeight=98.99, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x24]
- ldr w1, [fp, #0xD4] // [V02 loc0]
- adds w1, w1, #1
- bvs G_M33418_IG09
- str w1, [fp, #0xD4] // [V02 loc0]
- ;; size=16 bbWeight=98.99 PerfScore 445.46
-G_M33418_IG05: ; bbWeight=99.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ; gcrRegs +[x1]
- ldr w1, [x1, #0x10]
- ; gcrRegs -[x1]
- add w21, w1, #1
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ; gcrRegs +[x1]
- ldr x1, [x1, #0x08]
- ldr w22, [x1, #0x08]
- cmp w21, w22
- bge G_M33418_IG13
- ;; size=32 bbWeight=99.00 PerfScore 1485.00
-G_M33418_IG06: ; bbWeight=396.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x1]
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ; gcrRegs +[x1]
- str w21, [x1, #0x10]
- b G_M33418_IG03
...
+12 (+7.69%) : 11113.dasm - System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
@@ -9,11 +9,11 @@
; 5 inlinees with PGO data; 10 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 5, 5 ) ref -> x0 class-hnd single-def <System.String>
-; V01 loc0 [V01,T02] ( 5, 5 ) int -> x19
+; V00 arg0 [V00,T00] ( 5, 5 ) ref -> x0 class-hnd single-def <System.String>
+; V01 loc0 [V01,T02] ( 8, 5 ) int -> x19
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T05] ( 2, 2 ) ubyte -> x0 "Inline return value spill temp"
-; V04 tmp2 [V04,T00] ( 4, 8 ) ushort -> x0 "Inlining Arg"
+; V03 tmp1 [V03,T05] ( 2, 0 ) ubyte -> x0 "Inline return value spill temp"
+; V04 tmp2 [V04,T01] ( 4, 6 ) ushort -> x0 "Inlining Arg"
;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V06 tmp4 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V07 tmp5 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -34,11 +34,11 @@
;* V22 tmp20 [V22 ] ( 0, 0 ) byref -> zero-ref "field V11._reference (fldOffset=0x0)" P-INDEP
;* V23 tmp21 [V23 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
; V24 cse0 [V24,T04] ( 2, 2 ) byref -> x21 hoist "CSE - aggressive"
-; V25 cse1 [V25,T03] ( 3, 3 ) int -> x20 "CSE - aggressive"
+; V25 cse1 [V25,T03] ( 4, 3 ) int -> x20 "CSE - aggressive"
;
; Lcl frame size = 8
-G_M44603_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M44603_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x18]
str x21, [sp, #0x28]
@@ -46,11 +46,11 @@ G_M44603_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
;; size=16 bbWeight=1 PerfScore 3.50
G_M44603_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
- cbz x0, G_M44603_IG08
+ cbz x0, G_M44603_IG07
mov w19, wzr
ldr w20, [x0, #0x08]
cmp w20, #0
- ble G_M44603_IG08
+ ble G_M44603_IG07
add x21, x0, #12
; byrRegs +[x21]
;; size=24 bbWeight=1 PerfScore 6.50
@@ -58,50 +58,56 @@ G_M44603_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, b
; gcrRegs -[x0]
ldrh w0, [x21, w19, UXTW #2]
cmp w0, #0xD1FFAB1E
- blo G_M44603_IG04
+ bhs G_M44603_IG09
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ ldrb w0, [x1, w0, UXTW #2]
+ tbnz w0, #7, G_M44603_IG06
+ ;; size=32 bbWeight=1 PerfScore 10.00
+G_M44603_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x21]
+ mov w0, wzr
+ ;; size=4 bbWeight=1 PerfScore 0.50
+G_M44603_IG05: ; bbWeight=1, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
+ ret lr
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M44603_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, gcvars, byref, isz
+ ; byrRegs +[x21]
+ add w19, w19, #1
+ cmp w20, w19
+ ble G_M44603_IG07
+ b G_M44603_IG03
+ ;; size=16 bbWeight=1 PerfScore 3.00
+G_M44603_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x21]
+ mov w0, #1
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M44603_IG08: ; bbWeight=0, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
+ ret lr
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M44603_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, gcvars, byref, isz
+ ; byrRegs +[x21]
movz x1, #0xD1FFAB1E // code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
; gcr arg pop 0
- cbnz w0, G_M44603_IG05
- b G_M44603_IG06
- ;; size=40 bbWeight=1 PerfScore 12.00
-G_M44603_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldrb w0, [x1, w0, UXTW #2]
- tbz w0, #7, G_M44603_IG06
- ;; size=20 bbWeight=1 PerfScore 5.50
-G_M44603_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
+ cbz w0, G_M44603_IG04
add w19, w19, #1
cmp w20, w19
- ble G_M44603_IG08
- b G_M44603_IG03
- ;; size=16 bbWeight=1 PerfScore 3.00
-G_M44603_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x21]
- mov w0, wzr
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M44603_IG07: ; bbWeight=1, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
- ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
-G_M44603_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov w0, #1
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M44603_IG09: ; bbWeight=0, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
- ret lr
- ;; size=16 bbWeight=0 PerfScore 0.00
+ bgt G_M44603_IG03
+ b G_M44603_IG07
+ ;; size=40 bbWeight=0 PerfScore 0.00
-; Total bytes of code 156, prolog size 16, PerfScore 36.00, instruction count 39, allocated bytes for code 156 (MethodHash=3ff251c4) for method System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
+; Total bytes of code 168, prolog size 16, PerfScore 28.50, instruction count 42, allocated bytes for code 168 (MethodHash=3ff251c4) for method System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
; ============================================================
Unwind Info:
@@ -112,7 +118,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 39 (0x00027) Actual length = 156 (0x00009c)
+ Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+9.30%) : 86889.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass1:CanScheduleToStack(Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol):ubyte:this (Tier1)
@@ -10,91 +10,95 @@
; Final local variable assignments
;
; V00 this [V00,T01] ( 3, 3 ) ref -> x20 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass1>
-; V01 arg1 [V01,T00] ( 5, 4 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol>
+; V01 arg1 [V01,T00] ( 5, 3 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 2, 2 ) int -> x0 "guarded devirt return temp"
+; V03 tmp1 [V03,T05] ( 2, 0 ) int -> x0 "guarded devirt return temp"
;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CodeGen.DummyLocal>
-; V05 tmp3 [V05,T05] ( 3, 2 ) int -> x20 "guarded devirt return temp"
+; V05 tmp3 [V05,T04] ( 3, 2 ) int -> x23 "guarded devirt return temp"
;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CodeGen.DummyLocal>
-; V07 cse0 [V07,T02] ( 5, 4 ) long -> x21 "CSE - aggressive"
-; V08 cse1 [V08,T04] ( 3, 3 ) long -> x22 "CSE - aggressive"
+; V07 cse0 [V07,T02] ( 5, 3 ) long -> x21 "CSE - aggressive"
+; V08 cse1 [V08,T03] ( 3, 3 ) long -> x22 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M22398_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x10]
- stp x21, x22, [sp, #0x20]
+ stp fp, lr, [sp, #-0x40]!
+ stp x19, x20, [sp, #0x18]
+ stp x21, x22, [sp, #0x28]
+ str x23, [sp, #0x38]
mov fp, sp
mov x20, x0
; gcrRegs +[x20]
mov x19, x1
; gcrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=28 bbWeight=1 PerfScore 5.50
G_M22398_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x21, [x19]
movz x22, #0xD1FFAB1E
movk x22, #0xD1FFAB1E LSL #16
movk x22, #0xD1FFAB1E LSL #32
cmp x21, x22
- beq G_M22398_IG03
+ bne G_M22398_IG08
+ ;; size=24 bbWeight=1 PerfScore 6.00
+G_M22398_IG03: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldrb w0, [x20, #0x34]
+ cbz w0, G_M22398_IG06
+ cmp x21, x22
+ bne G_M22398_IG10
+ movn w23, #2
+ ;; size=20 bbWeight=1 PerfScore 6.00
+G_M22398_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19-x20]
+ lsr w0, w23, #31
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M22398_IG05: ; bbWeight=1, epilog, nogc, extend
+ ldr x23, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x40
+ ret lr
+ ;; size=20 bbWeight=1 PerfScore 6.00
+G_M22398_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M22398_IG07: ; bbWeight=0, epilog, nogc, extend
+ ldr x23, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x40
+ ret lr
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M22398_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x19-x20]
mov x0, x19
; gcrRegs +[x0]
ldr x1, [x21, #0xA0]
ldr x1, [x1]
blr x1
; gcrRegs -[x0]
- cbz w0, G_M22398_IG08
- ;; size=44 bbWeight=1 PerfScore 14.50
-G_M22398_IG03: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldrb w0, [x20, #0x34]
- cbz w0, G_M22398_IG06
- cmp x21, x22
- bne G_M22398_IG10
- movn w20, #2
- ; gcrRegs -[x20]
- ;; size=20 bbWeight=1 PerfScore 6.00
-G_M22398_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- lsr w0, w20, #31
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M22398_IG05: ; bbWeight=1, epilog, nogc, extend
- ldp x21, x22, [sp, #0x20]
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x30
- ret lr
- ;; size=16 bbWeight=1 PerfScore 4.00
-G_M22398_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov w0, #1
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M22398_IG07: ; bbWeight=0, epilog, nogc, extend
- ldp x21, x22, [sp, #0x20]
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x30
- ret lr
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M22398_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ cbnz w0, G_M22398_IG03
mov w0, wzr
- ;; size=4 bbWeight=0 PerfScore 0.00
+ ;; size=24 bbWeight=0 PerfScore 0.00
G_M22398_IG09: ; bbWeight=0, epilog, nogc, extend
- ldp x21, x22, [sp, #0x20]
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x30
+ ldr x23, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=0 PerfScore 0.00
+ ;; size=20 bbWeight=0 PerfScore 0.00
G_M22398_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x19]
+ ; gcrRegs -[x20]
mov x0, x19
; gcrRegs +[x0]
ldr x1, [x21, #0x98]
ldr x1, [x1, #0x20]
blr x1
; gcrRegs -[x0 x19]
- sxtw w20, w0
+ sxtw w23, w0
b G_M22398_IG04
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 172, prolog size 16, PerfScore 30.00, instruction count 43, allocated bytes for code 172 (MethodHash=7a8aa881) for method Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass1:CanScheduleToStack(Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol):ubyte:this (Tier1)
+; Total bytes of code 188, prolog size 20, PerfScore 24.50, instruction count 47, allocated bytes for code 188 (MethodHash=7a8aa881) for method Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass1:CanScheduleToStack(Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -105,7 +109,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
+ Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -119,10 +123,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+ D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
- E4 end
- E4 end
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
E4 end
+12 (+12.00%) : 96971.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:IsInDocumentationComment(Microsoft.CodeAnalysis.SyntaxNode):ubyte (Tier1)
@@ -9,13 +9,13 @@
; 2 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 3, 3 ) ref -> x0 class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode>
+; V00 arg0 [V00,T03] ( 3, 3 ) ref -> x0 class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode>
; V01 loc0 [V01,T00] ( 6, 22.08) ref -> x0 class-hnd <Microsoft.CodeAnalysis.SyntaxNode>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 4, 15.06) ushort -> x1 "Inline return value spill temp"
+; V03 tmp1 [V03,T01] ( 5, 15.06) ushort -> x1 "Inline return value spill temp"
; V04 tmp2 [V04,T02] ( 3, 15.06) int -> x1 "Inline stloc first use temp"
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
-;* V06 tmp4 [V06,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V06 tmp4 [V06,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;
; Lcl frame size = 0
@@ -25,7 +25,7 @@ G_M65070_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M65070_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
- cbz x0, G_M65070_IG05
+ cbz x0, G_M65070_IG08
;; size=4 bbWeight=1 PerfScore 1.00
G_M65070_IG03: ; bbWeight=5.02, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldr x1, [x0, #0x18]
@@ -35,40 +35,47 @@ G_M65070_IG03: ; bbWeight=5.02, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
sub w2, w1, #2
mov w3, #0xD1FFAB1E
cmp w2, w3
- bls G_M65070_IG09
- ;; size=24 bbWeight=5.02 PerfScore 42.66
+ bls G_M65070_IG10
+ mov w2, #0xD1FFAB1E
+ cmp w1, w2
+ beq G_M65070_IG05
+ ;; size=36 bbWeight=5.02 PerfScore 52.70
G_M65070_IG04: ; bbWeight=5.02, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
mov w2, #0xD1FFAB1E
cmp w1, w2
- beq G_M65070_IG07
- mov w2, #0xD1FFAB1E
- cmp w1, w2
- beq G_M65070_IG07
- ldr x0, [x0, #0x08]
- cbnz x0, G_M65070_IG03
- ;; size=32 bbWeight=5.02 PerfScore 40.15
-G_M65070_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ bne G_M65070_IG07
+ ;; size=12 bbWeight=5.02 PerfScore 10.04
+G_M65070_IG05: ; bbWeight=5.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- mov w0, wzr
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M65070_IG06: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
-G_M65070_IG07: ; bbWeight=5.02, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, #1
;; size=4 bbWeight=5.02 PerfScore 2.51
-G_M65070_IG08: ; bbWeight=5.02, epilog, nogc, extend
+G_M65070_IG06: ; bbWeight=5.02, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=5.02 PerfScore 10.04
-G_M65070_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+G_M65070_IG07: ; bbWeight=5.02, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x0]
+ ldr x0, [x0, #0x08]
+ cbnz x0, G_M65070_IG03
+ ;; size=8 bbWeight=5.02 PerfScore 20.08
+G_M65070_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ mov w0, wzr
+ ;; size=4 bbWeight=1 PerfScore 0.50
+G_M65070_IG09: ; bbWeight=1, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=1 PerfScore 2.00
+G_M65070_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x0]
mov w1, wzr
- b G_M65070_IG04
- ;; size=8 bbWeight=0 PerfScore 0.00
+ mov w2, #0xD1FFAB1E
+ cmp w1, w2
+ bne G_M65070_IG04
+ b G_M65070_IG05
+ ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 100, prolog size 8, PerfScore 100.36, instruction count 25, allocated bytes for code 100 (MethodHash=f34b01d1) for method Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:IsInDocumentationComment(Microsoft.CodeAnalysis.SyntaxNode):ubyte (Tier1)
+; Total bytes of code 112, prolog size 8, PerfScore 100.36, instruction count 28, allocated bytes for code 112 (MethodHash=f34b01d1) for method Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:IsInDocumentationComment(Microsoft.CodeAnalysis.SyntaxNode):ubyte (Tier1)
; ============================================================
Unwind Info:
@@ -79,7 +86,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
coreclr_tests.run.linux.arm64.checked.mch
-32 (-6.11%) : 387947.dasm - System.ValueTuple2[System.__Canon,System.__Canon]:Equals(System.ValueTuple2[System.Canon,System.Canon]):ubyte:this (Tier1)
@@ -17,10 +17,10 @@
; V05 tmp2 [V05,T08] ( 4, 4 ) ref -> x0 class-hnd single-def "spilling ret_expr" <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
;* V06 tmp3 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V07 tmp4 [V07,T09] ( 4, 4 ) ref -> x0 class-hnd single-def "spilling ret_expr" <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
-; V08 tmp5 [V08,T15] ( 3, 2.00) int -> x24 "guarded devirt return temp"
+; V08 tmp5 [V08,T18] ( 3, 1.00) int -> x24 "guarded devirt return temp"
; V09 tmp6 [V09,T01] ( 6, 9.99) ref -> x1 single-def "guarded devirt arg temp"
;* V10 tmp7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Collections.Generic.GenericEqualityComparer`1[System.String]>
-; V11 tmp8 [V11,T16] ( 5, 3.00) int -> x25 "guarded devirt return temp"
+; V11 tmp8 [V11,T15] ( 5, 3.00) int -> x0 "guarded devirt return temp"
; V12 tmp9 [V12,T00] ( 6, 9.99) ref -> x1 single-def "guarded devirt arg temp"
;* V13 tmp10 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Collections.Generic.GenericEqualityComparer`1[System.String]>
;* V14 tmp11 [V14 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def "Inlining Arg" <System.String>
@@ -45,23 +45,22 @@
; V33 tmp30 [V33,T04] ( 7, 5.00) ref -> x21 single-def "field V02.Item1 (fldOffset=0x0)" P-INDEP
; V34 tmp31 [V34,T03] ( 7, 5.00) ref -> x20 single-def "field V02.Item2 (fldOffset=0x8)" P-INDEP
; V35 cse0 [V35,T14] ( 3, 3 ) long -> x23 "CSE - aggressive"
-; V36 cse1 [V36,T17] ( 3, 3.00) int -> x2 "CSE - moderate"
-; V37 cse2 [V37,T18] ( 3, 3.00) int -> x2 "CSE - moderate"
+; V36 cse1 [V36,T16] ( 3, 3.00) int -> x2 "CSE - moderate"
+; V37 cse2 [V37,T17] ( 3, 3.00) int -> x2 "CSE - moderate"
; V38 rat0 [V38,T10] ( 3, 4 ) long -> x0 "runtime lookup"
; V39 rat1 [V39,T06] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"
; V40 rat2 [V40,T11] ( 3, 4 ) long -> x0 "runtime lookup"
; V41 rat3 [V41,T07] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M1159_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x18]
- stp x21, x22, [sp, #0x28]
- stp x23, x24, [sp, #0x38]
- str x25, [sp, #0x48]
+ stp x19, x20, [sp, #0x20]
+ stp x21, x22, [sp, #0x30]
+ stp x23, x24, [sp, #0x40]
mov fp, sp
- str x1, [fp, #0x10]
+ str x1, [fp, #0x18]
mov x22, x0
; byrRegs +[x22]
mov x19, x1
@@ -69,12 +68,12 @@ G_M1159_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x21]
mov x20, x3
; gcrRegs +[x20]
- ;; size=44 bbWeight=1 PerfScore 8.50
+ ;; size=40 bbWeight=1 PerfScore 7.50
G_M1159_IG02: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=400000 {x22}, byref, isz
ldr x0, [x19, #0x38]
ldr x0, [x0]
ldr x0, [x0, #0x28]
- cbz x0, G_M1159_IG16
+ cbz x0, G_M1159_IG20
;; size=16 bbWeight=1 PerfScore 10.00
G_M1159_IG03: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=400000 {x22}, byref, isz
movz x1, #0xD1FFAB1E // code for System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]
@@ -90,22 +89,22 @@ G_M1159_IG03: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=400000
movk x23, #0xD1FFAB1E LSL #16
movk x23, #0xD1FFAB1E LSL #32
cmp x2, x23
- bne G_M1159_IG19
- cbz x1, G_M1159_IG11
+ bne G_M1159_IG22
+ cbz x1, G_M1159_IG09
;; size=52 bbWeight=1 PerfScore 15.50
G_M1159_IG04: ; bbWeight=1.00, gcrefRegs=300002 {x1 x20 x21}, byrefRegs=400000 {x22}, byref, isz
; gcrRegs -[x0]
- cbz x21, G_M1159_IG28
+ cbz x21, G_M1159_IG25
;; size=4 bbWeight=1.00 PerfScore 1.00
G_M1159_IG05: ; bbWeight=1.00, gcrefRegs=300002 {x1 x20 x21}, byrefRegs=400000 {x22}, byref, isz
cmp x1, x21
- beq G_M1159_IG10
+ beq G_M1159_IG08
;; size=8 bbWeight=1.00 PerfScore 1.50
G_M1159_IG06: ; bbWeight=1.00, gcrefRegs=300002 {x1 x20 x21}, byrefRegs=400000 {x22}, byref, isz
ldr w2, [x1, #0x08]
ldr w0, [x21, #0x08]
cmp w2, w0
- bne G_M1159_IG30
+ bne G_M1159_IG28
add x0, x1, #12
; byrRegs +[x0]
add x1, x21, #12
@@ -122,38 +121,25 @@ G_M1159_IG06: ; bbWeight=1.00, gcrefRegs=300002 {x1 x20 x21}, byrefRegs=4
; byrRegs -[x0-x1]
sxtw w24, w0
;; size=56 bbWeight=1.00 PerfScore 15.98
-G_M1159_IG07: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=400000 {x22}, byref, isz
- cbz w24, G_M1159_IG28
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M1159_IG08: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=400000 {x22}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x30]
- cbz x0, G_M1159_IG13
- ;; size=16 bbWeight=1 PerfScore 10.00
-G_M1159_IG09: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=400000 {x22}, byref
- b G_M1159_IG20
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M1159_IG10: ; bbWeight=0.00, gcrefRegs=100000 {x20}, byrefRegs=400000 {x22}, byref
+G_M1159_IG07: ; bbWeight=1.00, gcrefRegs=100000 {x20}, byrefRegs=400000 {x22}, byref
+ b G_M1159_IG23
+ ;; size=4 bbWeight=1.00 PerfScore 1.00
+G_M1159_IG08: ; bbWeight=0.00, gcrefRegs=100000 {x20}, byrefRegs=400000 {x22}, byref
mov w24, #1
b G_M1159_IG07
;; size=8 bbWeight=0.00 PerfScore 0.00
-G_M1159_IG11: ; bbWeight=0.00, gcrefRegs=300000 {x20 x21}, byrefRegs=400000 {x22}, byref, isz
+G_M1159_IG09: ; bbWeight=0.00, gcrefRegs=300000 {x20 x21}, byrefRegs=400000 {x22}, byref, isz
; gcrRegs +[x21]
- cbnz x21, G_M1159_IG28
+ cbnz x21, G_M1159_IG25
;; size=4 bbWeight=0.00 PerfScore 0.00
-G_M1159_IG12: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=400000 {x22}, byref
+G_M1159_IG10: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=400000 {x22}, byref, isz
; gcrRegs -[x21]
- b G_M1159_IG08
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M1159_IG13: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=400000 {x22}, byref
- mov x0, x19
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M1159_IG14: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=400000 {x22}, byref, isz
+ ldr x0, [x19, #0x38]
+ ldr x0, [x0]
+ ldr x0, [x0, #0x30]
+ cbz x0, G_M1159_IG21
+ ;; size=16 bbWeight=1 PerfScore 10.00
+G_M1159_IG11: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=400000 {x22}, byref, isz
movz x1, #0xD1FFAB1E // code for System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -165,77 +151,24 @@ G_M1159_IG14: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=400000 {x22
ldr x2, [x0]
cmp x2, x23
bne G_M1159_IG27
- cbz x1, G_M1159_IG17
+ cbz x1, G_M1159_IG18
;; size=40 bbWeight=1 PerfScore 14.00
-G_M1159_IG15: ; bbWeight=1.00, gcrefRegs=100002 {x1 x20}, byrefRegs=0000 {}, byref
+G_M1159_IG12: ; bbWeight=1.00, gcrefRegs=100002 {x1 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
; byrRegs -[x22]
- b G_M1159_IG23
+ cbz x20, G_M1159_IG24
;; size=4 bbWeight=1.00 PerfScore 1.00
-G_M1159_IG16: ; bbWeight=0.20, gcrefRegs=300000 {x20 x21}, byrefRegs=400000 {x22}, byref
- ; gcrRegs -[x1] +[x21]
- ; byrRegs +[x22]
- mov x0, x19
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
- b G_M1159_IG03
- ;; size=24 bbWeight=0.20 PerfScore 0.80
-G_M1159_IG17: ; bbWeight=0.00, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x21]
- ; byrRegs -[x22]
- cbnz x20, G_M1159_IG31
- ;; size=4 bbWeight=0.00 PerfScore 0.00
-G_M1159_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20]
- mov w25, #1
- b G_M1159_IG21
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M1159_IG19: ; bbWeight=0, gcrefRegs=300003 {x0 x1 x20 x21}, byrefRegs=400000 {x22}, byref
- ; gcrRegs +[x0-x1 x20-x21]
- ; byrRegs +[x22]
- mov x2, x21
- ; gcrRegs +[x2]
- ldr x3, [x0]
- ldr x3, [x3, #0x48]
- ldr x3, [x3, #0x20]
- blr x3
- ; gcrRegs -[x0-x2 x21]
- sxtw w24, w0
- b G_M1159_IG07
- ;; size=28 bbWeight=0 PerfScore 0.00
-G_M1159_IG20: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=400000 {x22}, byref
- b G_M1159_IG14
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M1159_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20]
- ; byrRegs -[x22]
- uxtb w0, w25
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M1159_IG22: ; bbWeight=1, epilog, nogc, extend
- ldr x25, [sp, #0x48]
- ldp x23, x24, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x50
- ret lr
- ;; size=24 bbWeight=1 PerfScore 7.00
-G_M1159_IG23: ; bbWeight=1.00, gcVars=0000000000000000 {}, gcrefRegs=100002 {x1 x20}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x1 x20]
- cbz x20, G_M1159_IG31
- ;; size=4 bbWeight=1.00 PerfScore 1.00
-G_M1159_IG24: ; bbWeight=1.00, gcrefRegs=100002 {x1 x20}, byrefRegs=0000 {}, byref, isz
+G_M1159_IG13: ; bbWeight=1.00, gcrefRegs=100002 {x1 x20}, byrefRegs=0000 {}, byref, isz
cmp x1, x20
- beq G_M1159_IG18
+ beq G_M1159_IG19
;; size=8 bbWeight=1.00 PerfScore 1.50
-G_M1159_IG25: ; bbWeight=1.00, gcrefRegs=100002 {x1 x20}, byrefRegs=0000 {}, byref, isz
+G_M1159_IG14: ; bbWeight=1.00, gcrefRegs=100002 {x1 x20}, byrefRegs=0000 {}, byref, isz
ldr w2, [x1, #0x08]
ldr w0, [x20, #0x08]
cmp w2, w0
- bne G_M1159_IG31
+ bne G_M1159_IG24
;; size=16 bbWeight=1.00 PerfScore 7.49
-G_M1159_IG26: ; bbWeight=1.00, gcrefRegs=100002 {x1 x20}, byrefRegs=0000 {}, byref
+G_M1159_IG15: ; bbWeight=1.00, gcrefRegs=100002 {x1 x20}, byrefRegs=0000 {}, byref
add x0, x1, #12
; byrRegs +[x0]
add x1, x20, #12
@@ -250,10 +183,77 @@ G_M1159_IG26: ; bbWeight=1.00, gcrefRegs=100002 {x1 x20}, byrefRegs=0000
blr x3
; gcrRegs -[x20]
; byrRegs -[x0-x1]
- sxtw w25, w0
- b G_M1159_IG21
- ;; size=44 bbWeight=1.00 PerfScore 9.49
-G_M1159_IG27: ; bbWeight=0, gcrefRegs=100003 {x0 x1 x20}, byrefRegs=0000 {}, byref
+ ;; size=36 bbWeight=1.00 PerfScore 7.99
+G_M1159_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ uxtb w0, w0
+ ;; size=4 bbWeight=1 PerfScore 0.50
+G_M1159_IG17: ; bbWeight=1, epilog, nogc, extend
+ ldp x23, x24, [sp, #0x40]
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
+ ldp fp, lr, [sp], #0x50
+ ret lr
+ ;; size=20 bbWeight=1 PerfScore 5.00
+G_M1159_IG18: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x20]
+ cbnz x20, G_M1159_IG24
+ ;; size=4 bbWeight=0.00 PerfScore 0.00
+G_M1159_IG19: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x20]
...
-12 (-5.56%) : 321013.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature):System.Reflection.ParameterInfo
@@ -5,21 +5,21 @@
; optimized using Dynamic PGO
; fp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 2
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 2
; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 6, 6 ) ref -> x19 class-hnd single-def <System.IRuntimeMethodInfo>
+; V00 arg0 [V00,T00] ( 6, 5.75) ref -> x19 class-hnd single-def <System.IRuntimeMethodInfo>
; V01 arg1 [V01,T03] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Reflection.MemberInfo>
; V02 arg2 [V02,T04] ( 3, 3 ) ref -> x21 class-hnd single-def <System.Signature>
; V03 loc0 [V03 ] ( 1, 1 ) ref -> [fp+0x10] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Reflection.ParameterInfo>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T01] ( 3, 5 ) ref -> x0 class-hnd "spilling QMark2" <<unknown class>>
-; V06 tmp2 [V06,T05] ( 2, 2 ) int -> x0
+; V06 tmp2 [V06,T06] ( 2, 1.50) int -> x0
; V07 tmp3 [V07,T02] ( 3, 5 ) ref -> x0 class-hnd "spilling QMark2" <<unknown class>>
;* V08 tmp4 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V09 tmp5 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V10 cse0 [V10,T06] ( 3, 3 ) ref -> x1 "CSE - aggressive"
+; V10 cse0 [V10,T05] ( 3, 3 ) ref -> x1 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -39,51 +39,38 @@ G_M25265_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M25265_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
mov x0, x19
; gcrRegs +[x0]
- cbnz x0, G_M25265_IG08
+ cbz x0, G_M25265_IG04
;; size=8 bbWeight=1 PerfScore 1.50
-G_M25265_IG03: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M25265_IG03: ; bbWeight=0.50, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x0]
; gcrRegs -[x0]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ cmp x0, x1
+ beq G_M25265_IG08
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M25265_IG04: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
mov x0, x19
; gcrRegs +[x0]
- cbnz x0, G_M25265_IG06
+ cbz x0, G_M25265_IG06
;; size=8 bbWeight=1 PerfScore 1.50
-G_M25265_IG04: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M25265_IG05: ; bbWeight=0.50, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x0]
; gcrRegs -[x0]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ cmp x0, x1
+ bne G_M25265_IG07
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M25265_IG06: ; bbWeight=0.75, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
cmp x19, #0
cset x0, ne
tst w0, #255
- bne G_M25265_IG11
- ;; size=16 bbWeight=1 PerfScore 2.50
-G_M25265_IG05: ; bbWeight=0.88, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
- b G_M25265_IG10
- ;; size=4 bbWeight=0.88 PerfScore 0.88
-G_M25265_IG06: ; bbWeight=0.50, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0]
- ldr x0, [x0]
- ; gcrRegs -[x0]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- cmp x0, x1
- beq G_M25265_IG04
- ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M25265_IG07: ; bbWeight=0.25, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
- b G_M25265_IG10
- ;; size=4 bbWeight=0.25 PerfScore 0.25
-G_M25265_IG08: ; bbWeight=0.50, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0]
- ldr x0, [x0]
- ; gcrRegs -[x0]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- cmp x0, x1
- bne G_M25265_IG03
- ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M25265_IG09: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
- b G_M25265_IG11
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M25265_IG10: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+ bne G_M25265_IG08
+ ;; size=16 bbWeight=0.75 PerfScore 1.88
+G_M25265_IG07: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -96,7 +83,7 @@ G_M25265_IG10: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
blr x2
; gcrRegs -[x0]
;; size=36 bbWeight=1 PerfScore 7.50
-G_M25265_IG11: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M25265_IG08: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
add x3, fp, #16 // [V03 loc0]
mov x0, x19
; gcrRegs +[x0]
@@ -112,14 +99,14 @@ G_M25265_IG11: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
blr x5
; gcrRegs -[x1-x2 x19-x21]
;; size=40 bbWeight=1 PerfScore 8.00
-G_M25265_IG12: ; bbWeight=1, epilog, nogc, extend
+G_M25265_IG09: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 216, prolog size 20, PerfScore 40.12, instruction count 54, allocated bytes for code 216 (MethodHash=500f9d4e) for method System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature):System.Reflection.ParameterInfo[] (Tier1)
+; Total bytes of code 204, prolog size 20, PerfScore 37.38, instruction count 51, allocated bytes for code 204 (MethodHash=500f9d4e) for method System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature):System.Reflection.ParameterInfo[] (Tier1)
; ============================================================
Unwind Info:
@@ -130,7 +117,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 54 (0x00036) Actual length = 216 (0x0000d8)
+ Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-5.56%) : 284835.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature):System.Reflection.ParameterInfo
@@ -5,18 +5,18 @@
; optimized using Dynamic PGO
; fp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 2
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 2
; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 6, 5.50) ref -> x19 class-hnd single-def <System.IRuntimeMethodInfo>
+; V00 arg0 [V00,T00] ( 6, 5.12) ref -> x19 class-hnd single-def <System.IRuntimeMethodInfo>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Reflection.MemberInfo>
; V02 arg2 [V02,T03] ( 3, 3 ) ref -> x21 class-hnd single-def <System.Signature>
; V03 loc0 [V03 ] ( 1, 1 ) ref -> [fp+0x10] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Reflection.ParameterInfo>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T01] ( 3, 5 ) ref -> x0 class-hnd "spilling QMark2" <<unknown class>>
-; V06 tmp2 [V06,T06] ( 2, 1 ) int -> x0
-; V07 tmp3 [V07,T04] ( 3, 4.50) ref -> x0 class-hnd "spilling QMark2" <<unknown class>>
+; V06 tmp2 [V06,T06] ( 2, 0.75) int -> x0
+; V07 tmp3 [V07,T04] ( 3, 3.50) ref -> x0 class-hnd "spilling QMark2" <<unknown class>>
;* V08 tmp4 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V09 tmp5 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V10 cse0 [V10,T05] ( 3, 3 ) ref -> x1 "CSE - aggressive"
@@ -39,51 +39,38 @@ G_M25265_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M25265_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
mov x0, x19
; gcrRegs +[x0]
- cbnz x0, G_M25265_IG08
+ cbz x0, G_M25265_IG04
;; size=8 bbWeight=1 PerfScore 1.50
-G_M25265_IG03: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M25265_IG03: ; bbWeight=0.50, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x0]
; gcrRegs -[x0]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ cmp x0, x1
+ beq G_M25265_IG08
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M25265_IG04: ; bbWeight=0.75, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
mov x0, x19
; gcrRegs +[x0]
- cbnz x0, G_M25265_IG06
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M25265_IG04: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+ cbz x0, G_M25265_IG06
+ ;; size=8 bbWeight=0.75 PerfScore 1.12
+G_M25265_IG05: ; bbWeight=0.25, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x0]
; gcrRegs -[x0]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ cmp x0, x1
+ bne G_M25265_IG07
+ ;; size=24 bbWeight=0.25 PerfScore 1.50
+G_M25265_IG06: ; bbWeight=0.38, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
cmp x19, #0
cset x0, ne
tst w0, #255
- bne G_M25265_IG11
- ;; size=16 bbWeight=0.50 PerfScore 1.25
-G_M25265_IG05: ; bbWeight=0.44, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
- b G_M25265_IG10
- ;; size=4 bbWeight=0.44 PerfScore 0.44
-G_M25265_IG06: ; bbWeight=0.25, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0]
- ldr x0, [x0]
- ; gcrRegs -[x0]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- cmp x0, x1
- beq G_M25265_IG04
- ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M25265_IG07: ; bbWeight=0.12, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
- b G_M25265_IG10
- ;; size=4 bbWeight=0.12 PerfScore 0.12
-G_M25265_IG08: ; bbWeight=0.50, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0]
- ldr x0, [x0]
- ; gcrRegs -[x0]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- cmp x0, x1
- bne G_M25265_IG03
- ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M25265_IG09: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
- b G_M25265_IG11
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M25265_IG10: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+ bne G_M25265_IG08
+ ;; size=16 bbWeight=0.38 PerfScore 0.94
+G_M25265_IG07: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -96,7 +83,7 @@ G_M25265_IG10: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
blr x2
; gcrRegs -[x0]
;; size=36 bbWeight=1 PerfScore 7.50
-G_M25265_IG11: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M25265_IG08: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
add x3, fp, #16 // [V03 loc0]
mov x0, x19
; gcrRegs +[x0]
@@ -112,14 +99,14 @@ G_M25265_IG11: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
blr x5
; gcrRegs -[x1-x2 x19-x21]
;; size=40 bbWeight=1 PerfScore 8.00
-G_M25265_IG12: ; bbWeight=1, epilog, nogc, extend
+G_M25265_IG09: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 216, prolog size 20, PerfScore 36.81, instruction count 54, allocated bytes for code 216 (MethodHash=500f9d4e) for method System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature):System.Reflection.ParameterInfo[] (Tier1)
+; Total bytes of code 204, prolog size 20, PerfScore 34.56, instruction count 51, allocated bytes for code 204 (MethodHash=500f9d4e) for method System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature):System.Reflection.ParameterInfo[] (Tier1)
; ============================================================
Unwind Info:
@@ -130,7 +117,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 54 (0x00036) Actual length = 216 (0x0000d8)
+ Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+10.53%) : 381653.dasm - System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
@@ -9,11 +9,11 @@
; 4 inlinees with PGO data; 10 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 6, 4.00) ref -> x19 class-hnd single-def <System.String>
-; V01 loc0 [V01,T02] ( 5, 1.67) int -> x20
+; V00 arg0 [V00,T00] ( 7, 4.00) ref -> x19 class-hnd single-def <System.String>
+; V01 loc0 [V01,T02] ( 8, 1.67) int -> x20
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 2, 0.67) ubyte -> x0 "Inline return value spill temp"
-; V04 tmp2 [V04,T01] ( 4, 2.67) ushort -> x0 "Inlining Arg"
+; V03 tmp1 [V03,T03] ( 2, 0 ) ubyte -> x0 "Inline return value spill temp"
+; V04 tmp2 [V04,T01] ( 4, 2.00) ushort -> x0 "Inlining Arg"
;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V06 tmp4 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V07 tmp5 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -92,18 +92,22 @@ G_M44603_IG09: ; bbWeight=0.33, gcVars=0000000000000000 {}, gcrefRegs=800
ble G_M44603_IG03
b G_M44603_IG06
;; size=20 bbWeight=0.33 PerfScore 2.00
-G_M44603_IG10: ; bbWeight=0.33, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M44603_IG10: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
movz x1, #0xD1FFAB1E // code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
; gcr arg pop 0
- cbnz w0, G_M44603_IG09
- b G_M44603_IG07
- ;; size=28 bbWeight=0.33 PerfScore 2.50
+ cbz w0, G_M44603_IG07
+ add w20, w20, #1
+ ldr w0, [x19, #0x08]
+ cmp w0, w20
+ bgt G_M44603_IG06
+ b G_M44603_IG03
+ ;; size=44 bbWeight=0 PerfScore 0.00
-; Total bytes of code 152, prolog size 16, PerfScore 17.17, instruction count 38, allocated bytes for code 152 (MethodHash=3ff251c4) for method System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
+; Total bytes of code 168, prolog size 16, PerfScore 14.67, instruction count 42, allocated bytes for code 168 (MethodHash=3ff251c4) for method System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
; ============================================================
Unwind Info:
@@ -114,7 +118,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 38 (0x00026) Actual length = 152 (0x000098)
+ Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+12 (+12.00%) : 413473.dasm - Internal.TypeSystem.TypeSystemContext+SignatureVariableHashtable:CompareKeyToValue(uint,Internal.TypeSystem.SignatureVariable):ubyte:this (Tier1)
@@ -11,60 +11,64 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Internal.TypeSystem.TypeSystemContext+SignatureVariableHashtable>
; V01 arg1 [V01,T01] ( 3, 3 ) int -> x20 single-def
-; V02 arg2 [V02,T00] ( 6, 5 ) ref -> x19 class-hnd single-def <Internal.TypeSystem.SignatureVariable>
+; V02 arg2 [V02,T00] ( 7, 4.35) ref -> x19 class-hnd single-def <Internal.TypeSystem.SignatureVariable>
;* 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,T04] ( 3, 2.00) int -> x0
-; V06 tmp2 [V06,T03] ( 2, 2 ) int -> x0 "guarded devirt return temp"
+; V05 tmp1 [V05,T02] ( 3, 2.21) int -> x21
+; V06 tmp2 [V06,T03] ( 2, 0.14) int -> x0 "guarded devirt return temp"
;* V07 tmp3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.SignatureTypeVariable>
-; V08 cse0 [V08,T02] ( 3, 3 ) long -> x1 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M7735_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x30]!
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
mov fp, sp
mov w20, w1
mov x19, x2
; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=24 bbWeight=1 PerfScore 4.50
G_M7735_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x19]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- cmp x1, x0
- beq G_M7735_IG03
+ ldr x0, [x19]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ cmp x0, x1
+ bne G_M7735_IG06
+ ;; size=24 bbWeight=1 PerfScore 6.00
+G_M7735_IG03: ; bbWeight=0.93, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ldr w21, [x19, #0x24]
+ ;; size=4 bbWeight=0.93 PerfScore 2.79
+G_M7735_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19]
+ cmp w20, w21
+ cset x0, eq
+ ;; size=8 bbWeight=1 PerfScore 1.00
+G_M7735_IG05: ; bbWeight=1, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
+ ret lr
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M7735_IG06: ; bbWeight=0.07, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x19]
mov x0, x19
; gcrRegs +[x0]
+ ldr x1, [x19]
ldr x1, [x1, #0x60]
ldr x1, [x1, #0x30]
blr x1
; gcrRegs -[x0]
- cbnz w0, G_M7735_IG06
- ;; size=44 bbWeight=1 PerfScore 14.50
-G_M7735_IG03: ; bbWeight=0.72, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ cbz w0, G_M7735_IG03
+ ;; size=24 bbWeight=0.07 PerfScore 0.81
+G_M7735_IG07: ; bbWeight=0.28, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr w0, [x19, #0x24]
- ;; size=4 bbWeight=0.72 PerfScore 2.15
-G_M7735_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- cmp w20, w0
- cset x0, eq
- ;; size=8 bbWeight=1 PerfScore 1.00
-G_M7735_IG05: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M7735_IG06: ; bbWeight=0.28, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x19]
- ldr w0, [x19, #0x24]
- orr w0, w0, #0xD1FFAB1E
+ orr w21, w0, #0xD1FFAB1E
b G_M7735_IG04
;; size=12 bbWeight=0.28 PerfScore 1.27
-; Total bytes of code 100, prolog size 12, PerfScore 25.42, instruction count 25, allocated bytes for code 100 (MethodHash=0d53e1c8) for method Internal.TypeSystem.TypeSystemContext+SignatureVariableHashtable:CompareKeyToValue(uint,Internal.TypeSystem.SignatureVariable):ubyte:this (Tier1)
+; Total bytes of code 112, prolog size 16, PerfScore 21.37, instruction count 28, allocated bytes for code 112 (MethodHash=0d53e1c8) for method Internal.TypeSystem.TypeSystemContext+SignatureVariableHashtable:CompareKeyToValue(uint,Internal.TypeSystem.SignatureVariable):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -75,7 +79,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -83,10 +87,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
+12 (+12.00%) : 419714.dasm - Internal.TypeSystem.TypeSystemContext+SignatureVariableHashtable:CompareKeyToValue(uint,Internal.TypeSystem.SignatureVariable):ubyte:this (Tier1)
@@ -11,60 +11,64 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Internal.TypeSystem.TypeSystemContext+SignatureVariableHashtable>
; V01 arg1 [V01,T01] ( 3, 3 ) int -> x20 single-def
-; V02 arg2 [V02,T00] ( 6, 5 ) ref -> x19 class-hnd single-def <Internal.TypeSystem.SignatureVariable>
+; V02 arg2 [V02,T00] ( 7, 4.42) ref -> x19 class-hnd single-def <Internal.TypeSystem.SignatureVariable>
;* 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,T04] ( 3, 2 ) int -> x0
-; V06 tmp2 [V06,T03] ( 2, 2 ) int -> x0 "guarded devirt return temp"
+; V05 tmp1 [V05,T02] ( 3, 2.10) int -> x21
+; V06 tmp2 [V06,T03] ( 2, 0.32) int -> x0 "guarded devirt return temp"
;* V07 tmp3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.SignatureTypeVariable>
-; V08 cse0 [V08,T02] ( 3, 3 ) long -> x1 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M7735_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x30]!
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
mov fp, sp
mov w20, w1
mov x19, x2
; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=24 bbWeight=1 PerfScore 4.50
G_M7735_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x19]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- cmp x1, x0
- beq G_M7735_IG03
+ ldr x0, [x19]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ cmp x0, x1
+ bne G_M7735_IG06
+ ;; size=24 bbWeight=1 PerfScore 6.00
+G_M7735_IG03: ; bbWeight=0.84, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ldr w21, [x19, #0x24]
+ ;; size=4 bbWeight=0.84 PerfScore 2.52
+G_M7735_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19]
+ cmp w20, w21
+ cset x0, eq
+ ;; size=8 bbWeight=1 PerfScore 1.00
+G_M7735_IG05: ; bbWeight=1, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
+ ret lr
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M7735_IG06: ; bbWeight=0.16, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x19]
mov x0, x19
; gcrRegs +[x0]
+ ldr x1, [x19]
ldr x1, [x1, #0x60]
ldr x1, [x1, #0x30]
blr x1
; gcrRegs -[x0]
- cbnz w0, G_M7735_IG06
- ;; size=44 bbWeight=1 PerfScore 14.50
-G_M7735_IG03: ; bbWeight=0.74, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ cbz w0, G_M7735_IG03
+ ;; size=24 bbWeight=0.16 PerfScore 1.84
+G_M7735_IG07: ; bbWeight=0.26, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr w0, [x19, #0x24]
- ;; size=4 bbWeight=0.74 PerfScore 2.22
-G_M7735_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- cmp w20, w0
- cset x0, eq
- ;; size=8 bbWeight=1 PerfScore 1.00
-G_M7735_IG05: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M7735_IG06: ; bbWeight=0.26, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x19]
- ldr w0, [x19, #0x24]
- orr w0, w0, #0xD1FFAB1E
+ orr w21, w0, #0xD1FFAB1E
b G_M7735_IG04
;; size=12 bbWeight=0.26 PerfScore 1.17
-; Total bytes of code 100, prolog size 12, PerfScore 25.39, instruction count 25, allocated bytes for code 100 (MethodHash=0d53e1c8) for method Internal.TypeSystem.TypeSystemContext+SignatureVariableHashtable:CompareKeyToValue(uint,Internal.TypeSystem.SignatureVariable):ubyte:this (Tier1)
+; Total bytes of code 112, prolog size 16, PerfScore 22.03, instruction count 28, allocated bytes for code 112 (MethodHash=0d53e1c8) for method Internal.TypeSystem.TypeSystemContext+SignatureVariableHashtable:CompareKeyToValue(uint,Internal.TypeSystem.SignatureVariable):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -75,7 +79,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -83,10 +87,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
libraries.pmi.linux.arm64.checked.mch
-16 (-5.19%) : 187608.dasm - Microsoft.Build.Execution.BuildParameters:Initialize(Microsoft.Build.Collections.PropertyDictionary`1[Microsoft.Build.Execution.ProjectPropertyInstance],Microsoft.Build.Evaluation.ProjectRootElementCacheBase,Microsoft.Build.Evaluation.ToolsetProvider):this (FullOpts)
@@ -89,11 +89,13 @@ G_M19340_IG03: ; bbWeight=0.25, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
cmp w1, #1
bne G_M19340_IG06
;; size=12 bbWeight=0.25 PerfScore 1.12
-G_M19340_IG04: ; bbWeight=0.12, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
- b G_M19340_IG13
- ;; size=4 bbWeight=0.12 PerfScore 0.12
-G_M19340_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M19340_IG04: ; bbWeight=0.12, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+ ldrh w0, [x0, #0x0C]
; gcrRegs -[x0]
+ cmp w0, #49
+ bne G_M19340_IG06
+ ;; size=12 bbWeight=0.12 PerfScore 0.56
+G_M19340_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
strb wzr, [x19, #0xB8]
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M19340_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
@@ -113,11 +115,13 @@ G_M19340_IG07: ; bbWeight=0.25, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
cmp w1, #1
bne G_M19340_IG10
;; size=12 bbWeight=0.25 PerfScore 1.12
-G_M19340_IG08: ; bbWeight=0.12, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
- b G_M19340_IG12
- ;; size=4 bbWeight=0.12 PerfScore 0.12
-G_M19340_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M19340_IG08: ; bbWeight=0.12, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+ ldrh w0, [x0, #0x0C]
; gcrRegs -[x0]
+ cmp w0, #49
+ bne G_M19340_IG10
+ ;; size=12 bbWeight=0.12 PerfScore 0.56
+G_M19340_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov w0, #1
strb w0, [x19, #0xC3]
;; size=8 bbWeight=0.50 PerfScore 0.75
@@ -143,24 +147,8 @@ G_M19340_IG11: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=1 PerfScore 4.00
-G_M19340_IG12: ; bbWeight=0.12, gcVars=0000000000000000 {}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x0 x19]
- ldrh w0, [x0, #0x0C]
- ; gcrRegs -[x0]
- cmp w0, #49
- bne G_M19340_IG10
- b G_M19340_IG09
- ;; size=16 bbWeight=0.12 PerfScore 0.69
-G_M19340_IG13: ; bbWeight=0.12, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0]
- ldrh w0, [x0, #0x0C]
- ; gcrRegs -[x0]
- cmp w0, #49
- bne G_M19340_IG06
- b G_M19340_IG05
- ;; size=16 bbWeight=0.12 PerfScore 0.69
-; Total bytes of code 308, prolog size 16, PerfScore 53.62, instruction count 77, allocated bytes for code 308 (MethodHash=13f0b473) for method Microsoft.Build.Execution.BuildParameters:Initialize(Microsoft.Build.Collections.PropertyDictionary`1[Microsoft.Build.Execution.ProjectPropertyInstance],Microsoft.Build.Evaluation.ProjectRootElementCacheBase,Microsoft.Build.Evaluation.ToolsetProvider):this (FullOpts)
+; Total bytes of code 292, prolog size 16, PerfScore 53.12, instruction count 73, allocated bytes for code 292 (MethodHash=13f0b473) for method Microsoft.Build.Execution.BuildParameters:Initialize(Microsoft.Build.Collections.PropertyDictionary`1[Microsoft.Build.Execution.ProjectPropertyInstance],Microsoft.Build.Evaluation.ProjectRootElementCacheBase,Microsoft.Build.Evaluation.ToolsetProvider):this (FullOpts)
; ============================================================
Unwind Info:
@@ -171,7 +159,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 77 (0x0004d) Actual length = 308 (0x000134)
+ Function Length : 73 (0x00049) Actual length = 292 (0x000124)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-8 (-3.64%) : 62373.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolCompletionState:DefaultForceComplete(Microsoft.CodeAnalysis.CSharp.Symbol,System.Threading.CancellationToken):this (FullOpts)
@@ -41,7 +41,7 @@ G_M9217_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M9217_IG02: ; bbWeight=1, gcrefRegs=100002 {x1 x20}, byrefRegs=80000 {x19}, byref, isz
; gcrRegs +[x1]
ldapr w0, [x19]
- tbnz w0, #0, G_M9217_IG08
+ tbnz w0, #0, G_M9217_IG07
;; size=8 bbWeight=1 PerfScore 4.00
G_M9217_IG03: ; bbWeight=0.50, gcrefRegs=100002 {x1 x20}, byrefRegs=80000 {x19}, byref, isz
mov x0, x1
@@ -56,19 +56,29 @@ G_M9217_IG03: ; bbWeight=0.50, gcrefRegs=100002 {x1 x20}, byrefRegs=80000
str wzr, [fp, #0x18] // [V05 tmp2]
ldapr w0, [x19]
; gcrRegs -[x0]
- tbnz w0, #0, G_M9217_IG08
+ tbnz w0, #0, G_M9217_IG07
str wzr, [fp, #0x18] // [V05 tmp2]
ldapr w0, [x19]
- tbnz w0, #0, G_M9217_IG08
+ tbnz w0, #0, G_M9217_IG07
;; size=48 bbWeight=0.50 PerfScore 10.75
G_M9217_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; gcrRegs -[x20]
ldr x0, [fp, #0x10] // [V16 tmp13]
; gcrRegs +[x0]
- cbnz x0, G_M9217_IG07
+ cbz x0, G_M9217_IG06
;; size=8 bbWeight=4 PerfScore 12.00
-G_M9217_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M9217_IG05: ; bbWeight=0.68, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; gcrRegs -[x0]
+ ldr x0, [fp, #0x10] // [V16 tmp13]
+ ; gcrRegs +[x0]
+ add x0, x0, #32
+ ; gcrRegs -[x0]
+ ; byrRegs +[x0]
+ ldapr w0, [x0]
+ ; byrRegs -[x0]
+ cbnz w0, G_M9217_IG10
+ ;; size=16 bbWeight=0.68 PerfScore 4.40
+G_M9217_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
add x0, fp, #24 // [V05 tmp2]
mov w1, #20
movz x2, #0xD1FFAB1E // code for <unknown method>
@@ -80,39 +90,25 @@ G_M9217_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byr
ldapr w0, [x19]
tbz w0, #0, G_M9217_IG04
;; size=36 bbWeight=4 PerfScore 42.00
-G_M9217_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
- b G_M9217_IG08
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M9217_IG07: ; bbWeight=0.68, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
- ldr x0, [fp, #0x10] // [V16 tmp13]
- ; gcrRegs +[x0]
- add x0, x0, #32
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- ldapr w0, [x0]
- ; byrRegs -[x0]
- cbnz w0, G_M9217_IG11
- b G_M9217_IG05
- ;; size=20 bbWeight=0.68 PerfScore 5.08
-G_M9217_IG08: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M9217_IG07: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
ldr w0, [x19]
orr w1, w0, #0xD1FFAB1E
cmp w1, w0
- beq G_M9217_IG10
+ beq G_M9217_IG09
;; size=16 bbWeight=8 PerfScore 40.00
-G_M9217_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M9217_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
mov w2, w0
casal w2, w1, [x19]
cmp w2, w0
- bne G_M9217_IG08
+ bne G_M9217_IG07
;; size=16 bbWeight=4 PerfScore 20.00
-G_M9217_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M9217_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x19]
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=1 PerfScore 3.00
-G_M9217_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M9217_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
add x0, fp, #16 // [V06 tmp3]
movz x1, #0xD1FFAB1E // code for System.Threading.CancellationToken:ThrowOperationCanceledException():this
movk x1, #0xD1FFAB1E LSL #16
@@ -123,7 +119,7 @@ G_M9217_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
brk_unix #0
;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 220, prolog size 24, PerfScore 142.33, instruction count 55, allocated bytes for code 220 (MethodHash=046adbfe) for method Microsoft.CodeAnalysis.CSharp.Symbols.SymbolCompletionState:DefaultForceComplete(Microsoft.CodeAnalysis.CSharp.Symbol,System.Threading.CancellationToken):this (FullOpts)
+; Total bytes of code 212, prolog size 24, PerfScore 140.65, instruction count 53, allocated bytes for code 212 (MethodHash=046adbfe) for method Microsoft.CodeAnalysis.CSharp.Symbols.SymbolCompletionState:DefaultForceComplete(Microsoft.CodeAnalysis.CSharp.Symbol,System.Threading.CancellationToken):this (FullOpts)
; ============================================================
Unwind Info:
@@ -134,7 +130,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 55 (0x00037) Actual length = 220 (0x0000dc)
+ Function Length : 53 (0x00035) Actual length = 212 (0x0000d4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-8 (-3.64%) : 61911.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceParameterSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
@@ -17,7 +17,7 @@
;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
; V07 tmp4 [V07 ] ( 3, 5 ) struct ( 8) [fp+0x18] do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.SpinWait>
; V08 tmp5 [V08 ] ( 4, 10.35) struct ( 8) [fp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <System.Threading.CancellationToken>
-;* V09 tmp6 [V09,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V09 tmp6 [V09,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V10 tmp7 [V10,T06] ( 2, 2.71) ref -> x0 class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource>
;* V11 tmp8 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V12 tmp9 [V12,T01] ( 3, 26 ) byref -> x20 single-def "Inlining Arg"
@@ -27,7 +27,7 @@
;* V16 tmp13 [V16 ] ( 0, 0 ) ref -> zero-ref "field V05.array (fldOffset=0x0)" P-INDEP
; V17 tmp14 [V17 ] ( 3, 5 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V07._count (fldOffset=0x0)" P-DEP
; V18 tmp15 [V18 ] ( 4, 5.18) ref -> [fp+0x10] do-not-enreg[X] addr-exposed "field V08._source (fldOffset=0x0)" P-DEP
-; V19 tmp16 [V19,T08] ( 2, 1 ) ref -> x0 single-def "Field obj"
+; V19 tmp16 [V19,T07] ( 2, 1 ) ref -> x0 single-def "Field obj"
;
; Lcl frame size = 16
@@ -44,7 +44,7 @@ G_M62718_IG02: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {},
add x20, x0, #48
; byrRegs +[x20]
ldapr w1, [x20]
- tbnz w1, #0, G_M62718_IG06
+ tbnz w1, #0, G_M62718_IG07
;; size=12 bbWeight=1 PerfScore 4.50
G_M62718_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=100000 {x20}, byref, isz
ldr x1, [x0]
@@ -57,19 +57,29 @@ G_M62718_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=10000
str wzr, [fp, #0x18] // [V07 tmp4]
ldapr w0, [x20]
; gcrRegs -[x0]
- tbnz w0, #0, G_M62718_IG06
+ tbnz w0, #0, G_M62718_IG07
str wzr, [fp, #0x18] // [V07 tmp4]
ldapr w0, [x20]
- tbnz w0, #0, G_M62718_IG06
+ tbnz w0, #0, G_M62718_IG07
;; size=48 bbWeight=0.50 PerfScore 12.00
G_M62718_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
; gcrRegs -[x19]
ldr x0, [fp, #0x10] // [V18 tmp15]
; gcrRegs +[x0]
- cbnz x0, G_M62718_IG07
+ cbz x0, G_M62718_IG06
;; size=8 bbWeight=4 PerfScore 12.00
-G_M62718_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
+G_M62718_IG05: ; bbWeight=0.68, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
; gcrRegs -[x0]
+ ldr x0, [fp, #0x10] // [V18 tmp15]
+ ; gcrRegs +[x0]
+ add x0, x0, #32
+ ; gcrRegs -[x0]
+ ; byrRegs +[x0]
+ ldapr w0, [x0]
+ ; byrRegs -[x0]
+ cbnz w0, G_M62718_IG10
+ ;; size=16 bbWeight=0.68 PerfScore 4.40
+G_M62718_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
add x0, fp, #24 // [V07 tmp4]
mov w1, #20
movz x2, #0xD1FFAB1E // code for <unknown method>
@@ -81,39 +91,25 @@ G_M62718_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, b
ldapr w0, [x20]
tbz w0, #0, G_M62718_IG04
;; size=36 bbWeight=4 PerfScore 42.00
-G_M62718_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref
- b G_M62718_IG08
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M62718_IG07: ; bbWeight=0.68, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
- ldr x0, [fp, #0x10] // [V18 tmp15]
- ; gcrRegs +[x0]
- add x0, x0, #32
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- ldapr w0, [x0]
- ; byrRegs -[x0]
- cbnz w0, G_M62718_IG11
- b G_M62718_IG05
- ;; size=20 bbWeight=0.68 PerfScore 5.08
-G_M62718_IG08: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
+G_M62718_IG07: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
ldr w0, [x20]
orr w1, w0, #0xD1FFAB1E
cmp w1, w0
- beq G_M62718_IG10
+ beq G_M62718_IG09
;; size=16 bbWeight=8 PerfScore 40.00
-G_M62718_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
+G_M62718_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
mov w2, w0
casal w2, w1, [x20]
cmp w2, w0
- bne G_M62718_IG08
+ bne G_M62718_IG07
;; size=16 bbWeight=4 PerfScore 20.00
-G_M62718_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M62718_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x20]
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=1 PerfScore 3.00
-G_M62718_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M62718_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
add x0, fp, #16 // [V08 tmp5]
movz x1, #0xD1FFAB1E // code for System.Threading.CancellationToken:ThrowOperationCanceledException():this
movk x1, #0xD1FFAB1E LSL #16
@@ -124,7 +120,7 @@ G_M62718_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 220, prolog size 20, PerfScore 143.58, instruction count 55, allocated bytes for code 220 (MethodHash=0e5d0b01) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceParameterSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
+; Total bytes of code 212, prolog size 20, PerfScore 141.90, instruction count 53, allocated bytes for code 212 (MethodHash=0e5d0b01) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceParameterSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
; ============================================================
Unwind Info:
@@ -135,7 +131,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 55 (0x00037) Actual length = 220 (0x0000dc)
+ Function Length : 53 (0x00035) Actual length = 212 (0x0000d4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+8 (+4.65%) : 246442.dasm - System.Net.SocketAddress:set_Size(int):this (FullOpts)
@@ -33,23 +33,33 @@ G_M2431_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
ldr w20, [x1, #0x08]
cmp w19, w20
- blt G_M2431_IG04
+ bge G_M2431_IG05
;; size=16 bbWeight=1 PerfScore 7.50
-G_M2431_IG03: ; bbWeight=0.09, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M2431_IG03: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1]
+ tbz w19, #31, G_M2431_IG07
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M2431_IG04: ; bbWeight=0.41, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ b G_M2431_IG10
+ ;; size=4 bbWeight=0.41 PerfScore 0.41
+G_M2431_IG05: ; bbWeight=0.09, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x0]
cmp w19, w20
- bgt G_M2431_IG06
+ bgt G_M2431_IG09
;; size=8 bbWeight=0.09 PerfScore 0.13
-G_M2431_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- tbnz w19, #31, G_M2431_IG07
+G_M2431_IG06: ; bbWeight=0.08, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ b G_M2431_IG03
+ ;; size=4 bbWeight=0.08 PerfScore 0.08
+G_M2431_IG07: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
str w19, [x0, #0x10]
- ;; size=8 bbWeight=1 PerfScore 2.00
-G_M2431_IG05: ; bbWeight=1, epilog, nogc, extend
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M2431_IG08: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 3.00
-G_M2431_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M2431_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
@@ -70,7 +80,7 @@ G_M2431_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
; gcrRegs -[x2]
brk_unix #0
;; size=56 bbWeight=0 PerfScore 0.00
-G_M2431_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M2431_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -91,7 +101,7 @@ G_M2431_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=56 bbWeight=0 PerfScore 0.00
-; Total bytes of code 172, prolog size 12, PerfScore 15.63, instruction count 43, allocated bytes for code 172 (MethodHash=f3e5f680) for method System.Net.SocketAddress:set_Size(int):this (FullOpts)
+; Total bytes of code 180, prolog size 12, PerfScore 16.12, instruction count 45, allocated bytes for code 180 (MethodHash=f3e5f680) for method System.Net.SocketAddress:set_Size(int):this (FullOpts)
; ============================================================
Unwind Info:
@@ -102,7 +112,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
+ Function Length : 45 (0x0002d) Actual length = 180 (0x0000b4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+4.82%) : 252143.dasm - System.Net.Sockets.Socket:set_Ttl(short):this (FullOpts)
@@ -17,34 +17,31 @@
; V06 tmp4 [V06,T07] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
; V07 tmp5 [V07,T08] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
; V08 tmp6 [V08,T09] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V09 cse0 [V09,T04] ( 3, 2.50) int -> x20 "CSE - aggressive"
+; V09 cse0 [V09,T04] ( 3, 2.50) int -> x21 "CSE - aggressive"
; V10 cse1 [V10,T03] ( 6, 4 ) int -> x19 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M64601_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x30]!
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=16 bbWeight=1 PerfScore 3.50
G_M64601_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
sxth w19, w1
- tbnz w19, #31, G_M64601_IG10
+ tbnz w19, #31, G_M64601_IG12
sxtw w20, w19
cmp w20, #255
- blt G_M64601_IG04
+ bge G_M64601_IG06
;; size=20 bbWeight=1 PerfScore 3.50
-G_M64601_IG03: ; bbWeight=0.09, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- cmp w20, #255
- bgt G_M64601_IG11
- ;; size=8 bbWeight=0.09 PerfScore 0.13
-G_M64601_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ldr w20, [x0, #0x50]
- cmp w20, #2
- bne G_M64601_IG07
+G_M64601_IG03: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ldr w21, [x0, #0x50]
+ cmp w21, #2
+ bne G_M64601_IG08
;; size=12 bbWeight=1 PerfScore 4.50
-G_M64601_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M64601_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
mov w3, w19
mov w1, wzr
mov w2, #4
@@ -55,15 +52,23 @@ G_M64601_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
blr x4
; gcrRegs -[x0]
;; size=32 bbWeight=0.50 PerfScore 3.50
-G_M64601_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+G_M64601_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M64601_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M64601_IG06: ; bbWeight=0.09, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x0]
- cmp w20, #23
- bne G_M64601_IG09
+ cmp w20, #255
+ bgt G_M64601_IG10
+ ;; size=8 bbWeight=0.09 PerfScore 0.13
+G_M64601_IG07: ; bbWeight=0.08, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ b G_M64601_IG03
+ ;; size=4 bbWeight=0.08 PerfScore 0.08
+G_M64601_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ cmp w21, #23
+ bne G_M64601_IG11
mov w3, w19
mov w1, #41
mov w2, #4
@@ -74,12 +79,33 @@ G_M64601_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
blr x4
; gcrRegs -[x0]
;; size=40 bbWeight=0.50 PerfScore 4.25
-G_M64601_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+G_M64601_IG09: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M64601_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M64601_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, #0xD1FFAB1E
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_STRCNS
+ ; gcrRegs +[x0]
+ mov x2, x0
+ ; gcrRegs +[x2]
+ mov w0, w20
+ ; gcrRegs -[x0]
+ mov w1, #255
+ movz x3, #0xD1FFAB1E // code for System.ArgumentOutOfRangeException:ThrowGreater[int](int,int,System.String)
+ movk x3, #0xD1FFAB1E LSL #16
+ movk x3, #0xD1FFAB1E LSL #32
+ ldr x3, [x3]
+ blr x3
+ ; gcrRegs -[x2]
+ brk_unix #0
+ ;; size=56 bbWeight=0 PerfScore 0.00
+G_M64601_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -108,7 +134,7 @@ G_M64601_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
bl CORINFO_HELP_THROW
; gcrRegs -[x0 x19]
;; size=76 bbWeight=0 PerfScore 0.00
-G_M64601_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M64601_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -127,28 +153,8 @@ G_M64601_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
brk_unix #0
;; size=52 bbWeight=0 PerfScore 0.00
-G_M64601_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov w0, #0xD1FFAB1E
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_STRCNS
- ; gcrRegs +[x0]
- mov x2, x0
- ; gcrRegs +[x2]
- mov w0, w20
- ; gcrRegs -[x0]
- mov w1, #255
- movz x3, #0xD1FFAB1E // code for System.ArgumentOutOfRangeException:ThrowGreater[int](int,int,System.String)
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- blr x3
- ; gcrRegs -[x2]
- brk_unix #0
- ;; size=56 bbWeight=0 PerfScore 0.00
-; Total bytes of code 332, prolog size 12, PerfScore 21.38, instruction count 83, allocated bytes for code 332 (MethodHash=240903a6) for method System.Net.Sockets.Socket:set_Ttl(short):this (FullOpts)
+; Total bytes of code 348, prolog size 16, PerfScore 24.46, instruction count 87, allocated bytes for code 348 (MethodHash=240903a6) for method System.Net.Sockets.Socket:set_Ttl(short):this (FullOpts)
; ============================================================
Unwind Info:
@@ -159,7 +165,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 83 (0x00053) Actual length = 332 (0x00014c)
+ Function Length : 87 (0x00057) Actual length = 348 (0x00015c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -170,10 +176,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
+12 (+7.32%) : 258646.dasm - System.Collections.CaseInsensitiveHashCodeProvider:GetHashCode(System.Object):int:this (FullOpts)
@@ -10,7 +10,7 @@
;
; V00 this [V00,T01] ( 3, 2.50) ref -> x0 this class-hnd single-def <System.Collections.CaseInsensitiveHashCodeProvider>
; V01 arg1 [V01,T00] ( 6, 5 ) ref -> x1 class-hnd single-def <System.Object>
-; V02 loc0 [V02,T04] ( 3, 1.50) ref -> x1 class-hnd exact <System.String>
+; V02 loc0 [V02,T06] ( 3, 1.50) ref -> x1 class-hnd exact <System.String>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String>
; V05 tmp2 [V05,T02] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Globalization.CompareInfo>
@@ -18,8 +18,8 @@
;* V07 tmp4 [V07 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V08 tmp5 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V09 tmp6 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V10 tmp7 [V10,T06] ( 2, 2 ) int -> x1 "Inlining Arg"
-; V11 tmp8 [V11,T05] ( 2, 2 ) byref -> x2 single-def "Inlining Arg"
+; V10 tmp7 [V10,T05] ( 2, 2 ) int -> x1 "Inlining Arg"
+; V11 tmp8 [V11,T04] ( 2, 2 ) byref -> x2 single-def "Inlining Arg"
;* V12 tmp9 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp10 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp11 [V14 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
@@ -31,22 +31,23 @@
; V20 tmp17 [V20,T10] ( 2, 1 ) int -> x1 "field V08._length (fldOffset=0x8)" P-INDEP
;* V21 tmp18 [V21 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP
;* V22 tmp19 [V22 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V23 cse0 [V23,T03] ( 3, 2.50) long -> x2 "CSE - aggressive"
+; V23 cse0 [V23,T03] ( 3, 2.50) long -> x19 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M64002_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M64002_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0-x1]
cbz x1, G_M64002_IG07
- ldr x2, [x1]
- movz x3, #0xD1FFAB1E
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- cmp x2, x3
+ ldr x19, [x1]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ cmp x19, x2
bne G_M64002_IG05
;; size=28 bbWeight=1 PerfScore 7.00
G_M64002_IG03: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
@@ -71,23 +72,25 @@ G_M64002_IG03: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}
; byrRegs -[x1]
;; size=52 bbWeight=0.50 PerfScore 8.50
G_M64002_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M64002_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x1]
mov x0, x1
; gcrRegs +[x0]
- ldr x1, [x2, #0x48]
+ ldr x1, [x19, #0x48]
; gcrRegs -[x1]
ldr x1, [x1, #0x18]
blr x1
; gcrRegs -[x0]
;; size=16 bbWeight=0.50 PerfScore 3.75
G_M64002_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M64002_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
@@ -104,18 +107,18 @@ G_M64002_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=44 bbWeight=0 PerfScore 0.00
-; Total bytes of code 164, prolog size 8, PerfScore 22.75, instruction count 41, allocated bytes for code 164 (MethodHash=067e05fd) for method System.Collections.CaseInsensitiveHashCodeProvider:GetHashCode(System.Object):int:this (FullOpts)
+; Total bytes of code 176, prolog size 12, PerfScore 25.75, instruction count 44, allocated bytes for code 176 (MethodHash=067e05fd) for method System.Collections.CaseInsensitiveHashCodeProvider:GetHashCode(System.Object):int:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -126,7 +129,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
libraries_tests.run.linux.arm64.Release.mch
-8 (-11.76%) : 670601.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass1:ShouldNotSchedule(Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol):this (Tier1)
@@ -11,11 +11,11 @@
;
; V00 this [V00,T01] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass1>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol>
-; V02 loc0 [V02,T04] ( 2, 1.38) ref -> x0 ld-addr-op class-hnd <Microsoft.CodeAnalysis.CSharp.CodeGen.LocalDefUseInfo>
+; V02 loc0 [V02,T04] ( 2, 1.40) ref -> x0 ld-addr-op class-hnd <Microsoft.CodeAnalysis.CSharp.CodeGen.LocalDefUseInfo>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V05 tmp2 [V05,T00] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>>
-; V06 tmp3 [V06,T03] ( 3, 2.67) byref -> x0 single-def "Inline stloc first use temp"
+; V06 tmp3 [V06,T03] ( 3, 2.70) byref -> x0 single-def "Inline stloc first use temp"
;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.CodeGen.LocalDefUseInfo>
;
; Lcl frame size = 0
@@ -37,25 +37,20 @@ G_M27646_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, b
; byrRegs +[x0]
cbz x0, G_M27646_IG04
;; size=32 bbWeight=1 PerfScore 12.50
-G_M27646_IG03: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
+G_M27646_IG03: ; bbWeight=0.70, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
ldr x0, [x0]
; gcrRegs +[x0]
; byrRegs -[x0]
- b G_M27646_IG05
- ;; size=8 bbWeight=0.67 PerfScore 2.70
+ mov w1, #1
+ strb w1, [x0, #0x1C]
+ ;; size=12 bbWeight=0.70 PerfScore 3.16
G_M27646_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x0]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-G_M27646_IG05: ; bbWeight=0.70, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x0]
- mov w1, #1
- strb w1, [x0, #0x1C]
- b G_M27646_IG04
- ;; size=12 bbWeight=0.70 PerfScore 1.75
-; Total bytes of code 68, prolog size 8, PerfScore 20.45, instruction count 17, allocated bytes for code 68 (MethodHash=1f449401) for method Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass1:ShouldNotSchedule(Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol):this (Tier1)
+; Total bytes of code 60, prolog size 8, PerfScore 19.16, instruction count 15, allocated bytes for code 60 (MethodHash=1f449401) for method Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass1:ShouldNotSchedule(Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol):this (Tier1)
; ============================================================
Unwind Info:
@@ -66,7 +61,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-10.91%) : 667173.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System._Canon]:getHasAnyApplicableMember():ubyte:this (Tier1)
@@ -5,7 +5,7 @@
; optimized using Dynamic PGO
; fp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 19224
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 19224
; 1 inlinees with PGO data; 6 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
@@ -19,7 +19,7 @@
;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]>
;* V09 tmp5 [V09 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V10 tmp6 [V10,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V10 tmp6 [V10,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V11 tmp7 [V11,T08] ( 3, 3 ) ubyte -> x0 "Inline stloc first use temp"
;* V12 tmp8 [V12 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V13 tmp9 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]>
@@ -29,16 +29,16 @@
;* V17 tmp13 [V17 ] ( 0, 0 ) ubyte -> zero-ref "V03.[004..005)"
;* V18 cse0 [V18,T12] ( 0, 0 ) long -> zero-ref hoist "CSE - aggressive"
; V19 cse1 [V19,T07] ( 3, 3 ) ref -> x0 "CSE - aggressive"
-; V20 cse2 [V20,T06] ( 2, 2 ) long -> x22 "CSE - aggressive"
-; V21 rat0 [V21,T04] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
+; V20 cse2 [V20,T06] ( 1, 1 ) long -> x22 "CSE - aggressive"
+;* V21 rat0 [V21,T04] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V22 rat1 [V22,T05] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V23 rat2 [V23,T01] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
-;* V24 rat3 [V24,T11] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V23 rat2 [V23,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+;* V24 rat3 [V24,T10] ( 0, 0 ) long -> zero-ref "runtime lookup"
;* V25 rat4 [V25,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 96
-G_M864_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M864_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x90]!
stp x19, x20, [sp, #0x70]
stp x21, x22, [sp, #0x80]
@@ -52,7 +52,7 @@ G_M864_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n
mov x19, x0
; gcrRegs +[x19]
;; size=44 bbWeight=1 PerfScore 9.00
-G_M864_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M864_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:GetEnumerator():Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1+Enumerator[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:this
@@ -65,16 +65,15 @@ G_M864_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byre
; gcrRegs +[x20]
mov w21, w1
ldr x22, [x19]
- mov x0, x22
+ ;; size=40 bbWeight=1 PerfScore 15.50
+G_M864_IG03: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x40]
- cbz x0, G_M864_IG05
- b G_M864_IG05
- ;; size=64 bbWeight=1 PerfScore 27.00
-G_M864_IG03: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
+ add w21, w21, #1
+ ldr x0, [x20, #0x08]
; gcrRegs +[x0]
+ ldr w8, [x0, #0x10]
+ cmp w21, w8
+ bge G_M864_IG05
add x8, fp, #24 // [V02 loc1]
mov w1, w21
movz x2, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:get_Item(int):Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]:this
@@ -88,35 +87,27 @@ G_M864_IG03: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000
sub w0, w0, #22
cmp w1, #1
ccmp w0, #1, z, hi
- bhi G_M864_IG05
+ bhi G_M864_IG03
mov w0, #1
- ;; size=56 bbWeight=1 PerfScore 12.00
+ ;; size=76 bbWeight=1 PerfScore 20.00
G_M864_IG04: ; bbWeight=1, epilog, nogc, extend
ldp x21, x22, [sp, #0x80]
ldp x19, x20, [sp, #0x70]
ldp fp, lr, [sp], #0x90
ret lr
;; size=16 bbWeight=1 PerfScore 4.00
-G_M864_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
- add w21, w21, #1
- ldr x0, [x20, #0x08]
- ; gcrRegs +[x0]
- ldr w8, [x0, #0x10]
- cmp w21, w8
- blt G_M864_IG03
- ;; size=20 bbWeight=1 PerfScore 8.00
-G_M864_IG06: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0 x20]
+G_M864_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x20]
mov w0, wzr
;; size=4 bbWeight=0 PerfScore 0.00
-G_M864_IG07: ; bbWeight=0, epilog, nogc, extend
+G_M864_IG06: ; bbWeight=0, epilog, nogc, extend
ldp x21, x22, [sp, #0x80]
ldp x19, x20, [sp, #0x70]
ldp fp, lr, [sp], #0x90
ret lr
;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 220, prolog size 40, PerfScore 60.00, instruction count 55, allocated bytes for code 220 (MethodHash=caadfc9f) for method Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (Tier1)
+; Total bytes of code 196, prolog size 40, PerfScore 48.50, instruction count 49, allocated bytes for code 196 (MethodHash=caadfc9f) for method Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -127,7 +118,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 55 (0x00037) Actual length = 220 (0x0000dc)
+ Function Length : 49 (0x00031) Actual length = 196 (0x0000c4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-10.91%) : 93406.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System._Canon]:getHasAnyApplicableMember():ubyte:this (Tier1)
@@ -5,7 +5,7 @@
; optimized using Dynamic PGO
; fp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 5158
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 5158
; 1 inlinees with PGO data; 6 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
@@ -19,7 +19,7 @@
;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]>
;* V09 tmp5 [V09 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V10 tmp6 [V10,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V10 tmp6 [V10,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V11 tmp7 [V11,T08] ( 3, 3 ) ubyte -> x0 "Inline stloc first use temp"
;* V12 tmp8 [V12 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V13 tmp9 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]>
@@ -29,16 +29,16 @@
;* V17 tmp13 [V17 ] ( 0, 0 ) ubyte -> zero-ref "V03.[004..005)"
;* V18 cse0 [V18,T12] ( 0, 0 ) long -> zero-ref hoist "CSE - aggressive"
; V19 cse1 [V19,T07] ( 3, 3 ) ref -> x0 "CSE - aggressive"
-; V20 cse2 [V20,T06] ( 2, 2 ) long -> x22 "CSE - aggressive"
-; V21 rat0 [V21,T04] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
+; V20 cse2 [V20,T06] ( 1, 1 ) long -> x22 "CSE - aggressive"
+;* V21 rat0 [V21,T04] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V22 rat1 [V22,T05] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V23 rat2 [V23,T01] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
-;* V24 rat3 [V24,T11] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V23 rat2 [V23,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+;* V24 rat3 [V24,T10] ( 0, 0 ) long -> zero-ref "runtime lookup"
;* V25 rat4 [V25,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 96
-G_M864_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M864_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x90]!
stp x19, x20, [sp, #0x70]
stp x21, x22, [sp, #0x80]
@@ -52,7 +52,7 @@ G_M864_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n
mov x19, x0
; gcrRegs +[x19]
;; size=44 bbWeight=1 PerfScore 9.00
-G_M864_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M864_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:GetEnumerator():Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1+Enumerator[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:this
@@ -65,16 +65,15 @@ G_M864_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byre
; gcrRegs +[x20]
mov w21, w1
ldr x22, [x19]
- mov x0, x22
+ ;; size=40 bbWeight=1 PerfScore 15.50
+G_M864_IG03: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x40]
- cbz x0, G_M864_IG05
- b G_M864_IG05
- ;; size=64 bbWeight=1 PerfScore 27.00
-G_M864_IG03: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
+ add w21, w21, #1
+ ldr x0, [x20, #0x08]
; gcrRegs +[x0]
+ ldr w8, [x0, #0x10]
+ cmp w21, w8
+ bge G_M864_IG05
add x8, fp, #24 // [V02 loc1]
mov w1, w21
movz x2, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:get_Item(int):Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]:this
@@ -88,35 +87,27 @@ G_M864_IG03: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000
sub w0, w0, #22
cmp w1, #1
ccmp w0, #1, z, hi
- bhi G_M864_IG05
+ bhi G_M864_IG03
mov w0, #1
- ;; size=56 bbWeight=1 PerfScore 12.00
+ ;; size=76 bbWeight=1 PerfScore 20.00
G_M864_IG04: ; bbWeight=1, epilog, nogc, extend
ldp x21, x22, [sp, #0x80]
ldp x19, x20, [sp, #0x70]
ldp fp, lr, [sp], #0x90
ret lr
;; size=16 bbWeight=1 PerfScore 4.00
-G_M864_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
- add w21, w21, #1
- ldr x0, [x20, #0x08]
- ; gcrRegs +[x0]
- ldr w8, [x0, #0x10]
- cmp w21, w8
- blt G_M864_IG03
- ;; size=20 bbWeight=1 PerfScore 8.00
-G_M864_IG06: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0 x20]
+G_M864_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x20]
mov w0, wzr
;; size=4 bbWeight=0 PerfScore 0.00
-G_M864_IG07: ; bbWeight=0, epilog, nogc, extend
+G_M864_IG06: ; bbWeight=0, epilog, nogc, extend
ldp x21, x22, [sp, #0x80]
ldp x19, x20, [sp, #0x70]
ldp fp, lr, [sp], #0x90
ret lr
;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 220, prolog size 40, PerfScore 60.00, instruction count 55, allocated bytes for code 220 (MethodHash=caadfc9f) for method Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (Tier1)
+; Total bytes of code 196, prolog size 40, PerfScore 48.50, instruction count 49, allocated bytes for code 196 (MethodHash=caadfc9f) for method Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -127,7 +118,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 55 (0x00037) Actual length = 220 (0x0000dc)
+ Function Length : 49 (0x00031) Actual length = 196 (0x0000c4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+28 (+25.00%) : 91905.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.Canon,System.Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (Tier1)
@@ -5,25 +5,25 @@
; optimized using Dynamic PGO
; fp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 369344
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 369344
; 1 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 4, 4 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
+; V00 this [V00,T00] ( 5, 5 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T03] ( 3, 3 ) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.MetadataReference>
-; V02 loc0 [V02,T05] ( 3, 3 ) int -> x0 ld-addr-op
+; V02 loc0 [V02,T05] ( 3, 3 ) int -> x1 ld-addr-op
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
;* V04 loc2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-;* V07 tmp2 [V07,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V07 tmp2 [V07,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V08 tmp3 [V08,T01] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.MetadataReference,int]>
; V09 tmp4 [V09,T06] ( 3, 3 ) byref -> x0 single-def "Inline stloc first use temp"
;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V11 tmp6 [V11,T07] ( 3, 3 ) ref -> x1 single-def "field V04.array (fldOffset=0x0)" P-INDEP
-;* V12 rat0 [V12,T04] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V13 rat1 [V13,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V14 rat2 [V14,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V11 tmp6 [V11,T07] ( 3, 3 ) ref -> x2 single-def "field V04.array (fldOffset=0x0)" P-INDEP
+; V12 rat0 [V12,T04] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
+;* V13 rat1 [V13,T08] ( 0, 0 ) long -> zero-ref "runtime lookup"
+; V14 rat2 [V14,T02] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -31,9 +31,10 @@ G_M43979_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x20]!
str x19, [sp, #0x18]
mov fp, sp
+ str x0, [fp, #0x10]
mov x19, x0
; gcrRegs +[x19]
- ;; size=16 bbWeight=1 PerfScore 3.00
+ ;; size=20 bbWeight=1 PerfScore 4.00
G_M43979_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
ldr x0, [x19, #0x20]
@@ -47,40 +48,51 @@ G_M43979_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {},
; gcrRegs -[x0-x1]
; byrRegs +[x0]
cbz x0, G_M43979_IG04
- ldr w0, [x0]
+ ldr w1, [x0]
+ ldr x2, [x19, #0x80]
+ ; gcrRegs +[x2]
+ ldr x0, [x19]
; byrRegs -[x0]
- ldr x1, [x19, #0x80]
- ; gcrRegs +[x1]
- ldr w2, [x1, #0x08]
- cmp w0, w2
- bhs G_M43979_IG06
- add x1, x1, #16
- ; gcrRegs -[x1]
- ; byrRegs +[x1]
- ldr x0, [x1, w0, UXTW #3]
- ; gcrRegs +[x0]
- ;; size=60 bbWeight=1 PerfScore 26.50
-G_M43979_IG03: ; bbWeight=1, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=1 PerfScore 4.00
-G_M43979_IG04: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0]
- ; byrRegs -[x1]
+ ldr x0, [x0, #0x38]
+ ldr x0, [x0]
+ ldr x0, [x0, #0xD1FFAB1E]
+ cbnz x0, G_M43979_IG06
+ ;; size=60 bbWeight=1 PerfScore 31.50
+G_M43979_IG03: ; bbWeight=0.20, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref
+ b G_M43979_IG06
+ ;; size=4 bbWeight=0.20 PerfScore 0.20
+G_M43979_IG04: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x2]
mov x0, xzr
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M43979_IG05: ; bbWeight=1, epilog, nogc, extend
+ ;; size=4 bbWeight=0.00 PerfScore 0.00
+G_M43979_IG05: ; bbWeight=0.00, epilog, nogc, extend
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.00 PerfScore 0.01
+G_M43979_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x2]
+ ldr w0, [x2, #0x08]
+ cmp w1, w0
+ bhs G_M43979_IG08
+ add x0, x2, #16
+ ; byrRegs +[x0]
+ ldr x0, [x0, w1, UXTW #3]
+ ; gcrRegs +[x0]
+ ; byrRegs -[x0]
+ ;; size=20 bbWeight=1 PerfScore 8.00
+G_M43979_IG07: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-G_M43979_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M43979_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0 x2]
bl CORINFO_HELP_RNGCHKFAIL
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 112, prolog size 12, PerfScore 38.00, instruction count 28, allocated bytes for code 112 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (Tier1)
+; Total bytes of code 140, prolog size 16, PerfScore 47.71, instruction count 35, allocated bytes for code 140 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (Tier1)
; ============================================================
Unwind Info:
@@ -91,7 +103,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+24 (+25.00%) : 326553.dasm - System.IO.Pipelines.Pipe:CreateSegmentUnsynchronized():System.IO.Pipelines.BufferSegment:this (Tier1)
@@ -10,41 +10,61 @@
; Final local variable assignments
;
; V00 this [V00,T01] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.IO.Pipelines.Pipe>
-; V01 loc0 [V01,T05] ( 2, 2 ) ref -> x1 ld-addr-op class-hnd <System.IO.Pipelines.BufferSegment>
+; V01 loc0 [V01,T05] ( 2, 0.53) ref -> x1 ld-addr-op class-hnd <System.IO.Pipelines.BufferSegment>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.IO.Pipelines.BufferSegment>
-;* V04 tmp2 [V04,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V05 tmp3 [V05,T00] ( 4, 8 ) byref -> x0 single-def "Inlining Arg"
-; V06 tmp4 [V06,T02] ( 4, 4 ) int -> x1 single-def "Inline stloc first use temp"
-; V07 tmp5 [V07,T03] ( 3, 3 ) ref -> x2 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+;* V04 tmp2 [V04,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V05 tmp3 [V05,T00] ( 4, 6.53) byref -> x19 single-def "Inlining Arg"
+; V06 tmp4 [V06,T02] ( 4, 2.53) int -> x20 single-def "Inline stloc first use temp"
+; V07 tmp5 [V07,T03] ( 3, 2.26) ref -> x21 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
;* V08 tmp6 [V08 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.IO.Pipelines.BufferSegmentStack+SegmentAsValueType>
-; V09 tmp7 [V09,T06] ( 2, 2 ) ref -> x1 single-def "field V08._value (fldOffset=0x0)" P-INDEP
-; V10 cse0 [V10,T04] ( 3, 3 ) byref -> x0 "CSE - aggressive"
-; V11 cse1 [V11,T07] ( 2, 2 ) int -> x3 "CSE - aggressive"
+; V09 tmp7 [V09,T08] ( 2, 0.53) ref -> x1 single-def "field V08._value (fldOffset=0x0)" P-INDEP
+; V10 cse0 [V10,T07] ( 3, 0.79) byref -> x0 "CSE - conservative"
+; V11 cse1 [V11,T04] ( 2, 2 ) int -> x0 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M7578_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x30]!
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=16 bbWeight=1 PerfScore 3.50
G_M7578_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
- add x0, x0, #112
+ add x19, x0, #112
+ ; byrRegs +[x19]
+ ldr w0, [x19, #0x08]
; gcrRegs -[x0]
- ; byrRegs +[x0]
- ldr w1, [x0, #0x08]
- sub w1, w1, #1
- ldr x2, [x0]
- ; gcrRegs +[x2]
- ldr w3, [x2, #0x08]
- cmp w3, w1
- bls G_M7578_IG04
- str w1, [x0, #0x08]
- ubfiz x0, x1, #3, #32
- ; byrRegs -[x0]
+ sub w20, w0, #1
+ ldr x21, [x19]
+ ; gcrRegs +[x21]
+ ldr w0, [x21, #0x08]
+ cmp w0, w20
+ bhi G_M7578_IG05
+ ;; size=28 bbWeight=1 PerfScore 11.50
+G_M7578_IG03: ; bbWeight=0.76, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x21]
+ ; byrRegs -[x19]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_NEWSFAST
+ ; gcrRegs +[x0]
+ ;; size=16 bbWeight=0.76 PerfScore 1.90
+G_M7578_IG04: ; bbWeight=0.76, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
+ ret lr
+ ;; size=16 bbWeight=0.76 PerfScore 3.80
+G_M7578_IG05: ; bbWeight=0.26, gcVars=0000000000000000 {}, gcrefRegs=200000 {x21}, byrefRegs=80000 {x19}, gcvars, byref
+ ; gcrRegs -[x0] +[x21]
+ ; byrRegs +[x19]
+ str w20, [x19, #0x08]
+ ubfiz x0, x20, #3, #32
add x0, x0, #16
- add x0, x2, x0
+ add x0, x21, x0
; byrRegs +[x0]
ldr x1, [x0]
; gcrRegs +[x1]
@@ -52,36 +72,26 @@ G_M7578_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
mov x0, x1
; gcrRegs +[x0]
; byrRegs -[x0]
- ;; size=56 bbWeight=1 PerfScore 19.00
-G_M7578_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ;; size=28 bbWeight=0.26 PerfScore 1.98
+G_M7578_IG06: ; bbWeight=0.26, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
-G_M7578_IG04: ; bbWeight=0.74, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0-x2]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_NEWSFAST
- ; gcrRegs +[x0]
- ;; size=16 bbWeight=0.74 PerfScore 1.84
-G_M7578_IG05: ; bbWeight=0.74, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.74 PerfScore 1.47
+ ;; size=16 bbWeight=0.26 PerfScore 1.32
-; Total bytes of code 96, prolog size 8, PerfScore 25.81, instruction count 24, allocated bytes for code 96 (MethodHash=aabee265) for method System.IO.Pipelines.Pipe:CreateSegmentUnsynchronized():System.IO.Pipelines.BufferSegment:this (Tier1)
+; Total bytes of code 120, prolog size 16, PerfScore 24.00, instruction count 30, allocated bytes for code 120 (MethodHash=aabee265) for method System.IO.Pipelines.Pipe:CreateSegmentUnsynchronized():System.IO.Pipelines.BufferSegment:this (Tier1)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 24 (0x00018) Actual length = 96 (0x000060)
+ Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -92,7 +102,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
+28 (+25.00%) : 57514.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.Canon,System.Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (Tier1)
@@ -5,25 +5,25 @@
; optimized using Dynamic PGO
; fp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 61536
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 61536
; 1 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 4, 4 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
+; V00 this [V00,T00] ( 5, 5 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T03] ( 3, 3 ) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.MetadataReference>
-; V02 loc0 [V02,T05] ( 3, 3 ) int -> x0 ld-addr-op
+; V02 loc0 [V02,T05] ( 3, 3 ) int -> x1 ld-addr-op
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
;* V04 loc2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-;* V07 tmp2 [V07,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V07 tmp2 [V07,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V08 tmp3 [V08,T01] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.MetadataReference,int]>
; V09 tmp4 [V09,T06] ( 3, 3 ) byref -> x0 single-def "Inline stloc first use temp"
;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V11 tmp6 [V11,T07] ( 3, 3 ) ref -> x1 single-def "field V04.array (fldOffset=0x0)" P-INDEP
-;* V12 rat0 [V12,T04] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V13 rat1 [V13,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V14 rat2 [V14,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V11 tmp6 [V11,T07] ( 3, 3 ) ref -> x2 single-def "field V04.array (fldOffset=0x0)" P-INDEP
+; V12 rat0 [V12,T04] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
+;* V13 rat1 [V13,T08] ( 0, 0 ) long -> zero-ref "runtime lookup"
+; V14 rat2 [V14,T02] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -31,9 +31,10 @@ G_M43979_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x20]!
str x19, [sp, #0x18]
mov fp, sp
+ str x0, [fp, #0x10]
mov x19, x0
; gcrRegs +[x19]
- ;; size=16 bbWeight=1 PerfScore 3.00
+ ;; size=20 bbWeight=1 PerfScore 4.00
G_M43979_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
ldr x0, [x19, #0x20]
@@ -47,40 +48,51 @@ G_M43979_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {},
; gcrRegs -[x0-x1]
; byrRegs +[x0]
cbz x0, G_M43979_IG04
- ldr w0, [x0]
+ ldr w1, [x0]
+ ldr x2, [x19, #0x80]
+ ; gcrRegs +[x2]
+ ldr x0, [x19]
; byrRegs -[x0]
- ldr x1, [x19, #0x80]
- ; gcrRegs +[x1]
- ldr w2, [x1, #0x08]
- cmp w0, w2
- bhs G_M43979_IG06
- add x1, x1, #16
- ; gcrRegs -[x1]
- ; byrRegs +[x1]
- ldr x0, [x1, w0, UXTW #3]
- ; gcrRegs +[x0]
- ;; size=60 bbWeight=1 PerfScore 26.50
-G_M43979_IG03: ; bbWeight=1, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=1 PerfScore 4.00
-G_M43979_IG04: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0]
- ; byrRegs -[x1]
+ ldr x0, [x0, #0x38]
+ ldr x0, [x0]
+ ldr x0, [x0, #0xD1FFAB1E]
+ cbnz x0, G_M43979_IG06
+ ;; size=60 bbWeight=1 PerfScore 31.50
+G_M43979_IG03: ; bbWeight=0.20, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref
+ b G_M43979_IG06
+ ;; size=4 bbWeight=0.20 PerfScore 0.20
+G_M43979_IG04: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x2]
mov x0, xzr
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M43979_IG05: ; bbWeight=1, epilog, nogc, extend
+ ;; size=4 bbWeight=0.00 PerfScore 0.00
+G_M43979_IG05: ; bbWeight=0.00, epilog, nogc, extend
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.00 PerfScore 0.00
+G_M43979_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x2]
+ ldr w0, [x2, #0x08]
+ cmp w1, w0
+ bhs G_M43979_IG08
+ add x0, x2, #16
+ ; byrRegs +[x0]
+ ldr x0, [x0, w1, UXTW #3]
+ ; gcrRegs +[x0]
+ ; byrRegs -[x0]
+ ;; size=20 bbWeight=1 PerfScore 8.00
+G_M43979_IG07: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-G_M43979_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M43979_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0 x2]
bl CORINFO_HELP_RNGCHKFAIL
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 112, prolog size 12, PerfScore 38.00, instruction count 28, allocated bytes for code 112 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (Tier1)
+; Total bytes of code 140, prolog size 16, PerfScore 47.70, instruction count 35, allocated bytes for code 140 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (Tier1)
; ============================================================
Unwind Info:
@@ -91,7 +103,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
librariestestsnotieredcompilation.run.linux.arm64.Release.mch
-28 (-3.74%) : 190826.dasm - System.Runtime.Loader.Tests.RefEmitLoadContextTests:Init() (FullOpts)
@@ -9,39 +9,42 @@
; Final local variable assignments
;
;* V00 loc0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.String>
-; V01 loc1 [V01,T00] ( 9, 6.94) ref -> registers class-hnd <System.String>
+; V01 loc1 [V01,T00] ( 9, 6.94) ref -> x21 class-hnd <System.String>
; V02 loc2 [V02,T10] ( 5, 3.47) ref -> x20 class-hnd exact single-def <System.String>
-; V03 loc3 [V03,T14] ( 2, 2 ) ref -> x20 class-hnd exact single-def <System.Reflection.AssemblyName>
-; V04 loc4 [V04,T11] ( 5, 3.47) ref -> x19 class-hnd exact single-def <System.String>
+; V03 loc3 [V03,T17] ( 2, 2 ) ref -> x21 class-hnd exact single-def <System.Reflection.AssemblyName>
+; V04 loc4 [V04,T11] ( 5, 3.47) ref -> x20 class-hnd exact single-def <System.String>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.IO.DirectoryInfo>
;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
-;* V09 tmp4 [V09,T17] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V10 tmp5 [V10,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V11 tmp6 [V11,T15] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.Reflection.TypeInfo>
+;* V09 tmp4 [V09,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V10 tmp5 [V10,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V11 tmp6 [V11,T18] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.Reflection.TypeInfo>
;* V12 tmp7 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
;* V13 tmp8 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Reflection.TypeDelegator>
-;* V14 tmp9 [V14,T16] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.Reflection.TypeInfo>
+;* V14 tmp9 [V14,T19] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.Reflection.TypeInfo>
;* V15 tmp10 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
;* V16 tmp11 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Reflection.TypeDelegator>
;* V17 tmp12 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
-;* V18 tmp13 [V18,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V19 tmp14 [V19,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V18 tmp13 [V18,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V19 tmp14 [V19,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V20 tmp15 [V20,T03] ( 2, 4 ) ref -> x0 single-def "argument with side effect"
-; V21 tmp16 [V21,T21] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
+; V21 tmp16 [V21,T24] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
; V22 tmp17 [V22,T04] ( 2, 4 ) ref -> x20 single-def "argument with side effect"
; V23 tmp18 [V23,T05] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
; V24 tmp19 [V24,T01] ( 3, 6 ) ref -> x0 single-def "argument with side effect"
; V25 tmp20 [V25,T02] ( 3, 6 ) ref -> x0 single-def "argument with side effect"
; V26 tmp21 [V26,T06] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V27 tmp22 [V27,T07] ( 2, 4 ) ref -> x21 single-def "argument with side effect"
-; V28 tmp23 [V28,T22] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V29 tmp24 [V29,T23] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V30 tmp25 [V30,T08] ( 2, 4 ) ref -> x19 single-def "argument with side effect"
+; V27 tmp22 [V27,T07] ( 2, 4 ) ref -> x19 single-def "argument with side effect"
+; V28 tmp23 [V28,T25] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
+; V29 tmp24 [V29,T26] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
+; V30 tmp25 [V30,T08] ( 2, 4 ) ref -> x20 single-def "argument with side effect"
; V31 tmp26 [V31,T09] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
; V32 cse0 [V32,T12] ( 3, 3 ) ref -> x0 "CSE - aggressive"
-; V33 cse1 [V33,T13] ( 3, 3 ) long -> x19 "CSE - aggressive"
+; V33 cse1 [V33,T15] ( 3, 3 ) long -> x20 "CSE - aggressive"
+; V34 cse2 [V34,T16] ( 3, 3 ) long -> x19 "CSE - aggressive"
+; V35 cse3 [V35,T13] ( 3, 3 ) ref -> x20 "CSE - aggressive"
+;* V36 cse4 [V36,T14] ( 0, 0 ) ref -> zero-ref "CSE - aggressive"
;
; Lcl frame size = 8
@@ -60,23 +63,27 @@ G_M37134_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
blr x1
; gcrRegs +[x0]
ldr x0, [x0, #0x08]
- movz x14, #0xD1FFAB1E // data for <unknown class>:<unknown field>
- movk x14, #0xD1FFAB1E LSL #16
- movk x14, #0xD1FFAB1E LSL #32
+ movz x19, #0xD1FFAB1E // data for <unknown class>:<unknown field>
+ movk x19, #0xD1FFAB1E LSL #16
+ movk x19, #0xD1FFAB1E LSL #32
+ mov x14, x19
mov x15, x0
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
+ movz x20, #0xD1FFAB1E
+ movk x20, #0xD1FFAB1E LSL #16
+ movk x20, #0xD1FFAB1E LSL #32
+ mov x1, x20
+ ; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for System.IO.Path:Combine(System.String,System.String):System.String
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
- mov x19, x0
- ; gcrRegs +[x19]
+ ; gcrRegs -[x1] +[x20]
+ mov x21, x0
+ ; gcrRegs +[x21]
movz x0, #0xD1FFAB1E // code for <unknown method>
; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
@@ -84,31 +91,31 @@ G_M37134_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldr x0, [x0]
blr x0
; gcrRegs +[x0]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
+ mov x1, x20
+ ; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for System.IO.Path:Combine(System.String,System.String):System.String
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
+ ; gcrRegs -[x1 x20]
mov x20, x0
; gcrRegs +[x20]
cbz x20, G_M37134_IG14
;; size=144 bbWeight=1 PerfScore 33.50
-G_M37134_IG03: ; bbWeight=0.47, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M37134_IG03: ; bbWeight=0.47, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
ldr w0, [x20, #0x08]
cbz w0, G_M37134_IG14
;; size=8 bbWeight=0.47 PerfScore 1.87
-G_M37134_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M37134_IG16
+G_M37134_IG04: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+ cbz x21, G_M37134_IG13
;; size=4 bbWeight=1 PerfScore 1.00
-G_M37134_IG05: ; bbWeight=0.47, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr w0, [x19, #0x08]
- cbz w0, G_M37134_IG16
+G_M37134_IG05: ; bbWeight=0.47, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+ ldr w0, [x21, #0x08]
+ cbz w0, G_M37134_IG13
;; size=8 bbWeight=0.47 PerfScore 1.87
-G_M37134_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M37134_IG06: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
mov x0, x20
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.IO.Path:GetFullPath(System.String):System.String
@@ -119,13 +126,13 @@ G_M37134_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
; gcrRegs -[x20]
mov x20, x0
; gcrRegs +[x20]
- mov x0, x19
+ mov x0, x21
movz x1, #0xD1FFAB1E // code for System.IO.Path:GetFullPath(System.String):System.String
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
- ; gcrRegs -[x19]
+ ; gcrRegs -[x21]
mov x1, x0
; gcrRegs +[x1]
mov x0, x20
@@ -142,37 +149,32 @@ G_M37134_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
- ldr x19, [x1]
- ldr x1, [x19, #0x28]
+ ldr x20, [x1]
+ ldr x1, [x20, #0x28]
blr x1
; gcrRegs +[x0]
ldr x1, [x0]
ldr x1, [x1, #0x58]
ldr x1, [x1, #0x28]
blr x1
- mov x20, x0
- ; gcrRegs +[x20]
+ mov x21, x0
+ ; gcrRegs +[x21]
movz x0, #0xD1FFAB1E
; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
- ldr x1, [x19, #0x28]
+ ldr x1, [x20, #0x28]
blr x1
; gcrRegs +[x0]
ldr x1, [x0]
ldr x1, [x1, #0x50]
ldr x1, [x1, #0x30]
blr x1
- mov x19, x0
+ mov x20, x0
+ ; gcrRegs +[x20]
+ ldr x19, [x19]
; gcrRegs +[x19]
- movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
- ; gcrRegs -[x0]
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- ldr x21, [x0]
- ; gcrRegs +[x21]
- ldr x0, [x20, #0x08]
- ; gcrRegs +[x0]
+ ldr x0, [x21, #0x08]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -181,53 +183,53 @@ G_M37134_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
- ; gcrRegs -[x20]
+ ; gcrRegs -[x21]
mov x1, x0
; gcrRegs +[x1]
- mov x0, x21
+ mov x0, x19
movz x2, #0xD1FFAB1E // code for System.IO.Path:Combine(System.String,System.String):System.String
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
- ; gcrRegs -[x1 x21]
- mov x20, x0
- ; gcrRegs +[x20]
- cbz x19, G_M37134_IG15
- ;; size=268 bbWeight=1 PerfScore 78.50
-G_M37134_IG07: ; bbWeight=0.47, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x1 x19]
+ mov x21, x0
+ ; gcrRegs +[x21]
+ cbz x20, G_M37134_IG12
+ ;; size=256 bbWeight=1 PerfScore 77.00
+G_M37134_IG07: ; bbWeight=0.47, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ldr w0, [x19, #0x08]
- cbz w0, G_M37134_IG15
- ;; size=8 bbWeight=0.47 PerfScore 1.87
-G_M37134_IG08: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M37134_IG13
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M37134_IG09: ; bbWeight=0.47, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w0, [x20, #0x08]
cbz w0, G_M37134_IG12
;; size=8 bbWeight=0.47 PerfScore 1.87
-G_M37134_IG10: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- mov x0, x19
+G_M37134_IG08: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+ cbz x21, G_M37134_IG13
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M37134_IG09: ; bbWeight=0.47, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+ ldr w0, [x21, #0x08]
+ cbz w0, G_M37134_IG13
+ ;; size=8 bbWeight=0.47 PerfScore 1.87
+G_M37134_IG10: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+ mov x0, x20
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.IO.Path:GetFullPath(System.String):System.String
...
-12 (-3.70%) : 224517.dasm - System.Security.Cryptography.X509Certificates.Tests.ExtensionsTests.AuthorityKeyIdentifierTests+<>cDisplayClass15_0:b1():System.Object:this (FullOpts)
@@ -31,8 +31,8 @@
;* V20 tmp19 [V20 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
; V21 tmp20 [V21 ] ( 2, 3 ) byref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V11._reference (fldOffset=0x0)" P-DEP
; V22 tmp21 [V22 ] ( 2, 3 ) int -> [fp+0x20] do-not-enreg[X] addr-exposed "field V11._length (fldOffset=0x8)" P-DEP
-; V23 tmp22 [V23,T08] ( 3, 1.50) byref -> registers "field V14._reference (fldOffset=0x0)" P-INDEP
-; V24 tmp23 [V24,T10] ( 3, 1.50) int -> registers "field V14._length (fldOffset=0x8)" P-INDEP
+; V23 tmp22 [V23,T08] ( 3, 1.50) byref -> x2 "field V14._reference (fldOffset=0x0)" P-INDEP
+; V24 tmp23 [V24,T10] ( 3, 1.50) int -> x0 "field V14._length (fldOffset=0x8)" P-INDEP
; V25 tmp24 [V25,T12] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
;
; Lcl frame size = 24
@@ -132,11 +132,10 @@ G_M46829_IG09: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, b
G_M46829_IG10: ; bbWeight=0.44, gcrefRegs=200002 {x1 x21}, byrefRegs=0000 {}, byref
add x2, x1, #16
; byrRegs +[x2]
- ldr w1, [x1, #0x08]
- ; gcrRegs -[x1]
- sxtw w0, w1
- ;; size=12 bbWeight=0.44 PerfScore 1.78
+ ldr w0, [x1, #0x08]
+ ;; size=8 bbWeight=0.44 PerfScore 1.56
G_M46829_IG11: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0004 {x2}, byref
+ ; gcrRegs -[x1]
mov x1, x2
; byrRegs +[x1]
mov w2, w0
@@ -161,17 +160,14 @@ G_M46829_IG12: ; bbWeight=1, epilog, nogc, extend
;; size=16 bbWeight=1 PerfScore 5.00
G_M46829_IG13: ; bbWeight=0.06, gcVars=0000000000000000 {}, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
- mov x1, xzr
- ; byrRegs +[x1]
- mov w2, wzr
- mov w0, w2
- mov x2, x1
+ mov x2, xzr
; byrRegs +[x2]
+ mov w0, wzr
b G_M46829_IG11
- ;; size=20 bbWeight=0.06 PerfScore 0.17
+ ;; size=12 bbWeight=0.06 PerfScore 0.11
G_M46829_IG14: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x21] +[x19]
- ; byrRegs -[x1-x2]
+ ; byrRegs -[x2]
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -190,7 +186,7 @@ G_M46829_IG14: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
brk_unix #0
;; size=52 bbWeight=0 PerfScore 0.00
-; Total bytes of code 324, prolog size 20, PerfScore 58.74, instruction count 81, allocated bytes for code 324 (MethodHash=b70f4912) for method System.Security.Cryptography.X509Certificates.Tests.ExtensionsTests.AuthorityKeyIdentifierTests+<>c__DisplayClass15_0:<DecodeInvalid>b__1():System.Object:this (FullOpts)
+; Total bytes of code 312, prolog size 20, PerfScore 58.46, instruction count 78, allocated bytes for code 312 (MethodHash=b70f4912) for method System.Security.Cryptography.X509Certificates.Tests.ExtensionsTests.AuthorityKeyIdentifierTests+<>c__DisplayClass15_0:<DecodeInvalid>b__1():System.Object:this (FullOpts)
; ============================================================
Unwind Info:
@@ -201,7 +197,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 81 (0x00051) Actual length = 324 (0x000144)
+ Function Length : 78 (0x0004e) Actual length = 312 (0x000138)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-8 (-3.64%) : 8225.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceParameterSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Predicate`1[Microsoft.CodeAnalysis.CSharp.Symbol],System.Threading.CancellationToken):this (FullOpts)
@@ -18,7 +18,7 @@
;* V07 tmp3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
; V08 tmp4 [V08 ] ( 3, 5 ) struct ( 8) [fp+0x18] do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.SpinWait>
; V09 tmp5 [V09 ] ( 4, 10.35) struct ( 8) [fp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <System.Threading.CancellationToken>
-;* V10 tmp6 [V10,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V10 tmp6 [V10,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V11 tmp7 [V11,T06] ( 2, 2.71) ref -> x0 class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource>
;* V12 tmp8 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V13 tmp9 [V13,T01] ( 3, 26 ) byref -> x20 single-def "Inlining Arg"
@@ -28,7 +28,7 @@
;* V17 tmp13 [V17 ] ( 0, 0 ) ref -> zero-ref "field V06.array (fldOffset=0x0)" P-INDEP
; V18 tmp14 [V18 ] ( 3, 5 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V08._count (fldOffset=0x0)" P-DEP
; V19 tmp15 [V19 ] ( 4, 5.18) ref -> [fp+0x10] do-not-enreg[X] addr-exposed "field V09._source (fldOffset=0x0)" P-DEP
-; V20 tmp16 [V20,T08] ( 2, 1 ) ref -> x0 single-def "Field obj"
+; V20 tmp16 [V20,T07] ( 2, 1 ) ref -> x0 single-def "Field obj"
;
; Lcl frame size = 16
@@ -45,7 +45,7 @@ G_M61615_IG02: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {},
add x20, x0, #48
; byrRegs +[x20]
ldapr w1, [x20]
- tbnz w1, #0, G_M61615_IG06
+ tbnz w1, #0, G_M61615_IG07
;; size=12 bbWeight=1 PerfScore 4.50
G_M61615_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=100000 {x20}, byref, isz
ldr x1, [x0]
@@ -58,19 +58,29 @@ G_M61615_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=10000
str wzr, [fp, #0x18] // [V08 tmp4]
ldapr w0, [x20]
; gcrRegs -[x0]
- tbnz w0, #0, G_M61615_IG06
+ tbnz w0, #0, G_M61615_IG07
str wzr, [fp, #0x18] // [V08 tmp4]
ldapr w0, [x20]
- tbnz w0, #0, G_M61615_IG06
+ tbnz w0, #0, G_M61615_IG07
;; size=48 bbWeight=0.50 PerfScore 12.00
G_M61615_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
; gcrRegs -[x19]
ldr x0, [fp, #0x10] // [V19 tmp15]
; gcrRegs +[x0]
- cbnz x0, G_M61615_IG07
+ cbz x0, G_M61615_IG06
;; size=8 bbWeight=4 PerfScore 12.00
-G_M61615_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
+G_M61615_IG05: ; bbWeight=0.68, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
; gcrRegs -[x0]
+ ldr x0, [fp, #0x10] // [V19 tmp15]
+ ; gcrRegs +[x0]
+ add x0, x0, #32
+ ; gcrRegs -[x0]
+ ; byrRegs +[x0]
+ ldapr w0, [x0]
+ ; byrRegs -[x0]
+ cbnz w0, G_M61615_IG10
+ ;; size=16 bbWeight=0.68 PerfScore 4.40
+G_M61615_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
add x0, fp, #24 // [V08 tmp4]
mov w1, #20
movz x2, #0xD1FFAB1E // code for <unknown method>
@@ -82,39 +92,25 @@ G_M61615_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, b
ldapr w0, [x20]
tbz w0, #0, G_M61615_IG04
;; size=36 bbWeight=4 PerfScore 42.00
-G_M61615_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref
- b G_M61615_IG08
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M61615_IG07: ; bbWeight=0.68, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
- ldr x0, [fp, #0x10] // [V19 tmp15]
- ; gcrRegs +[x0]
- add x0, x0, #32
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- ldapr w0, [x0]
- ; byrRegs -[x0]
- cbnz w0, G_M61615_IG11
- b G_M61615_IG05
- ;; size=20 bbWeight=0.68 PerfScore 5.08
-G_M61615_IG08: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
+G_M61615_IG07: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
ldr w0, [x20]
orr w1, w0, #0xD1FFAB1E
cmp w1, w0
- beq G_M61615_IG10
+ beq G_M61615_IG09
;; size=16 bbWeight=8 PerfScore 40.00
-G_M61615_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
+G_M61615_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
mov w2, w0
casal w2, w1, [x20]
cmp w2, w0
- bne G_M61615_IG08
+ bne G_M61615_IG07
;; size=16 bbWeight=4 PerfScore 20.00
-G_M61615_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M61615_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x20]
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=1 PerfScore 3.00
-G_M61615_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M61615_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
add x0, fp, #16 // [V09 tmp5]
movz x1, #0xD1FFAB1E // code for System.Threading.CancellationToken:ThrowOperationCanceledException():this
movk x1, #0xD1FFAB1E LSL #16
@@ -125,7 +121,7 @@ G_M61615_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 220, prolog size 20, PerfScore 143.58, instruction count 55, allocated bytes for code 220 (MethodHash=63730f50) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceParameterSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Predicate`1[Microsoft.CodeAnalysis.CSharp.Symbol],System.Threading.CancellationToken):this (FullOpts)
+; Total bytes of code 212, prolog size 20, PerfScore 141.90, instruction count 53, allocated bytes for code 212 (MethodHash=63730f50) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceParameterSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Predicate`1[Microsoft.CodeAnalysis.CSharp.Symbol],System.Threading.CancellationToken):this (FullOpts)
; ============================================================
Unwind Info:
@@ -136,7 +132,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 55 (0x00037) Actual length = 220 (0x0000dc)
+ Function Length : 53 (0x00035) Actual length = 212 (0x0000d4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+12 (+4.23%) : 90675.dasm - System.Data.ExpressionParser:LoadExpression(System.String):this (FullOpts)
@@ -12,12 +12,12 @@
; V01 arg1 [V01,T01] ( 6, 4.50) ref -> x20 class-hnd single-def <System.String>
; V02 loc0 [V02,T03] ( 7, 4.50) int -> x21
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T04] ( 3, 3 ) ref -> x2 class-hnd single-def "Inlining Arg" <ushort[]>
+; V04 tmp1 [V04,T04] ( 3, 3 ) ref -> x22 class-hnd single-def "Inlining Arg" <ushort[]>
;* V05 tmp2 [V05 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V06 tmp3 [V06,T09] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V07 tmp4 [V07,T11] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V08 tmp5 [V08 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
-; V09 tmp6 [V09,T05] ( 4, 2.17) int -> x22 "Inlining Arg"
+; V09 tmp6 [V09,T05] ( 4, 2.17) int -> x23 "Inlining Arg"
;* V10 tmp7 [V10,T10] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V11 tmp8 [V11,T06] ( 2, 2 ) byref -> x0 single-def "Inlining Arg"
; V12 tmp9 [V12,T07] ( 2, 2 ) byref -> x1 single-def "Inlining Arg"
@@ -27,18 +27,19 @@
; V16 tmp13 [V16,T12] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
; V17 tmp14 [V17,T02] ( 3, 6 ) ref -> x0 single-def "arr expr"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M53687_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x10]
- stp x21, x22, [sp, #0x20]
+ stp fp, lr, [sp, #-0x40]!
+ stp x19, x20, [sp, #0x18]
+ stp x21, x22, [sp, #0x28]
+ str x23, [sp, #0x38]
mov fp, sp
mov x19, x0
; gcrRegs +[x19]
mov x20, x1
; gcrRegs +[x20]
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=28 bbWeight=1 PerfScore 5.50
G_M53687_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
cbnz x20, G_M53687_IG04
;; size=4 bbWeight=1 PerfScore 1.00
@@ -58,7 +59,7 @@ G_M53687_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- b G_M53687_IG07
+ b G_M53687_IG06
;; size=40 bbWeight=0.50 PerfScore 3.25
G_M53687_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x20]
@@ -77,39 +78,35 @@ G_M53687_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- ldr x2, [x19, #0x08]
- ; gcrRegs +[x2]
+ ldr x22, [x19, #0x08]
+ ; gcrRegs +[x22]
ldr wzr, [x20, #0x08]
- ldr w0, [x2, #0x08]
- sub w22, w0, w21
- cmp w22, #0
- bgt G_M53687_IG06
+ ldr w2, [x22, #0x08]
+ sub w23, w2, w21
+ cmp w23, #0
+ ble G_M53687_IG09
;; size=64 bbWeight=0.50 PerfScore 9.75
-G_M53687_IG05: ; bbWeight=0.09, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, byref, isz
- tbnz w22, #31, G_M53687_IG11
- ;; size=4 bbWeight=0.09 PerfScore 0.09
-G_M53687_IG06: ; bbWeight=0.50, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, byref
- add x0, x2, #16
+G_M53687_IG05: ; bbWeight=0.50, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref
+ add x0, x22, #16
; byrRegs +[x0]
add x1, x20, #12
; byrRegs +[x1]
mov w2, w21
- ; gcrRegs -[x2]
lsl x2, x2, #1
movz x3, #0xD1FFAB1E // code for <unknown method>
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
- ; gcrRegs -[x20]
+ ; gcrRegs -[x20 x22]
; byrRegs -[x0-x1]
;; size=36 bbWeight=0.50 PerfScore 4.00
-G_M53687_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M53687_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w21, w1
- bhs G_M53687_IG10
+ bhs G_M53687_IG11
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
@@ -117,23 +114,32 @@ G_M53687_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr x0, [x19, #0x28]
; gcrRegs +[x0]
; byrRegs -[x0]
- cbz x0, G_M53687_IG09
+ cbz x0, G_M53687_IG08
;; size=32 bbWeight=1 PerfScore 13.00
-G_M53687_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M53687_IG07: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
str xzr, [x19, #0x28]
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M53687_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M53687_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x19]
- ldp x21, x22, [sp, #0x20]
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x30
+ ldr x23, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=1 PerfScore 4.00
-G_M53687_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=20 bbWeight=1 PerfScore 6.00
+G_M53687_IG09: ; bbWeight=0.09, gcVars=0000000000000000 {}, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x19-x20 x22]
+ tbnz w23, #31, G_M53687_IG12
+ ;; size=4 bbWeight=0.09 PerfScore 0.09
+G_M53687_IG10: ; bbWeight=0.08, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref
+ b G_M53687_IG05
+ ;; size=4 bbWeight=0.08 PerfScore 0.08
+G_M53687_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19-x20 x22]
bl CORINFO_HELP_RNGCHKFAIL
;; size=4 bbWeight=0 PerfScore 0.00
-G_M53687_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M53687_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -142,7 +148,7 @@ G_M53687_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs +[x0]
mov x2, x0
; gcrRegs +[x2]
- mov w1, w22
+ mov w1, w23
mov w0, wzr
; gcrRegs -[x0]
movz x3, #0xD1FFAB1E // code for System.ArgumentOutOfRangeException:ThrowGreater[int](int,int,System.String)
@@ -154,7 +160,7 @@ G_M53687_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=56 bbWeight=0 PerfScore 0.00
-; Total bytes of code 284, prolog size 16, PerfScore 40.09, instruction count 71, allocated bytes for code 284 (MethodHash=6f382e48) for method System.Data.ExpressionParser:LoadExpression(System.String):this (FullOpts)
+; Total bytes of code 296, prolog size 20, PerfScore 43.16, instruction count 74, allocated bytes for code 296 (MethodHash=6f382e48) for method System.Data.ExpressionParser:LoadExpression(System.String):this (FullOpts)
; ============================================================
Unwind Info:
@@ -165,7 +171,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 71 (0x00047) Actual length = 284 (0x00011c)
+ Function Length : 74 (0x0004a) Actual length = 296 (0x000128)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -173,10 +179,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+ D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
- E4 end
- E4 end
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
E4 end
+8 (+4.65%) : 122258.dasm - System.Net.SocketAddress:set_Size(int):this (FullOpts)
@@ -33,23 +33,33 @@ G_M2431_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
ldr w20, [x1, #0x08]
cmp w19, w20
- blt G_M2431_IG04
+ bge G_M2431_IG05
;; size=16 bbWeight=1 PerfScore 7.50
-G_M2431_IG03: ; bbWeight=0.09, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M2431_IG03: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1]
+ tbz w19, #31, G_M2431_IG07
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M2431_IG04: ; bbWeight=0.41, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ b G_M2431_IG10
+ ;; size=4 bbWeight=0.41 PerfScore 0.41
+G_M2431_IG05: ; bbWeight=0.09, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x0]
cmp w19, w20
- bgt G_M2431_IG06
+ bgt G_M2431_IG09
;; size=8 bbWeight=0.09 PerfScore 0.13
-G_M2431_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- tbnz w19, #31, G_M2431_IG07
+G_M2431_IG06: ; bbWeight=0.08, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ b G_M2431_IG03
+ ;; size=4 bbWeight=0.08 PerfScore 0.08
+G_M2431_IG07: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
str w19, [x0, #0x10]
- ;; size=8 bbWeight=1 PerfScore 2.00
-G_M2431_IG05: ; bbWeight=1, epilog, nogc, extend
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M2431_IG08: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 3.00
-G_M2431_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M2431_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
@@ -70,7 +80,7 @@ G_M2431_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
; gcrRegs -[x2]
brk_unix #0
;; size=56 bbWeight=0 PerfScore 0.00
-G_M2431_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M2431_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -91,7 +101,7 @@ G_M2431_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=56 bbWeight=0 PerfScore 0.00
-; Total bytes of code 172, prolog size 12, PerfScore 15.63, instruction count 43, allocated bytes for code 172 (MethodHash=f3e5f680) for method System.Net.SocketAddress:set_Size(int):this (FullOpts)
+; Total bytes of code 180, prolog size 12, PerfScore 16.12, instruction count 45, allocated bytes for code 180 (MethodHash=f3e5f680) for method System.Net.SocketAddress:set_Size(int):this (FullOpts)
; ============================================================
Unwind Info:
@@ -102,7 +112,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
+ Function Length : 45 (0x0002d) Actual length = 180 (0x0000b4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+12 (+7.32%) : 71833.dasm - System.Collections.CaseInsensitiveHashCodeProvider:GetHashCode(System.Object):int:this (FullOpts)
@@ -10,7 +10,7 @@
;
; V00 this [V00,T01] ( 3, 2.50) ref -> x0 this class-hnd single-def <System.Collections.CaseInsensitiveHashCodeProvider>
; V01 arg1 [V01,T00] ( 6, 5 ) ref -> x1 class-hnd single-def <System.Object>
-; V02 loc0 [V02,T04] ( 3, 1.50) ref -> x1 class-hnd exact <System.String>
+; V02 loc0 [V02,T06] ( 3, 1.50) ref -> x1 class-hnd exact <System.String>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String>
; V05 tmp2 [V05,T02] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Globalization.CompareInfo>
@@ -18,8 +18,8 @@
;* V07 tmp4 [V07 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V08 tmp5 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V09 tmp6 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V10 tmp7 [V10,T06] ( 2, 2 ) int -> x1 "Inlining Arg"
-; V11 tmp8 [V11,T05] ( 2, 2 ) byref -> x2 single-def "Inlining Arg"
+; V10 tmp7 [V10,T05] ( 2, 2 ) int -> x1 "Inlining Arg"
+; V11 tmp8 [V11,T04] ( 2, 2 ) byref -> x2 single-def "Inlining Arg"
;* V12 tmp9 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp10 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp11 [V14 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
@@ -31,22 +31,23 @@
; V20 tmp17 [V20,T10] ( 2, 1 ) int -> x1 "field V08._length (fldOffset=0x8)" P-INDEP
;* V21 tmp18 [V21 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP
;* V22 tmp19 [V22 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V23 cse0 [V23,T03] ( 3, 2.50) long -> x2 "CSE - aggressive"
+; V23 cse0 [V23,T03] ( 3, 2.50) long -> x19 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M64002_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M64002_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0-x1]
cbz x1, G_M64002_IG07
- ldr x2, [x1]
- movz x3, #0xD1FFAB1E
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- cmp x2, x3
+ ldr x19, [x1]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ cmp x19, x2
bne G_M64002_IG05
;; size=28 bbWeight=1 PerfScore 7.00
G_M64002_IG03: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
@@ -71,23 +72,25 @@ G_M64002_IG03: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}
; byrRegs -[x1]
;; size=52 bbWeight=0.50 PerfScore 8.50
G_M64002_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M64002_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x1]
mov x0, x1
; gcrRegs +[x0]
- ldr x1, [x2, #0x48]
+ ldr x1, [x19, #0x48]
; gcrRegs -[x1]
ldr x1, [x1, #0x18]
blr x1
; gcrRegs -[x0]
;; size=16 bbWeight=0.50 PerfScore 3.75
G_M64002_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M64002_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
@@ -104,18 +107,18 @@ G_M64002_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=44 bbWeight=0 PerfScore 0.00
-; Total bytes of code 164, prolog size 8, PerfScore 22.75, instruction count 41, allocated bytes for code 164 (MethodHash=067e05fd) for method System.Collections.CaseInsensitiveHashCodeProvider:GetHashCode(System.Object):int:this (FullOpts)
+; Total bytes of code 176, prolog size 12, PerfScore 25.75, instruction count 44, allocated bytes for code 176 (MethodHash=067e05fd) for method System.Collections.CaseInsensitiveHashCodeProvider:GetHashCode(System.Object):int:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -126,7 +129,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
Details
Improvements/regressions per collection
| Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
| benchmarks.run.linux.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| benchmarks.run_pgo.linux.arm64.checked.mch |
10,656 |
5,145 |
2,227 |
3,284 |
-38,160 |
+22,076 |
| benchmarks.run_tiered.linux.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| coreclr_tests.run.linux.arm64.checked.mch |
3,581 |
999 |
1,287 |
1,295 |
-8,448 |
+29,456 |
| libraries.crossgen2.linux.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| libraries.pmi.linux.arm64.checked.mch |
828 |
223 |
203 |
402 |
-1,468 |
+1,604 |
| libraries_tests.run.linux.arm64.Release.mch |
27,151 |
7,580 |
10,577 |
8,994 |
-96,856 |
+460,804 |
| librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
1,608 |
691 |
275 |
642 |
-4,892 |
+2,368 |
| realworld.run.linux.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| smoke_tests.nativeaot.linux.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
|
43,824 |
14,638 |
14,569 |
14,617 |
-149,824 |
+516,308 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.linux.arm64.checked.mch |
36,276 |
3,558 |
32,718 |
0 (0.00%) |
0 (0.00%) |
| benchmarks.run_pgo.linux.arm64.checked.mch |
146,633 |
56,950 |
89,683 |
0 (0.00%) |
51 (0.03%) |
| benchmarks.run_tiered.linux.arm64.checked.mch |
61,277 |
46,296 |
14,981 |
0 (0.00%) |
0 (0.00%) |
| coreclr_tests.run.linux.arm64.checked.mch |
626,879 |
383,514 |
243,365 |
4 (0.00%) |
4 (0.00%) |
| libraries.crossgen2.linux.arm64.checked.mch |
265,498 |
15 |
265,483 |
0 (0.00%) |
0 (0.00%) |
| libraries.pmi.linux.arm64.checked.mch |
297,101 |
6 |
297,095 |
0 (0.00%) |
0 (0.00%) |
| libraries_tests.run.linux.arm64.Release.mch |
729,382 |
487,105 |
242,277 |
0 (0.00%) |
42 (0.01%) |
| librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
305,135 |
21,620 |
283,515 |
0 (0.00%) |
0 (0.00%) |
| realworld.run.linux.arm64.checked.mch |
33,353 |
147 |
33,206 |
0 (0.00%) |
0 (0.00%) |
| smoke_tests.nativeaot.linux.arm64.checked.mch |
19,038 |
7 |
19,031 |
0 (0.00%) |
0 (0.00%) |
|
2,520,572 |
999,218 |
1,521,354 |
4 (0.00%) |
97 (0.00%) |
jit-analyze output
benchmarks.run_pgo.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 74854976 (overridden on cmd)
Total bytes of diff: 74838892 (overridden on cmd)
Total bytes of delta: -16084 (-0.02 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
356 : 87338.dasm (42.38 % of base)
336 : 88274.dasm (39.44 % of base)
256 : 120084.dasm (37.87 % of base)
232 : 28446.dasm (38.93 % of base)
224 : 67266.dasm (37.58 % of base)
220 : 13749.dasm (36.91 % of base)
220 : 41570.dasm (36.91 % of base)
116 : 97706.dasm (15.68 % of base)
108 : 97705.dasm (13.43 % of base)
76 : 87307.dasm (2.71 % of base)
72 : 100273.dasm (1.18 % of base)
72 : 70976.dasm (1.30 % of base)
64 : 145141.dasm (0.71 % of base)
56 : 88530.dasm (0.53 % of base)
56 : 126917.dasm (3.71 % of base)
48 : 87782.dasm (0.80 % of base)
44 : 87504.dasm (1.95 % of base)
44 : 87586.dasm (2.16 % of base)
40 : 114680.dasm (1.27 % of base)
40 : 88183.dasm (1.31 % of base)
Top file improvements (bytes):
-68 : 70766.dasm (-1.63 % of base)
-64 : 93357.dasm (-1.79 % of base)
-60 : 98944.dasm (-1.67 % of base)
-52 : 125857.dasm (-1.34 % of base)
-52 : 130354.dasm (-1.34 % of base)
-52 : 144258.dasm (-1.34 % of base)
-52 : 97002.dasm (-1.47 % of base)
-52 : 90463.dasm (-1.35 % of base)
-52 : 91429.dasm (-1.34 % of base)
-52 : 127303.dasm (-1.33 % of base)
-52 : 136948.dasm (-1.34 % of base)
-52 : 143710.dasm (-1.34 % of base)
-52 : 145561.dasm (-1.34 % of base)
-52 : 40095.dasm (-1.34 % of base)
-48 : 119565.dasm (-6.94 % of base)
-48 : 128721.dasm (-6.94 % of base)
-48 : 30575.dasm (-6.94 % of base)
-48 : 37731.dasm (-6.94 % of base)
-48 : 62015.dasm (-6.94 % of base)
-48 : 95117.dasm (-1.24 % of base)
81 total files with Code Size differences (35 improved, 46 regressed), 20 unchanged.
Top method regressions (bytes):
356 (42.38 % of base) : 87338.dasm - Microsoft.Cci.MetadataVisitor:Visit(System.Collections.Generic.IEnumerable`1[Microsoft.Cci.IMetadataExpression]):this (Tier1)
336 (39.44 % of base) : 88274.dasm - Microsoft.Cci.MetadataVisitor:Visit(System.Collections.Generic.IEnumerable`1[Microsoft.Cci.IMetadataNamedArgument]):this (Tier1)
256 (37.87 % of base) : 120084.dasm - System.Linq.Enumerable:Count[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):int (Tier1)
232 (38.93 % of base) : 28446.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1)
224 (37.58 % of base) : 67266.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1)
220 (36.91 % of base) : 13749.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1)
220 (36.91 % of base) : 41570.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1)
116 (15.68 % of base) : 97706.dasm - System.Collections.Generic.Dictionary`2[System.Reflection.Metadata.NamespaceDefinitionHandle,System.__Canon]:FindValue(System.Reflection.Metadata.NamespaceDefinitionHandle):byref:this (Tier1)
108 (13.43 % of base) : 97705.dasm - System.Collections.Generic.Dictionary`2[System.Reflection.Metadata.NamespaceDefinitionHandle,System.__Canon]:TryGetValue(System.Reflection.Metadata.NamespaceDefinitionHandle,byref):ubyte:this (Tier1)
76 (2.71 % of base) : 87307.dasm - Microsoft.Cci.MemberRefComparer:GetHashCode(Microsoft.Cci.ITypeMemberReference):int:this (Tier1)
72 (1.30 % of base) : 70976.dasm - System.Net.Security.SslStream+<ReadAsyncInternal>d__171`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (Tier1)
72 (1.18 % of base) : 100273.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
64 (0.71 % of base) : 145141.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
56 (0.53 % of base) : 88530.dasm - Microsoft.CodeAnalysis.Compilation:Emit(System.IO.Stream,System.IO.Stream,System.IO.Stream,System.IO.Stream,System.IO.Stream,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.ResourceDescription],Microsoft.CodeAnalysis.Emit.EmitOptions,Microsoft.CodeAnalysis.IMethodSymbol,System.IO.Stream,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.EmbeddedText],Microsoft.CodeAnalysis.RebuildData,Microsoft.CodeAnalysis.CodeGen.CompilationTestData,System.Threading.CancellationToken):Microsoft.CodeAnalysis.Emit.EmitResult:this (Tier1)
56 (3.71 % of base) : 126917.dasm - System.Text.RegularExpressions.RegexCache:Get(System.Text.RegularExpressions.RegexCache+Key):System.Text.RegularExpressions.Regex (Tier1)
48 (0.80 % of base) : 87782.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:BindMethodBody(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.TypeCompilationState,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.BoundNode,ubyte,byref,byref,byref,byref):Microsoft.CodeAnalysis.CSharp.BoundBlock (Tier1)
44 (2.16 % of base) : 87586.dasm - Microsoft.Cci.MetadataWriter:GetCustomAttributeTypeCodedIndex(Microsoft.Cci.IMethodReference):System.Reflection.Metadata.EntityHandle:this (Tier1)
44 (1.95 % of base) : 87504.dasm - Microsoft.Cci.MetadataWriter:GetMethodHandle(Microsoft.Cci.IMethodReference):System.Reflection.Metadata.EntityHandle:this (Tier1)
40 (1.31 % of base) : 88183.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+<Microsoft-Cci-ITypeDefinition-GetExplicitImplementationOverrides>d__30:MoveNext():ubyte:this (Tier1)
40 (1.27 % of base) : 114680.dasm - System.Reflection.CustomAttribute:AddCustomAttributes(byref,System.Reflection.RuntimeModule,int,System.RuntimeType,ubyte,System.RuntimeType+ListBuilder`1[System.Object]) (Tier1)
Top method improvements (bytes):
-68 (-1.63 % of base) : 70766.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)
-64 (-1.79 % of base) : 93357.dasm - System.Reflection.CustomAttribute:AddCustomAttributes(byref,System.Reflection.RuntimeModule,int,System.RuntimeType,ubyte,System.RuntimeType+ListBuilder`1[System.Object]) (Tier1)
-60 (-1.67 % of base) : 98944.dasm - System.Reflection.CustomAttribute:AddCustomAttributes(byref,System.Reflection.RuntimeModule,int,System.RuntimeType,ubyte,System.RuntimeType+ListBuilder`1[System.Object]) (Tier1)
-52 (-1.47 % of base) : 97002.dasm - Microsoft.CodeAnalysis.CSharp.AbstractRegionDataFlowPass:MakeSlots(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol]):this (Tier1)
-52 (-1.34 % of base) : 125857.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)
-52 (-1.34 % of base) : 130354.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)
-52 (-1.34 % of base) : 144258.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)
-52 (-1.35 % of base) : 90463.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)
-52 (-1.34 % of base) : 91429.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)
-52 (-1.33 % of base) : 127303.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)
-52 (-1.34 % of base) : 136948.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)
-52 (-1.34 % of base) : 143710.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)
-52 (-1.34 % of base) : 145561.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)
-52 (-1.34 % of base) : 40095.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 (-6.94 % of base) : 119565.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 128721.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 30575.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 37731.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 62015.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 101475.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
Top method regressions (percentages):
356 (42.38 % of base) : 87338.dasm - Microsoft.Cci.MetadataVisitor:Visit(System.Collections.Generic.IEnumerable`1[Microsoft.Cci.IMetadataExpression]):this (Tier1)
336 (39.44 % of base) : 88274.dasm - Microsoft.Cci.MetadataVisitor:Visit(System.Collections.Generic.IEnumerable`1[Microsoft.Cci.IMetadataNamedArgument]):this (Tier1)
232 (38.93 % of base) : 28446.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1)
256 (37.87 % of base) : 120084.dasm - System.Linq.Enumerable:Count[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):int (Tier1)
224 (37.58 % of base) : 67266.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1)
220 (36.91 % of base) : 13749.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1)
220 (36.91 % of base) : 41570.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1)
116 (15.68 % of base) : 97706.dasm - System.Collections.Generic.Dictionary`2[System.Reflection.Metadata.NamespaceDefinitionHandle,System.__Canon]:FindValue(System.Reflection.Metadata.NamespaceDefinitionHandle):byref:this (Tier1)
108 (13.43 % of base) : 97705.dasm - System.Collections.Generic.Dictionary`2[System.Reflection.Metadata.NamespaceDefinitionHandle,System.__Canon]:TryGetValue(System.Reflection.Metadata.NamespaceDefinitionHandle,byref):ubyte:this (Tier1)
12 (12.00 % of base) : 96971.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:IsInDocumentationComment(Microsoft.CodeAnalysis.SyntaxNode):ubyte (Tier1)
16 (9.30 % of base) : 86889.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass1:CanScheduleToStack(Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol):ubyte:this (Tier1)
12 (7.69 % of base) : 11113.dasm - System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
8 (6.45 % of base) : 61175.dasm - System.Net.Security.SslStream:get_IsAuthenticated():ubyte:this (Tier1)
8 (6.45 % of base) : 98025.dasm - System.Net.Security.SslStream:get_IsAuthenticated():ubyte:this (Tier1)
8 (6.45 % of base) : 70963.dasm - System.Net.Security.SslStream:get_IsAuthenticated():ubyte:this (Tier1)
8 (6.45 % of base) : 94958.dasm - System.Net.Security.SslStream:get_IsAuthenticated():ubyte:this (Tier1)
16 (5.97 % of base) : 86230.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol:get_ContainingPEModule():Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol:this (Tier1)
20 (5.95 % of base) : 88462.dasm - System.Reflection.PortableExecutable.ManagedTextSection:CalculateOffsetToMappedFieldDataStreamUnaligned():int:this (Tier1)
12 (5.77 % of base) : 87180.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:ShouldSkip(Microsoft.CodeAnalysis.CSharp.Symbol):ubyte (Tier1)
12 (5.26 % of base) : 98024.dasm - System.Net.Security.SslStream:ThrowIfExceptionalOrNotAuthenticated():this (Tier1)
Top method improvements (percentages):
-48 (-6.94 % of base) : 119565.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 128721.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 30575.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 37731.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 62015.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 101475.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 98710.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 114703.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 136150.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 60062.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-24 (-6.82 % of base) : 87551.dasm - Microsoft.Cci.MetadataWriter:CheckNameLength(System.String,Microsoft.Cci.INamedEntity):this (Tier1)
-24 (-6.82 % of base) : 87542.dasm - Microsoft.Cci.MetadataWriter:CheckPathLength(System.String,Microsoft.Cci.INamedEntity):this (Tier1)
-28 (-6.14 % of base) : 127614.dasm - System.Threading.ThreadPoolWorkQueue:TryStartProcessingHighPriorityWorkItemsAndDequeue(System.Threading.ThreadPoolWorkQueueThreadLocals,byref):ubyte:this (Tier1)
-28 (-5.19 % of base) : 91634.dasm - System.Collections.Concurrent.ConcurrentStack`1[System.__Canon]:TryPopCore(int,byref):int:this (Tier1)
-12 (-4.92 % of base) : 137381.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:GetCanSeek():ubyte:this (Tier1)
-12 (-4.92 % of base) : 14638.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:GetCanSeek():ubyte:this (Tier1)
-12 (-4.92 % of base) : 2410.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:GetCanSeek():ubyte:this (Tier1)
-12 (-4.92 % of base) : 4405.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:GetCanSeek():ubyte:this (Tier1)
-12 (-4.92 % of base) : 4847.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:GetCanSeek():ubyte:this (Tier1)
-12 (-4.92 % of base) : 55141.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:GetCanSeek():ubyte:this (Tier1)
coreclr_tests.run.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 509287460 (overridden on cmd)
Total bytes of diff: 509308468 (overridden on cmd)
Total bytes of delta: 21008 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
1432 : 45527.dasm (57.01 % of base)
1404 : 45672.dasm (57.45 % of base)
1288 : 420846.dasm (53.22 % of base)
1268 : 417665.dasm (52.66 % of base)
1060 : 419739.dasm (29.84 % of base)
988 : 413574.dasm (28.55 % of base)
816 : 254069.dasm (62.39 % of base)
784 : 420786.dasm (38.66 % of base)
772 : 417541.dasm (38.07 % of base)
632 : 419864.dasm (30.86 % of base)
576 : 254421.dasm (44.86 % of base)
576 : 414139.dasm (28.29 % of base)
536 : 420096.dasm (25.24 % of base)
516 : 419818.dasm (25.90 % of base)
516 : 414606.dasm (25.15 % of base)
500 : 414668.dasm (37.09 % of base)
492 : 420055.dasm (35.76 % of base)
488 : 413955.dasm (25.42 % of base)
348 : 276667.dasm (35.22 % of base)
336 : 414068.dasm (24.07 % of base)
Top file improvements (bytes):
-144 : 413999.dasm (-3.47 % of base)
-96 : 418048.dasm (-3.35 % of base)
-96 : 420936.dasm (-3.34 % of base)
-80 : 416811.dasm (-1.15 % of base)
-76 : 419835.dasm (-1.78 % of base)
-56 : 626114.dasm (-6.17 % of base)
-56 : 626116.dasm (-6.17 % of base)
-56 : 626145.dasm (-6.14 % of base)
-56 : 626146.dasm (-6.14 % of base)
-56 : 414614.dasm (-2.41 % of base)
-56 : 420803.dasm (-1.63 % of base)
-56 : 626117.dasm (-6.17 % of base)
-56 : 626118.dasm (-6.17 % of base)
-56 : 626119.dasm (-6.17 % of base)
-56 : 626147.dasm (-6.14 % of base)
-56 : 626148.dasm (-6.14 % of base)
-56 : 418741.dasm (-1.38 % of base)
-52 : 419947.dasm (-0.96 % of base)
-52 : 421125.dasm (-1.28 % of base)
-48 : 321120.dasm (-2.05 % of base)
80 total files with Code Size differences (31 improved, 49 regressed), 20 unchanged.
Top method regressions (bytes):
1432 (57.01 % of base) : 45527.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[System.__Canon,ubyte]:ToArray():ubyte[]:this (Tier1)
1404 (57.45 % of base) : 45672.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[System.__Canon,byte]:ToArray():byte[]:this (Tier1)
1288 (53.22 % of base) : 420846.dasm - ILCompiler.DependencyAnalysisFramework.DependencyAnalyzer`2[ILCompiler.DependencyAnalysisFramework.NoLogStrategy`1[System.__Canon],System.__Canon]:GetStaticDependenciesImpl(ILCompiler.DependencyAnalysisFramework.DependencyNodeCore`1[System.__Canon]):this (Tier1)
1268 (52.66 % of base) : 417665.dasm - ILCompiler.DependencyAnalysisFramework.DependencyAnalyzer`2[ILCompiler.DependencyAnalysisFramework.NoLogStrategy`1[System.__Canon],System.__Canon]:GetStaticDependenciesImpl(ILCompiler.DependencyAnalysisFramework.DependencyNodeCore`1[System.__Canon]):this (Tier1)
1060 (29.84 % of base) : 419739.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,byref):ubyte:this (Tier1)
988 (28.55 % of base) : 413574.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,byref):ubyte:this (Tier1)
816 (62.39 % of base) : 254069.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
784 (38.66 % of base) : 420786.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,byref):ubyte:this (Tier1)
772 (38.07 % of base) : 417541.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,byref):ubyte:this (Tier1)
632 (30.86 % of base) : 419864.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,byref):ubyte:this (Tier1)
576 (28.29 % of base) : 414139.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,byref):ubyte:this (Tier1)
576 (44.86 % of base) : 254421.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:ToArray():System.__Canon[]:this (Tier1)
536 (25.24 % of base) : 420096.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+FieldForInstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+FieldForInstantiatedTypeKey,byref):ubyte:this (Tier1)
516 (25.90 % of base) : 419818.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+ArrayTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+ArrayTypeKey,byref):ubyte:this (Tier1)
516 (25.15 % of base) : 414606.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+FieldForInstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+FieldForInstantiatedTypeKey,byref):ubyte:this (Tier1)
500 (37.09 % of base) : 414668.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,byref):ubyte:this (Tier1)
492 (35.76 % of base) : 420055.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,byref):ubyte:this (Tier1)
488 (25.42 % of base) : 413955.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+ArrayTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+ArrayTypeKey,byref):ubyte:this (Tier1)
348 (35.22 % of base) : 276667.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:ToArray():System.__Canon[]:this (Tier1)
336 (24.07 % of base) : 414068.dasm - Internal.TypeSystem.TypeSystemConstraintsHelpers:VerifyGenericParamConstraint(Internal.TypeSystem.InstantiationContext,Internal.TypeSystem.GenericParameterDesc,Internal.TypeSystem.InstantiationContext,Internal.TypeSystem.TypeDesc):ubyte (Tier1)
Top method improvements (bytes):
-144 (-3.47 % of base) : 413999.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:TryAddOrGetExisting(System.__Canon,byref):System.__Canon:this (Tier1)
-96 (-3.35 % of base) : 418048.dasm - ILCompiler.DependencyAnalysisFramework.DependencyAnalyzer`2[ILCompiler.DependencyAnalysisFramework.NoLogStrategy`1[System.__Canon],System.__Canon]:ProcessMarkStack():this (Tier1)
-96 (-3.34 % of base) : 420936.dasm - ILCompiler.DependencyAnalysisFramework.DependencyAnalyzer`2[ILCompiler.DependencyAnalysisFramework.NoLogStrategy`1[System.__Canon],System.__Canon]:ProcessMarkStack():this (Tier1)
-80 (-1.15 % of base) : 416811.dasm - Internal.JitInterface.CorInfoImpl:resolveVirtualMethod(ulong):ubyte:this (Tier1)
-76 (-1.78 % of base) : 419835.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:TryAddOrGetExisting(System.__Canon,byref):System.__Canon:this (Tier1)
-56 (-6.17 % of base) : 626116.dasm - GenDouble:ThreadPoolTest[System.__Canon]() (FullOpts)
-56 (-6.14 % of base) : 626145.dasm - GenDouble:ThreadPoolTest[System.__Canon]() (FullOpts)
-56 (-6.17 % of base) : 626119.dasm - GenGuid:ThreadPoolTest[System.__Canon]() (FullOpts)
-56 (-6.14 % of base) : 626148.dasm - GenGuid:ThreadPoolTest[System.__Canon]() (FullOpts)
-56 (-6.17 % of base) : 626114.dasm - GenInt:ThreadPoolTest[System.__Canon]() (FullOpts)
-56 (-6.17 % of base) : 626118.dasm - GenObject:ThreadPoolTest[System.__Canon]() (FullOpts)
-56 (-6.14 % of base) : 626147.dasm - GenObject:ThreadPoolTest[System.__Canon]() (FullOpts)
-56 (-6.14 % of base) : 626146.dasm - GenString:ThreadPoolTest[System.__Canon]() (FullOpts)
-56 (-6.17 % of base) : 626117.dasm - GenString:ThreadPoolTest[System.__Canon]() (FullOpts)
-56 (-1.38 % of base) : 418741.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.SignatureBuilder:EmitTypeSignature(Internal.TypeSystem.TypeDesc,ILCompiler.DependencyAnalysis.ReadyToRun.SignatureContext):this (Tier1)
-56 (-2.41 % of base) : 414614.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+FieldForInstantiatedTypeKey,System.__Canon]:TryAddOrGetExisting(System.__Canon,byref):System.__Canon:this (Tier1)
-56 (-1.63 % of base) : 420803.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryAddOrGetExisting(System.__Canon,byref):System.__Canon:this (Tier1)
-52 (-0.96 % of base) : 419947.dasm - ILCompiler.CompilerTypeSystemContext:EnsureLoadableTypeUncached(Internal.TypeSystem.TypeDesc):Internal.TypeSystem.TypeDesc (Tier1)
-52 (-1.28 % of base) : 421125.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.SignatureBuilder:EmitTypeSignature(Internal.TypeSystem.TypeDesc,ILCompiler.DependencyAnalysis.ReadyToRun.SignatureContext):this (Tier1)
-48 (-2.05 % of base) : 321120.dasm - System.IO.Strategies.BufferedFileStreamStrategy:WriteAsync(System.ReadOnlyMemory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this (Tier1)
Top method regressions (percentages):
816 (62.39 % of base) : 254069.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
1404 (57.45 % of base) : 45672.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[System.__Canon,byte]:ToArray():byte[]:this (Tier1)
1432 (57.01 % of base) : 45527.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[System.__Canon,ubyte]:ToArray():ubyte[]:this (Tier1)
88 (53.66 % of base) : 321289.dasm - k:b(c):int:this (Tier1)
1288 (53.22 % of base) : 420846.dasm - ILCompiler.DependencyAnalysisFramework.DependencyAnalyzer`2[ILCompiler.DependencyAnalysisFramework.NoLogStrategy`1[System.__Canon],System.__Canon]:GetStaticDependenciesImpl(ILCompiler.DependencyAnalysisFramework.DependencyNodeCore`1[System.__Canon]):this (Tier1)
1268 (52.66 % of base) : 417665.dasm - ILCompiler.DependencyAnalysisFramework.DependencyAnalyzer`2[ILCompiler.DependencyAnalysisFramework.NoLogStrategy`1[System.__Canon],System.__Canon]:GetStaticDependenciesImpl(ILCompiler.DependencyAnalysisFramework.DependencyNodeCore`1[System.__Canon]):this (Tier1)
84 (50.00 % of base) : 321288.dasm - $:f(a,b,c):int (Tier1)
88 (48.89 % of base) : 321295.dasm - f:b(c):int:this (Tier1)
576 (44.86 % of base) : 254421.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:ToArray():System.__Canon[]:this (Tier1)
252 (44.06 % of base) : 411679.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
252 (44.06 % of base) : 410969.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
248 (43.36 % of base) : 410701.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
248 (43.36 % of base) : 410798.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
248 (43.36 % of base) : 412250.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
248 (43.36 % of base) : 411542.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
240 (41.96 % of base) : 412429.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
240 (41.96 % of base) : 419495.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
784 (38.66 % of base) : 420786.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,byref):ubyte:this (Tier1)
772 (38.07 % of base) : 417541.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,byref):ubyte:this (Tier1)
500 (37.09 % of base) : 414668.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,byref):ubyte:this (Tier1)
Top method improvements (percentages):
-56 (-6.17 % of base) : 626116.dasm - GenDouble:ThreadPoolTest[System.__Canon]() (FullOpts)
-56 (-6.17 % of base) : 626119.dasm - GenGuid:ThreadPoolTest[System.__Canon]() (FullOpts)
-56 (-6.17 % of base) : 626114.dasm - GenInt:ThreadPoolTest[System.__Canon]() (FullOpts)
-56 (-6.17 % of base) : 626118.dasm - GenObject:ThreadPoolTest[System.__Canon]() (FullOpts)
-56 (-6.17 % of base) : 626117.dasm - GenString:ThreadPoolTest[System.__Canon]() (FullOpts)
-56 (-6.14 % of base) : 626145.dasm - GenDouble:ThreadPoolTest[System.__Canon]() (FullOpts)
-56 (-6.14 % of base) : 626148.dasm - GenGuid:ThreadPoolTest[System.__Canon]() (FullOpts)
-56 (-6.14 % of base) : 626147.dasm - GenObject:ThreadPoolTest[System.__Canon]() (FullOpts)
-56 (-6.14 % of base) : 626146.dasm - GenString:ThreadPoolTest[System.__Canon]() (FullOpts)
-32 (-6.11 % of base) : 387947.dasm - System.ValueTuple`2[System.__Canon,System.__Canon]:Equals(System.ValueTuple`2[System.__Canon,System.__Canon]):ubyte:this (Tier1)
-12 (-5.56 % of base) : 284835.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature):System.Reflection.ParameterInfo[] (Tier1)
-12 (-5.56 % of base) : 321013.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature):System.Reflection.ParameterInfo[] (Tier1)
-16 (-5.19 % of base) : 624646.dasm - Microsoft.Build.Execution.BuildParameters:Initialize(Microsoft.Build.Collections.PropertyDictionary`1[Microsoft.Build.Execution.ProjectPropertyInstance],Microsoft.Build.Evaluation.ProjectRootElementCacheBase,Microsoft.Build.Evaluation.ToolsetProvider):this (FullOpts)
-24 (-4.88 % of base) : 254292.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier1)
-36 (-4.37 % of base) : 276491.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1)
-4 (-3.70 % of base) : 240865.dasm - System.Net.Sockets.SafeSocketHandle:SetHandleAndValid(long):this (Tier1)
-4 (-3.70 % of base) : 2551.dasm - System.Net.Sockets.SafeSocketHandle:SetHandleAndValid(long):this (Tier1)
-4 (-3.70 % of base) : 276317.dasm - System.Net.Sockets.SafeSocketHandle:SetHandleAndValid(long):this (Tier1)
-4 (-3.70 % of base) : 298309.dasm - System.Net.Sockets.SafeSocketHandle:SetHandleAndValid(long):this (Tier1)
-4 (-3.70 % of base) : 29816.dasm - System.Net.Sockets.SafeSocketHandle:SetHandleAndValid(long):this (Tier1)
libraries.pmi.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 76692260 (overridden on cmd)
Total bytes of diff: 76692396 (overridden on cmd)
Total bytes of delta: 136 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
48 : 176297.dasm (2.19 % of base)
40 : 184058.dasm (0.85 % of base)
32 : 226835.dasm (2.77 % of base)
32 : 19422.dasm (1.35 % of base)
32 : 249168.dasm (3.43 % of base)
28 : 164381.dasm (2.06 % of base)
28 : 2.dasm (0.63 % of base)
28 : 293999.dasm (0.38 % of base)
24 : 66981.dasm (4.29 % of base)
24 : 160993.dasm (0.94 % of base)
20 : 173525.dasm (1.25 % of base)
20 : 205489.dasm (0.79 % of base)
16 : 3232.dasm (0.84 % of base)
16 : 176308.dasm (1.53 % of base)
16 : 234230.dasm (0.24 % of base)
16 : 252143.dasm (4.82 % of base)
16 : 66978.dasm (3.57 % of base)
16 : 128148.dasm (2.13 % of base)
16 : 174170.dasm (1.92 % of base)
16 : 205528.dasm (1.19 % of base)
Top file improvements (bytes):
-36 : 155971.dasm (-1.53 % of base)
-32 : 292171.dasm (-1.26 % of base)
-24 : 155959.dasm (-1.27 % of base)
-24 : 155965.dasm (-1.28 % of base)
-24 : 284455.dasm (-1.02 % of base)
-20 : 280968.dasm (-0.69 % of base)
-20 : 231936.dasm (-0.56 % of base)
-16 : 264382.dasm (-0.41 % of base)
-16 : 178191.dasm (-0.28 % of base)
-16 : 211629.dasm (-0.44 % of base)
-16 : 3498.dasm (-0.44 % of base)
-16 : 36462.dasm (-0.55 % of base)
-16 : 187608.dasm (-5.19 % of base)
-16 : 194309.dasm (-0.84 % of base)
-16 : 231191.dasm (-0.67 % of base)
-16 : 246244.dasm (-1.77 % of base)
-16 : 62080.dasm (-0.54 % of base)
-12 : 168334.dasm (-3.16 % of base)
-12 : 36709.dasm (-2.56 % of base)
-12 : 66078.dasm (-2.03 % of base)
75 total files with Code Size differences (37 improved, 38 regressed), 20 unchanged.
Top method regressions (bytes):
48 (2.19 % of base) : 176297.dasm - System.Xml.Schema.TypedObject:Equals(System.Xml.Schema.TypedObject):ubyte:this (FullOpts)
40 (0.85 % of base) : 184058.dasm - System.Xml.Serialization.XmlSerializationReader:ReadArray(System.String,System.String):System.Array:this (FullOpts)
32 (3.43 % of base) : 249168.dasm - System.CommandLine.EnvironmentVariablesDirective+EnvironmentVariablesDirectiveAction:SetEnvVars(System.CommandLine.ParseResult):this (FullOpts)
32 (2.77 % of base) : 226835.dasm - System.ComponentModel.PropertyTabAttribute:InitializeTabClasses():this (FullOpts)
32 (1.35 % of base) : 19422.dasm - System.Enum:TryParseByName[short](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
28 (0.63 % of base) : 2.dasm - PrepareMethodinator:Main(System.String[]):int (FullOpts)
28 (0.38 % of base) : 293999.dasm - R2RDump.Extensions:WriteTo(ILCompiler.Reflection.ReadyToRun.RuntimeFunction,System.IO.TextWriter,R2RDump.DumpModel) (FullOpts)
28 (2.06 % of base) : 164381.dasm - System.Data.Common.ObjectStorage:CompareWithFamilies(System.Object,System.Object):int:this (FullOpts)
24 (4.29 % of base) : 66981.dasm - Microsoft.CodeAnalysis.CSharp.ValueSetFactory+DecimalValueSetFactory:Microsoft.CodeAnalysis.CSharp.IValueSetFactory.Related(int,Microsoft.CodeAnalysis.ConstantValue):Microsoft.CodeAnalysis.CSharp.IValueSet:this (FullOpts)
24 (0.94 % of base) : 160993.dasm - System.Data.DataTable:ParseSortString(System.String):System.Data.IndexField[]:this (FullOpts)
20 (0.79 % of base) : 205489.dasm - Newtonsoft.Json.Utilities.ConvertUtils:DecimalTryParse(ushort[],int,int,byref):int (FullOpts)
20 (1.25 % of base) : 173525.dasm - System.Xml.XmlTextReaderImpl:ReadValueChunk(ushort[],int,int):int:this (FullOpts)
16 (0.84 % of base) : 3232.dasm - Microsoft.CodeAnalysis.CommandLineParser:<FlattenArgs>g__parseResponseFile|31_0(System.String,byref):this (FullOpts)
16 (0.83 % of base) : 211395.dasm - Microsoft.CodeAnalysis.CommandLineParser:<FlattenArgs>g__parseResponseFile|31_0(System.String,byref):this (FullOpts)
16 (3.57 % of base) : 66978.dasm - Microsoft.CodeAnalysis.CSharp.ValueSetFactory+DecimalValueSetFactory:Related(int,System.Decimal):Microsoft.CodeAnalysis.CSharp.IValueSet`1[System.Decimal]:this (FullOpts)
16 (2.13 % of base) : 128148.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:MakeHalfWidthIdentifier(System.String):System.String (FullOpts)
16 (1.19 % of base) : 205528.dasm - Newtonsoft.Json.Utilities.DateTimeUtils:WriteDateTimeString(ushort[],int,System.DateTime,System.Nullable`1[System.TimeSpan],int,int):int (FullOpts)
16 (4.82 % of base) : 252143.dasm - System.Net.Sockets.Socket:set_Ttl(short):this (FullOpts)
16 (1.53 % of base) : 176308.dasm - System.Xml.Schema.KeySequence:GetHashCode():int:this (FullOpts)
16 (1.92 % of base) : 174170.dasm - System.Xml.XmlTextWriter:GeneratePrefix():System.String:this (FullOpts)
Top method improvements (bytes):
-36 (-1.53 % of base) : 155971.dasm - System.Net.Http.DiagnosticsHandler+ResponseData:ToString():System.String:this (FullOpts)
-32 (-1.26 % of base) : 292171.dasm - Microsoft.Extensions.Logging.LoggerFilterRule:ToString():System.String:this (FullOpts)
-24 (-1.02 % of base) : 284455.dasm - Microsoft.Quic.QUIC_LISTENER_EVENT:ToString():System.String:this (FullOpts)
-24 (-1.27 % of base) : 155959.dasm - System.Net.Http.DiagnosticsHandler+ActivityStopData:ToString():System.String:this (FullOpts)
-24 (-1.28 % of base) : 155965.dasm - System.Net.Http.DiagnosticsHandler+RequestData:ToString():System.String:this (FullOpts)
-20 (-0.56 % of base) : 231936.dasm - Microsoft.VisualBasic.Strings:FormatNamed(System.Object,System.String,byref):ubyte (FullOpts)
-20 (-0.69 % of base) : 280968.dasm - System.IO.Ports.SerialPort:GetPortNames_Linux():System.String[] (FullOpts)
-16 (-0.84 % of base) : 194309.dasm - ILCompiler.CallChainProfile:WriteProfileParseStats():this (FullOpts)
-16 (-5.19 % of base) : 187608.dasm - Microsoft.Build.Execution.BuildParameters:Initialize(Microsoft.Build.Collections.PropertyDictionary`1[Microsoft.Build.Execution.ProjectPropertyInstance],Microsoft.Build.Evaluation.ProjectRootElementCacheBase,Microsoft.Build.Evaluation.ToolsetProvider):this (FullOpts)
-16 (-0.44 % of base) : 211629.dasm - Microsoft.CodeAnalysis.Compilation:SerializeToPeStream(Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.RebuildData,System.Func`2[Microsoft.DiaSymReader.ISymWriterMetadataProvider,Microsoft.DiaSymReader.SymUnmanagedWriter],Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.Emit.EmitOptions,System.Nullable`1[System.Security.Cryptography.RSAParameters],System.Threading.CancellationToken):ubyte:this (FullOpts)
-16 (-0.44 % of base) : 3498.dasm - Microsoft.CodeAnalysis.Compilation:SerializeToPeStream(Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.RebuildData,System.Func`2[Microsoft.DiaSymReader.ISymWriterMetadataProvider,Microsoft.DiaSymReader.SymUnmanagedWriter],Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.Emit.EmitOptions,System.Nullable`1[System.Security.Cryptography.RSAParameters],System.Threading.CancellationToken):ubyte:this (FullOpts)
-16 (-0.55 % of base) : 36462.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetDiagnosticsWithoutFiltering(int,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):this (FullOpts)
-16 (-0.54 % of base) : 62080.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbolBase:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-16 (-0.67 % of base) : 231191.dasm - Microsoft.VisualBasic.CompilerServices.Utils:MethodToString(System.Reflection.MethodBase):System.String (FullOpts)
-16 (-0.41 % of base) : 264382.dasm - System.Formats.Tar.TarHeader+<WriteAsPaxAsync>d__93:MoveNext():this (FullOpts)
-16 (-1.77 % of base) : 246244.dasm - System.Net.CredentialCache:GetCredential(System.String,int,System.String):System.Net.NetworkCredential:this (FullOpts)
-16 (-0.28 % of base) : 178191.dasm - System.Xml.Schema.XmlUntypedConverter:ChangeType(System.String,System.Type,System.Xml.IXmlNamespaceResolver):System.Object:this (FullOpts)
-12 (-2.03 % of base) : 66078.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+UsingsFromOptionsAndDiagnostics:Complete(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,System.Threading.CancellationToken):this (FullOpts)
-12 (-2.56 % of base) : 36709.dasm - Microsoft.CodeAnalysis.CSharp.CSharpSemanticModel:GetParameterSymbol(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Syntax.ParameterSyntax,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol:this (FullOpts)
-12 (-0.32 % of base) : 61313.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
Top method regressions (percentages):
12 (7.32 % of base) : 258646.dasm - System.Collections.CaseInsensitiveHashCodeProvider:GetHashCode(System.Object):int:this (FullOpts)
16 (4.82 % of base) : 252143.dasm - System.Net.Sockets.Socket:set_Ttl(short):this (FullOpts)
8 (4.65 % of base) : 246442.dasm - System.Net.SocketAddress:set_Size(int):this (FullOpts)
24 (4.29 % of base) : 66981.dasm - Microsoft.CodeAnalysis.CSharp.ValueSetFactory+DecimalValueSetFactory:Microsoft.CodeAnalysis.CSharp.IValueSetFactory.Related(int,Microsoft.CodeAnalysis.ConstantValue):Microsoft.CodeAnalysis.CSharp.IValueSet:this (FullOpts)
12 (4.23 % of base) : 162098.dasm - System.Data.ExpressionParser:LoadExpression(System.String):this (FullOpts)
8 (3.70 % of base) : 178137.dasm - System.Xml.Schema.XmlDateTimeConverter:ToDateTimeOffset(System.DateTime):System.DateTimeOffset:this (FullOpts)
16 (3.57 % of base) : 66978.dasm - Microsoft.CodeAnalysis.CSharp.ValueSetFactory+DecimalValueSetFactory:Related(int,System.Decimal):Microsoft.CodeAnalysis.CSharp.IValueSet`1[System.Decimal]:this (FullOpts)
32 (3.43 % of base) : 249168.dasm - System.CommandLine.EnvironmentVariablesDirective+EnvironmentVariablesDirectiveAction:SetEnvVars(System.CommandLine.ParseResult):this (FullOpts)
12 (2.94 % of base) : 246947.dasm - System.Net.WebSockets.HttpWebSocket:ValidateOptions(System.String,int,int,System.TimeSpan) (FullOpts)
32 (2.77 % of base) : 226835.dasm - System.ComponentModel.PropertyTabAttribute:InitializeTabClasses():this (FullOpts)
8 (2.56 % of base) : 185671.dasm - Microsoft.Build.Construction.XmlDocumentWithLocation:DetermineWhetherToLoadReadOnlyIfPossible():this (FullOpts)
12 (2.44 % of base) : 156583.dasm - System.Net.Http.AuthenticationHelper:ComputeHash(System.String,System.String):System.String (FullOpts)
48 (2.19 % of base) : 176297.dasm - System.Xml.Schema.TypedObject:Equals(System.Xml.Schema.TypedObject):ubyte:this (FullOpts)
16 (2.13 % of base) : 128148.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:MakeHalfWidthIdentifier(System.String):System.String (FullOpts)
12 (2.13 % of base) : 252439.dasm - System.Net.Sockets.SocketAsyncEventArgs:SetBuffer(int,int):this (FullOpts)
12 (2.07 % of base) : 183074.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:SetCollectionObjectWithCollectionMember(byref,System.Xml.Serialization.ReflectionXmlSerializationReader+CollectionMember,System.Type) (FullOpts)
28 (2.06 % of base) : 164381.dasm - System.Data.Common.ObjectStorage:CompareWithFamilies(System.Object,System.Object):int:this (FullOpts)
4 (1.92 % of base) : 159503.dasm - System.Data.XmlDataTreeWriter:PreserveSpace(System.Object):ubyte (FullOpts)
16 (1.92 % of base) : 174170.dasm - System.Xml.XmlTextWriter:GeneratePrefix():System.String:this (FullOpts)
8 (1.87 % of base) : 87065.dasm - Microsoft.Diagnostics.Tracing.Etlx.TraceEvents:FilterByTime(System.DateTime,System.DateTime):Microsoft.Diagnostics.Tracing.Etlx.TraceEvents:this (FullOpts)
Top method improvements (percentages):
-16 (-5.19 % of base) : 187608.dasm - Microsoft.Build.Execution.BuildParameters:Initialize(Microsoft.Build.Collections.PropertyDictionary`1[Microsoft.Build.Execution.ProjectPropertyInstance],Microsoft.Build.Evaluation.ProjectRootElementCacheBase,Microsoft.Build.Evaluation.ToolsetProvider):this (FullOpts)
-8 (-3.64 % of base) : 61911.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceParameterSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-8 (-3.64 % of base) : 62373.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolCompletionState:DefaultForceComplete(Microsoft.CodeAnalysis.CSharp.Symbol,System.Threading.CancellationToken):this (FullOpts)
-8 (-3.57 % of base) : 61173.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceEventSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-12 (-3.16 % of base) : 168334.dasm - System.Security.Cryptography.X509Certificates.X509AuthorityKeyIdentifierExtension:.ctor(System.ReadOnlySpan`1[ubyte],ubyte):this (FullOpts)
-12 (-3.09 % of base) : 168673.dasm - System.Security.Cryptography.X509Certificates.X509SubjectAlternativeNameExtension:.ctor(System.ReadOnlySpan`1[ubyte],ubyte):this (FullOpts)
-8 (-2.90 % of base) : 61226.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldLikeEventSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-12 (-2.56 % of base) : 36709.dasm - Microsoft.CodeAnalysis.CSharp.CSharpSemanticModel:GetParameterSymbol(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Syntax.ParameterSyntax,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol:this (FullOpts)
-4 (-2.38 % of base) : 60273.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MergedNamespaceSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-12 (-2.03 % of base) : 66078.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+UsingsFromOptionsAndDiagnostics:Complete(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,System.Threading.CancellationToken):this (FullOpts)
-8 (-1.77 % of base) : 62109.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceTypeParameterSymbolBase:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-16 (-1.77 % of base) : 246244.dasm - System.Net.CredentialCache:GetCredential(System.String,int,System.String):System.Net.NetworkCredential:this (FullOpts)
-8 (-1.72 % of base) : 187737.dasm - Microsoft.Build.Execution.OutOfProcNode:CleanupCaches():this (FullOpts)
-4 (-1.72 % of base) : 137480.dasm - System.FormattingHelpers:ToStringInvariant[int](int,System.String):System.String (FullOpts)
-4 (-1.72 % of base) : 192901.dasm - System.FormattingHelpers:ToStringInvariant[int](int,System.String):System.String (FullOpts)
-4 (-1.72 % of base) : 137479.dasm - System.FormattingHelpers:ToStringInvariant[short](short,System.String):System.String (FullOpts)
-4 (-1.72 % of base) : 192900.dasm - System.FormattingHelpers:ToStringInvariant[short](short,System.String):System.String (FullOpts)
-8 (-1.72 % of base) : 168333.dasm - System.Security.Cryptography.X509Certificates.X509AuthorityKeyIdentifierExtension:.ctor(ubyte[],ubyte):this (FullOpts)
-8 (-1.69 % of base) : 168672.dasm - System.Security.Cryptography.X509Certificates.X509SubjectAlternativeNameExtension:.ctor(ubyte[],ubyte):this (FullOpts)
-12 (-1.66 % of base) : 68700.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+MergedGlobalAliasesAndUsings:Complete(Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,System.Threading.CancellationToken):this (FullOpts)
libraries_tests.run.linux.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 380944972 (overridden on cmd)
Total bytes of diff: 381308920 (overridden on cmd)
Total bytes of delta: 363948 (0.10 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
4772 : 620926.dasm (51.78 % of base)
4544 : 618319.dasm (43.76 % of base)
4064 : 618321.dasm (90.47 % of base)
3792 : 618634.dasm (92.31 % of base)
3532 : 652642.dasm (38.64 % of base)
3496 : 132176.dasm (53.82 % of base)
3284 : 653228.dasm (41.30 % of base)
3060 : 652643.dasm (82.08 % of base)
2724 : 575090.dasm (73.46 % of base)
2508 : 653789.dasm (66.70 % of base)
2452 : 65319.dasm (61.67 % of base)
2092 : 36131.dasm (65.21 % of base)
2092 : 80880.dasm (65.54 % of base)
1976 : 699510.dasm (63.66 % of base)
1940 : 681679.dasm (47.46 % of base)
1892 : 674451.dasm (32.58 % of base)
1820 : 440584.dasm (29.39 % of base)
1768 : 90993.dasm (49.17 % of base)
1712 : 67487.dasm (48.47 % of base)
1688 : 91512.dasm (83.73 % of base)
Top file improvements (bytes):
-656 : 467237.dasm (-21.55 % of base)
-632 : 63004.dasm (-4.88 % of base)
-624 : 467235.dasm (-20.97 % of base)
-468 : 89745.dasm (-2.81 % of base)
-236 : 379214.dasm (-4.22 % of base)
-228 : 488765.dasm (-1.67 % of base)
-228 : 681362.dasm (-1.17 % of base)
-220 : 402816.dasm (-2.80 % of base)
-220 : 91987.dasm (-1.11 % of base)
-204 : 687263.dasm (-2.68 % of base)
-192 : 309653.dasm (-2.28 % of base)
-184 : 646515.dasm (-2.25 % of base)
-184 : 667188.dasm (-1.63 % of base)
-172 : 65245.dasm (-3.58 % of base)
-168 : 663333.dasm (-1.66 % of base)
-164 : 288466.dasm (-3.79 % of base)
-160 : 469184.dasm (-1.88 % of base)
-160 : 185799.dasm (-1.32 % of base)
-156 : 326361.dasm (-2.55 % of base)
-156 : 327969.dasm (-2.55 % of base)
86 total files with Code Size differences (39 improved, 47 regressed), 20 unchanged.
Top method regressions (bytes):
4772 (51.78 % of base) : 620926.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
4544 (43.76 % of base) : 618319.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.Text.Json.Serialization.Tests.Point_2D_With_ExtData]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
4064 (90.47 % of base) : 618321.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.Text.Json.Serialization.Tests.Point_2D_With_ExtData]:ReadConstructorArgumentsWithContinuation(byref,byref,System.Text.Json.JsonSerializerOptions):ubyte:this (Tier1)
3792 (92.31 % of base) : 618634.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.Text.Json.Serialization.Tests.Person_Struct]:ReadConstructorArgumentsWithContinuation(byref,byref,System.Text.Json.JsonSerializerOptions):ubyte:this (Tier1)
3532 (38.64 % of base) : 652642.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.Text.Json.Serialization.Tests.Point_2D_With_ExtData]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
3496 (53.82 % of base) : 132176.dasm - System.AssertExtensions:CollectionEqual[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]) (Tier1)
3284 (41.30 % of base) : 653228.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
3060 (82.08 % of base) : 652643.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.Text.Json.Serialization.Tests.Point_2D_With_ExtData]:ReadConstructorArguments(byref,byref,System.Text.Json.JsonSerializerOptions):this (Tier1)
2724 (73.46 % of base) : 575090.dasm - System.Text.DBCSCodePageEncoding:ReadBestFitTable():this (Tier1-OSR)
2508 (66.70 % of base) : 653789.dasm - System.Text.Json.Serialization.Converters.DictionaryDefaultConverter`3[System.__Canon,System.__Canon,System.Nullable`1[int]]:OnWriteResume(System.Text.Json.Utf8JsonWriter,System.__Canon,System.Text.Json.JsonSerializerOptions,byref):ubyte:this (Tier1)
2452 (61.67 % of base) : 65319.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.BaseTypeAnalysis:<GetManagedKind>g__dependsOnDefinitelyManagedType|4_0(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.CSharp.Symbol],byref):System.ValueTuple`2[ubyte,ubyte] (Tier1)
2092 (65.21 % of base) : 36131.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]]],System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]],int):System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]] (Tier1)
2092 (65.54 % of base) : 80880.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]]],System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]],int):System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]] (Tier1)
1976 (63.66 % of base) : 699510.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]]],System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]],int):System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]] (Tier1)
1940 (47.46 % of base) : 681679.dasm - Microsoft.CodeAnalysis.Workspace:<UpdateReferencesAfterAdd>g__UpdateReferencesAfterAdd|90_1(Microsoft.CodeAnalysis.Solution):Microsoft.CodeAnalysis.Solution (Tier1)
1892 (32.58 % of base) : 674451.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:ComputeAbstractMembers():System.Collections.Immutable.ImmutableHashSet`1[Microsoft.CodeAnalysis.CSharp.Symbol]:this (Tier1)
1820 (29.39 % of base) : 440584.dasm - System.Xml.XmlLoader:LoadNode(ubyte):System.Xml.XmlNode:this (Tier1)
1768 (49.17 % of base) : 90993.dasm - Microsoft.Interop.TypePositionInfo:GetByValueContentsMarshalKind(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.AttributeData],Microsoft.CodeAnalysis.Compilation):System.ValueTuple`3[int,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.Location] (Tier1)
1712 (48.47 % of base) : 67487.dasm - Microsoft.Interop.TypePositionInfo:GetByValueContentsMarshalKind(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.AttributeData],Microsoft.CodeAnalysis.Compilation):System.ValueTuple`3[int,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.Location] (Tier1)
1688 (83.73 % of base) : 91512.dasm - System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.SyntaxToken]:UnionWith(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxToken]):this (Tier1)
Top method improvements (bytes):
-656 (-21.55 % of base) : 467237.dasm - System.Xml.XmlReader:ReadToNextSibling(System.String,System.String):ubyte:this (Tier1)
-632 (-4.88 % of base) : 63004.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckValidNullableMethodOverride[System.ValueTuple`2[System.__Canon,ubyte]](Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Symbols.ReportMismatchInReturnType`1[System.ValueTuple`2[System.__Canon,ubyte]],Microsoft.CodeAnalysis.CSharp.Symbols.ReportMismatchInParameterType`1[System.ValueTuple`2[System.__Canon,ubyte]],System.ValueTuple`2[System.__Canon,ubyte],ubyte):ubyte (Tier1)
-624 (-20.97 % of base) : 467235.dasm - System.Xml.XmlReader:ReadToNextSibling(System.String):ubyte:this (Tier1)
-468 (-2.81 % of base) : 89745.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (Tier1)
-236 (-4.22 % of base) : 379214.dasm - System.Net.Mail.MailWriter:WriteHeaders(System.Collections.Specialized.NameValueCollection,ubyte):this (Tier1)
-228 (-1.17 % of base) : 681362.dasm - Microsoft.Cci.MetadataWriter:PopulateTypeDefTableRows():this (Tier1)
-228 (-1.67 % of base) : 488765.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
-220 (-1.11 % of base) : 91987.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1)
-220 (-2.80 % of base) : 402816.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-204 (-2.68 % of base) : 687263.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:VisitSwitchStatement(Microsoft.CodeAnalysis.CSharp.BoundSwitchStatement):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
-192 (-2.28 % of base) : 309653.dasm - System.IO.Compression.Tests.zip_UpdateTests:Update_Comment_EntryName_Encoding_Internal(System.String,System.String,System.String,System.Text.Encoding,System.String,System.String) (Tier1)
-184 (-1.63 % of base) : 667188.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindInvocationExpressionContinued(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,System.String,Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.MethodGroup,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Tier1)
-184 (-2.25 % of base) : 646515.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
-172 (-3.58 % of base) : 65245.dasm - Microsoft.CodeAnalysis.CSharp.RefSafetyAnalysis:GetValEscape(Microsoft.CodeAnalysis.CSharp.BoundExpression,uint):uint:this (Tier1)
-168 (-1.66 % of base) : 663333.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (Tier1)
-164 (-3.79 % of base) : 288466.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.statements.IndexerOperator.Binary.verify.verify.Verify:Check(System.Object,System.Object):int (Tier1)
-160 (-1.32 % of base) : 185799.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
-160 (-1.88 % of base) : 469184.dasm - System.Xml.Tests.TCDepth:TestDepth4():int:this (Tier1)
-156 (-2.55 % of base) : 326361.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-156 (-2.55 % of base) : 327969.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
Top method regressions (percentages):
3792 (92.31 % of base) : 618634.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.Text.Json.Serialization.Tests.Person_Struct]:ReadConstructorArgumentsWithContinuation(byref,byref,System.Text.Json.JsonSerializerOptions):ubyte:this (Tier1)
4064 (90.47 % of base) : 618321.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.Text.Json.Serialization.Tests.Point_2D_With_ExtData]:ReadConstructorArgumentsWithContinuation(byref,byref,System.Text.Json.JsonSerializerOptions):ubyte:this (Tier1)
884 (89.84 % of base) : 581099.dasm - System.Text.Encodings.Web.TextEncoder:EncodeCore(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref,byref,ubyte):int:this (Tier1-OSR)
1688 (83.73 % of base) : 91512.dasm - System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.SyntaxToken]:UnionWith(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxToken]):this (Tier1)
3060 (82.08 % of base) : 652643.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.Text.Json.Serialization.Tests.Point_2D_With_ExtData]:ReadConstructorArguments(byref,byref,System.Text.Json.JsonSerializerOptions):this (Tier1)
1636 (81.15 % of base) : 61535.dasm - System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.SyntaxToken]:UnionWith(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxToken]):this (Tier1)
468 (80.14 % of base) : 225592.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:SymmetricExceptWithSameComparer(System.__Canon[],int):this (Tier1)
160 (78.43 % of base) : 442941.dasm - System.Xml.XPath.XPathNavigator:MoveToRoot():this (Tier1)
384 (75.59 % of base) : 224019.dasm - System.Collections.Generic.SortedSet`1[int]:SymmetricExceptWithSameComparer(int[],int):this (Tier1)
1568 (74.95 % of base) : 213602.dasm - System.Collections.Generic.HashSet`1[System.Collections.Frozen.Tests.SimpleNonComparableStruct]:UnionWith(System.Collections.Generic.IEnumerable`1[System.Collections.Frozen.Tests.SimpleNonComparableStruct]):this (Tier1)
836 (74.64 % of base) : 451282.dasm - System.Xml.Xsl.Qil.QilCloneVisitor:VisitChildren(System.Xml.Xsl.Qil.QilNode):System.Xml.Xsl.Qil.QilNode:this (Tier1)
2724 (73.46 % of base) : 575090.dasm - System.Text.DBCSCodePageEncoding:ReadBestFitTable():this (Tier1-OSR)
1532 (72.81 % of base) : 491888.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:TryGetFirst(byref):System.__Canon:this (Tier1)
1344 (70.59 % of base) : 652736.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
1088 (68.51 % of base) : 455411.dasm - System.Linq.Enumerable+WhereSelectEnumerableIterator`2[System.__Canon,System.__Canon]:TryGetFirst(byref):System.__Canon:this (Tier1)
708 (67.56 % of base) : 225385.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:AddAllElements(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
916 (67.35 % of base) : 450656.dasm - System.Xml.Xsl.Qil.QilReplaceVisitor:VisitChildren(System.Xml.Xsl.Qil.QilNode):System.Xml.Xsl.Qil.QilNode:this (Tier1)
756 (67.26 % of base) : 212958.dasm - System.Collections.Frozen.FrozenSetInternalBase`2[System.__Canon,System.Collections.Frozen.OrdinalStringFrozenSet+GSW]:ContainsAllElements(System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte:this (Tier1)
752 (66.90 % of base) : 213119.dasm - System.Collections.Frozen.FrozenSetInternalBase`2[System.__Canon,System.Collections.Frozen.OrdinalStringFrozenSet+GSW]:OverlapsCore(System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte:this (Tier1)
1028 (66.75 % of base) : 124216.dasm - System.Linq.Lookup`2[System.__Canon,System.__Canon]:Create(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.__Canon] (Tier1)
Top method improvements (percentages):
-656 (-21.55 % of base) : 467237.dasm - System.Xml.XmlReader:ReadToNextSibling(System.String,System.String):ubyte:this (Tier1)
-624 (-20.97 % of base) : 467235.dasm - System.Xml.XmlReader:ReadToNextSibling(System.String):ubyte:this (Tier1)
-128 (-13.11 % of base) : 81692.dasm - Microsoft.CodeAnalysis.ProjectInfo:With(Microsoft.CodeAnalysis.ProjectInfo+ProjectAttributes,Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.CompilationOptions],Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.ParseOptions],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.ProjectReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.MetadataReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],Microsoft.CodeAnalysis.Optional`1[System.Type]):Microsoft.CodeAnalysis.ProjectInfo:this (Tier1)
-128 (-13.06 % of base) : 45551.dasm - Microsoft.CodeAnalysis.ProjectInfo:With(Microsoft.CodeAnalysis.ProjectInfo+ProjectAttributes,Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.CompilationOptions],Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.ParseOptions],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.ProjectReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.MetadataReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],Microsoft.CodeAnalysis.Optional`1[System.Type]):Microsoft.CodeAnalysis.ProjectInfo:this (Tier1)
-120 (-12.77 % of base) : 660132.dasm - Microsoft.CodeAnalysis.ProjectInfo:With(Microsoft.CodeAnalysis.ProjectInfo+ProjectAttributes,Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.CompilationOptions],Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.ParseOptions],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.ProjectReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.MetadataReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],Microsoft.CodeAnalysis.Optional`1[System.Type]):Microsoft.CodeAnalysis.ProjectInfo:this (Tier1)
-8 (-11.76 % of base) : 670601.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass1:ShouldNotSchedule(Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol):this (Tier1)
-24 (-10.91 % of base) : 93406.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (Tier1)
-24 (-10.91 % of base) : 667173.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (Tier1)
-8 (-10.53 % of base) : 617877.dasm - System.Text.Json.JsonHelpers:SkipWithVerify(byref) (Tier1)
-8 (-10.53 % of base) : 619239.dasm - System.Text.Json.JsonHelpers:TrySkipPartial(byref):ubyte (Tier1)
-20 (-9.62 % of base) : 67043.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.ValueTuple`2[System.__Canon,System.__Canon]]:ItemRef(int):byref:this (Tier1)
-32 (-8.25 % of base) : 383341.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<TKey,TValue>>.Remove(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]):ubyte:this (Tier1)
-28 (-7.87 % of base) : 179330.dasm - Microsoft.Cci.MetadataWriter:CheckPathLength(System.String,Microsoft.Cci.INamedEntity):this (Tier1)
-12 (-7.69 % of base) : 670469.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:get_IsImplicitConstructor():ubyte:this (Tier1)
-4 (-7.69 % of base) : 605088.dasm - System.Text.Json.Utf8JsonReader:get_CurrentDepth():int:this (Tier1)
-4 (-7.69 % of base) : 627457.dasm - System.Text.Json.Utf8JsonReader:get_CurrentDepth():int:this (Tier1)
-12 (-7.50 % of base) : 180747.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:get_IsImplicitConstructor():ubyte:this (Tier1)
-12 (-7.32 % of base) : 391749.dasm - System.Threading.Tasks.TaskExceptionHolder:GetCancellationExceptionDispatchInfo():System.Runtime.ExceptionServices.ExceptionDispatchInfo:this (Tier1)
-80 (-6.97 % of base) : 430642.dasm - Tests.Collections.IListExtensions:AddRange(System.Collections.IList,System.Collections.IEnumerable) (Tier1)
-8 (-6.90 % of base) : 675014.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedGlobalMethodSymbol:get_CallingConvention():int:this (Tier1)
librariestestsnotieredcompilation.run.linux.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 164707488 (overridden on cmd)
Total bytes of diff: 164704964 (overridden on cmd)
Total bytes of delta: -2524 (-0.00 % of base)
diff is an improvement.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
48 : 171465.dasm (2.42 % of base)
48 : 202538.dasm (2.25 % of base)
48 : 270202.dasm (1.22 % of base)
44 : 170865.dasm (1.77 % of base)
44 : 213388.dasm (1.13 % of base)
40 : 152615.dasm (1.04 % of base)
40 : 204177.dasm (0.33 % of base)
40 : 164127.dasm (0.89 % of base)
32 : 209369.dasm (1.72 % of base)
24 : 202699.dasm (0.34 % of base)
24 : 282648.dasm (1.60 % of base)
24 : 90149.dasm (0.95 % of base)
24 : 149227.dasm (1.77 % of base)
24 : 3700.dasm (0.98 % of base)
20 : 204173.dasm (1.94 % of base)
20 : 213465.dasm (0.66 % of base)
20 : 93396.dasm (1.26 % of base)
20 : 122503.dasm (1.25 % of base)
20 : 263438.dasm (0.79 % of base)
20 : 296767.dasm (1.05 % of base)
Top file improvements (bytes):
-112 : 279721.dasm (-1.38 % of base)
-84 : 197558.dasm (-1.26 % of base)
-76 : 199255.dasm (-1.15 % of base)
-48 : 119632.dasm (-1.29 % of base)
-44 : 171728.dasm (-1.32 % of base)
-40 : 123200.dasm (-1.54 % of base)
-36 : 274208.dasm (-0.94 % of base)
-32 : 222476.dasm (-1.72 % of base)
-32 : 222466.dasm (-1.73 % of base)
-32 : 222467.dasm (-1.18 % of base)
-28 : 168529.dasm (-1.35 % of base)
-28 : 168637.dasm (-1.41 % of base)
-28 : 190826.dasm (-3.74 % of base)
-28 : 42281.dasm (-0.80 % of base)
-24 : 122767.dasm (-0.83 % of base)
-24 : 214026.dasm (-1.69 % of base)
-24 : 123203.dasm (-1.48 % of base)
-20 : 170856.dasm (-2.43 % of base)
-20 : 172125.dasm (-2.06 % of base)
-20 : 45761.dasm (-0.36 % of base)
75 total files with Code Size differences (38 improved, 37 regressed), 20 unchanged.
Top method regressions (bytes):
48 (2.25 % of base) : 202538.dasm - System.Tests.StringTests:WhiteSpaceAtStartAndEndTrim() (FullOpts)
48 (1.22 % of base) : 270202.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex350_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
48 (2.42 % of base) : 171465.dasm - System.Xml.Schema.TypedObject:Equals(System.Xml.Schema.TypedObject):ubyte:this (FullOpts)
44 (1.13 % of base) : 213388.dasm - System.Tests.ArrayTests+<Sort_Array_TestData>d__158:MoveNext():ubyte:this (FullOpts)
44 (1.77 % of base) : 170865.dasm - System.Xml.XslCompiledTransformApiTests.CLoadXmlResolverTest:LoadGeneric7(System.Object,int,int,int,int):this (FullOpts)
40 (1.04 % of base) : 152615.dasm - System.Net.Quic.Tests.MsQuicTests+<ConnectWithCertificate_MissingTargetHost_Succeeds>d__12:MoveNext():this (FullOpts)
40 (0.33 % of base) : 204177.dasm - System.Tests.EnumTests+<Parse_TestData>d__0:MoveNext():ubyte:this (FullOpts)
40 (0.89 % of base) : 164127.dasm - System.Xml.Serialization.XmlSerializationReader:ReadArray(System.String,System.String):System.Array:this (FullOpts)
32 (1.72 % of base) : 209369.dasm - System.Tests.TimeZoneInfoTests:NJulianRuleTest(System.String,int,int,ubyte) (FullOpts)
24 (0.98 % of base) : 3700.dasm - ComInterfaceGenerator.Unit.Tests.CodeSnippets:BasicReturnTypeComExceptionHandling(System.String,System.String):System.String:this (FullOpts)
24 (0.95 % of base) : 90149.dasm - System.Data.DataTable:ParseSortString(System.String):System.Data.IndexField[]:this (FullOpts)
24 (0.34 % of base) : 202699.dasm - System.Tests.StringTests:TrimWhiteSpaceMultipleTimes_Memory() (FullOpts)
24 (1.60 % of base) : 282648.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3524_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
24 (1.77 % of base) : 149227.dasm - Systen.Net.Mail.Tests.LoopbackSmtpServer+ParsedMailMessage:Parse(System.String):Systen.Net.Mail.Tests.LoopbackSmtpServer+ParsedMailMessage (FullOpts)
20 (0.79 % of base) : 263438.dasm - Newtonsoft.Json.Utilities.ConvertUtils:DecimalTryParse(ushort[],int,int,byref):int (FullOpts)
20 (1.25 % of base) : 122503.dasm - System.IO.Tests.Sync_DerivedFileStream_ReadWrite_Span:CallSpanReadWriteOnDerivedFileStream_ArrayMethodsUsed():this (FullOpts)
20 (0.66 % of base) : 213465.dasm - System.Tests.ArrayTests:GetValue_RankOneInt_SetValue() (FullOpts)
20 (1.94 % of base) : 204173.dasm - System.Tests.StringTests:OnlyWhiteSpaceTrim() (FullOpts)
20 (1.05 % of base) : 296767.dasm - System.Threading.Tasks.Dataflow.Tests.ActionBlockTests+<TestParallelExecution>d__16:MoveNext():this (FullOpts)
20 (1.26 % of base) : 93396.dasm - System.Xml.XmlTextReaderImpl:ReadValueChunk(ushort[],int,int):int:this (FullOpts)
Top method improvements (bytes):
-112 (-1.38 % of base) : 279721.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1360_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-84 (-1.26 % of base) : 197558.dasm - DataContractSerializerTests:DCS_BasicPerSerializerRoundTripAndCompare_EnumStruct() (FullOpts)
-76 (-1.15 % of base) : 199255.dasm - DataContractSerializerTests:DCS_BasicPerSerializerRoundTripAndCompare_EnumStruct() (FullOpts)
-48 (-1.29 % of base) : 119632.dasm - System.Globalization.Tests.CompareInfoCompareTests:TestIgnoreKanaAndWidthCases():this (FullOpts)
-44 (-1.32 % of base) : 171728.dasm - System.Xml.XmlSchemaTests.TestData:.cctor() (FullOpts)
-40 (-1.54 % of base) : 123200.dasm - System.IO.Tests.Directory_Move:UnixWhitespacePath():this (FullOpts)
-36 (-0.94 % of base) : 274208.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3975_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-32 (-1.18 % of base) : 222467.dasm - System.Security.Cryptography.X509Certificates.Tests.ExtensionsTests.SubjectAlternativeNameTests:CopyFromAfterLoaded(int) (FullOpts)
-32 (-1.73 % of base) : 222466.dasm - System.Security.Cryptography.X509Certificates.Tests.ExtensionsTests.SubjectAlternativeNameTests:EnumerateDnsNames(int) (FullOpts)
-32 (-1.72 % of base) : 222476.dasm - System.Security.Cryptography.X509Certificates.Tests.ExtensionsTests.SubjectAlternativeNameTests:EnumerateIPAddresses(int) (FullOpts)
-28 (-0.80 % of base) : 42281.dasm - Microsoft.CodeAnalysis.SolutionState:AddProject(Microsoft.CodeAnalysis.ProjectId,Microsoft.CodeAnalysis.ProjectState):Microsoft.CodeAnalysis.SolutionState:this (FullOpts)
-28 (-3.74 % of base) : 190826.dasm - System.Runtime.Loader.Tests.RefEmitLoadContextTests:Init() (FullOpts)
-28 (-1.41 % of base) : 168637.dasm - System.Xml.XslTransformApiTests.CArgAddParam:AddParam14(int,int,int,int):this (FullOpts)
-28 (-1.35 % of base) : 168529.dasm - System.Xml.XslTransformApiTests.CArgAddParam:AddParam20(int,int,int,int):this (FullOpts)
-24 (-0.83 % of base) : 122767.dasm - System.IO.Tests.Directory_GetFileSystemEntries_str_str:SearchPatternExactMatch():this (FullOpts)
-24 (-1.48 % of base) : 123203.dasm - System.IO.Tests.Directory_Move:ToNewDirectoryButWithDifferentCasing():this (FullOpts)
-24 (-1.69 % of base) : 214026.dasm - System.Security.Cryptography.Cose.Tests.CoseHeaderMapTests:SetValue_InvalidCoseHeaderValue():this (FullOpts)
-20 (-0.76 % of base) : 5461.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetDiagnosticsWithoutSeverityFiltering(int,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Predicate`1[Microsoft.CodeAnalysis.CSharp.Symbol],System.Threading.CancellationToken):this (FullOpts)
-20 (-0.36 % of base) : 45761.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)
-20 (-2.26 % of base) : 52371.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
Top method regressions (percentages):
12 (7.32 % of base) : 71833.dasm - System.Collections.CaseInsensitiveHashCodeProvider:GetHashCode(System.Object):int:this (FullOpts)
8 (4.65 % of base) : 122258.dasm - System.Net.SocketAddress:set_Size(int):this (FullOpts)
12 (4.23 % of base) : 90675.dasm - System.Data.ExpressionParser:LoadExpression(System.String):this (FullOpts)
12 (3.30 % of base) : 213758.dasm - System.Security.Cryptography.Cose.Tests.CoseMessageTests_Sign`1[System.__Canon]:SignWithNullContent():this (FullOpts)
12 (3.09 % of base) : 148707.dasm - System.Net.WebSockets.HttpWebSocket:ValidateOptions(System.String,int,int,System.TimeSpan) (FullOpts)
16 (2.99 % of base) : 206535.dasm - System.Tests.DecimalTests:GetBits(System.Decimal,int[]) (FullOpts)
16 (2.63 % of base) : 183232.dasm - System.Reflection.Tests.CustomAttributeInstantiator:Convert(System.Reflection.CustomAttributeTypedArgument):System.Object (FullOpts)
16 (2.50 % of base) : 219180.dasm - System.Security.Cryptography.EcDsa.Tests.ECDsaSignatureFormatTests:OpenKey(byref):System.Security.Cryptography.Algorithms.Tests.DsaFamilySignatureFormatTests+KeyDescription (FullOpts)
48 (2.42 % of base) : 171465.dasm - System.Xml.Schema.TypedObject:Equals(System.Xml.Schema.TypedObject):ubyte:this (FullOpts)
12 (2.40 % of base) : 146100.dasm - System.Net.Http.AuthenticationHelper:ComputeHash(System.String,System.String):System.String (FullOpts)
16 (2.33 % of base) : 26051.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object,int,int) (FullOpts)
16 (2.31 % of base) : 26052.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object,int,int) (FullOpts)
48 (2.25 % of base) : 202538.dasm - System.Tests.StringTests:WhiteSpaceAtStartAndEndTrim() (FullOpts)
12 (2.07 % of base) : 304605.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:SetCollectionObjectWithCollectionMember(byref,System.Xml.Serialization.ReflectionXmlSerializationReader+CollectionMember,System.Type) (FullOpts)
20 (1.94 % of base) : 204173.dasm - System.Tests.StringTests:OnlyWhiteSpaceTrim() (FullOpts)
4 (1.92 % of base) : 91767.dasm - System.Data.XmlDataTreeWriter:PreserveSpace(System.Object):ubyte (FullOpts)
16 (1.92 % of base) : 164725.dasm - System.Xml.XmlTextWriter:GeneratePrefix():System.String:this (FullOpts)
8 (1.90 % of base) : 124308.dasm - System.IO.Tests.File_GetSetTimes_SafeFileHandle+<>c:<NullArgumentValidation>b__18_2():System.Object:this (FullOpts)
24 (1.77 % of base) : 149227.dasm - Systen.Net.Mail.Tests.LoopbackSmtpServer+ParsedMailMessage:Parse(System.String):Systen.Net.Mail.Tests.LoopbackSmtpServer+ParsedMailMessage (FullOpts)
44 (1.77 % of base) : 170865.dasm - System.Xml.XslCompiledTransformApiTests.CLoadXmlResolverTest:LoadGeneric7(System.Object,int,int,int,int):this (FullOpts)
Top method improvements (percentages):
-28 (-3.74 % of base) : 190826.dasm - System.Runtime.Loader.Tests.RefEmitLoadContextTests:Init() (FullOpts)
-12 (-3.70 % of base) : 224517.dasm - System.Security.Cryptography.X509Certificates.Tests.ExtensionsTests.AuthorityKeyIdentifierTests+<>c__DisplayClass15_0:<DecodeInvalid>b__1():System.Object:this (FullOpts)
-8 (-3.64 % of base) : 8225.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceParameterSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Predicate`1[Microsoft.CodeAnalysis.CSharp.Symbol],System.Threading.CancellationToken):this (FullOpts)
-12 (-3.61 % of base) : 222472.dasm - System.Security.Cryptography.X509Certificates.Tests.ExtensionsTests.SubjectAlternativeNameTests+<>c__DisplayClass8_0:<VerifyDecodeFailure>b__1():System.Object:this (FullOpts)
-16 (-2.90 % of base) : 201142.dasm - System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:AppendFormatted[System.Text.Unicode.Tests.Utf8Tests+FormattableInt32Wrapper](System.Text.Unicode.Tests.Utf8Tests+FormattableInt32Wrapper,System.String):ubyte:this (FullOpts)
-8 (-2.60 % of base) : 16379.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldLikeEventSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Predicate`1[Microsoft.CodeAnalysis.CSharp.Symbol],System.Threading.CancellationToken):this (FullOpts)
-12 (-2.56 % of base) : 14457.dasm - Microsoft.CodeAnalysis.CSharp.CSharpSemanticModel:GetParameterSymbol(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Syntax.ParameterSyntax,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol:this (FullOpts)
-20 (-2.43 % of base) : 170856.dasm - System.Xml.XslCompiledTransformApiTests.CLoadXmlResolverTest:LoadGeneric3(System.Object,int,int,int,int):this (FullOpts)
-20 (-2.26 % of base) : 52371.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
-20 (-2.26 % of base) : 45753.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedExplicitImplementationForwardingMethod]:this (FullOpts)
-8 (-2.08 % of base) : 224516.dasm - System.Security.Cryptography.X509Certificates.Tests.ExtensionsTests.AuthorityKeyIdentifierTests+<>c__DisplayClass15_0:<DecodeInvalid>b__0():System.Object:this (FullOpts)
-20 (-2.06 % of base) : 172125.dasm - System.Xml.XmlSchemaTests.TC_SchemaSet_Misc:v118():this (FullOpts)
-8 (-2.04 % of base) : 222471.dasm - System.Security.Cryptography.X509Certificates.Tests.ExtensionsTests.SubjectAlternativeNameTests+<>c__DisplayClass8_0:<VerifyDecodeFailure>b__0():System.Object:this (FullOpts)
-12 (-2.03 % of base) : 52309.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+UsingsFromOptionsAndDiagnostics:Complete(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,System.Threading.CancellationToken):this (FullOpts)
-12 (-2.03 % of base) : 45689.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+UsingsFromOptionsAndDiagnostics:Complete(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,System.Threading.CancellationToken):this (FullOpts)
-12 (-2.03 % of base) : 5513.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+UsingsFromOptionsAndDiagnostics:Complete(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,System.Threading.CancellationToken):this (FullOpts)
-8 (-1.87 % of base) : 144209.dasm - System.Memory.Tests.Span.StringSearchValuesTests:Create_OnlyOrdinalComparisonIsSupported() (FullOpts)
-4 (-1.85 % of base) : 105285.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.context.property.autoproperty.genclass.genclass001.genclass001.Test:MainMethod():int (FullOpts)
-8 (-1.83 % of base) : 186943.dasm - System.IO.Tests.PathTests:GetDirectoryName_Span_CurrentDirectory():this (FullOpts)
-8 (-1.77 % of base) : 10500.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceTypeParameterSymbolBase:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Predicate`1[Microsoft.CodeAnalysis.CSharp.Symbol],System.Threading.CancellationToken):this (FullOpts)
linux x64
Diffs are based on 2,542,702 contexts (985,624 MinOpts, 1,557,078 FullOpts).
MISSED contexts: base: 0 (0.00%), diff: 95 (0.00%)
Overall (+420,577 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run_pgo.linux.x64.checked.mch |
69,699,439 |
-55,836 |
| coreclr_tests.run.linux.x64.checked.mch |
403,413,227 |
+19,477 |
| libraries.pmi.linux.x64.checked.mch |
60,773,002 |
+2,467 |
| libraries_tests.run.linux.x64.Release.mch |
336,651,500 |
+446,207 |
| librariestestsnotieredcompilation.run.linux.x64.Release.mch |
132,477,813 |
+8,262 |
FullOpts (+420,577 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run_pgo.linux.x64.checked.mch |
46,789,254 |
-55,836 |
| coreclr_tests.run.linux.x64.checked.mch |
123,798,121 |
+19,477 |
| libraries.pmi.linux.x64.checked.mch |
60,660,145 |
+2,467 |
| libraries_tests.run.linux.x64.Release.mch |
153,474,826 |
+446,207 |
| librariestestsnotieredcompilation.run.linux.x64.Release.mch |
121,893,760 |
+8,262 |
Example diffs
benchmarks.run_pgo.linux.x64.checked.mch
-26 (-9.09%) : 89967.dasm - System.String:Substring(int):System.String:this (Tier1)
@@ -40,34 +40,50 @@ G_M5637_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[r15]
mov ebx, esi
;; size=18 bbWeight=1 PerfScore 6.00
-G_M5637_IG02: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
+G_M5637_IG02: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
test ebx, ebx
- je G_M5637_IG09
+ je G_M5637_IG11
mov r14d, dword ptr [r15+0x08]
mov r13d, r14d
sub r13d, ebx
- je G_M5637_IG11
+ je G_M5637_IG13
cmp r14d, ebx
- jb G_M5637_IG13
+ jb G_M5637_IG15
test ebx, ebx
- jl G_M5637_IG14
+ jl SHORT G_M5637_IG03
xor edi, edi
cmp r14d, ebx
setge dil
test dil, dil
- je G_M5637_IG14
- ;; size=59 bbWeight=1 PerfScore 10.00
+ jne SHORT G_M5637_IG04
+ ;; size=51 bbWeight=1 PerfScore 10.00
G_M5637_IG03: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
+ mov rdi, 0xD1FFAB1E
+ ; gcrRegs +[rdi]
+ mov rsi, 0xD1FFAB1E
+ ; gcrRegs +[rsi]
+ call [<unknown method>]
+ ; gcrRegs -[rsi rdi]
+ ;; size=26 bbWeight=1 PerfScore 3.50
+G_M5637_IG04: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
test r13d, r13d
- jl G_M5637_IG15
+ jl SHORT G_M5637_IG05
sub r14d, r13d
xor edi, edi
cmp r14d, ebx
setge dil
test dil, dil
- je G_M5637_IG15
- ;; size=30 bbWeight=1 PerfScore 4.25
-G_M5637_IG04: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M5637_IG06
+ ;; size=22 bbWeight=1 PerfScore 4.25
+G_M5637_IG05: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
+ mov rdi, 0xD1FFAB1E
+ ; gcrRegs +[rdi]
+ mov rsi, 0xD1FFAB1E
+ ; gcrRegs +[rsi]
+ call [<unknown method>]
+ ; gcrRegs -[rsi rdi]
+ ;; size=26 bbWeight=1 PerfScore 3.50
+G_M5637_IG06: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
mov edi, r13d
call <unknown method>
; gcrRegs +[rax]
@@ -82,25 +98,25 @@ G_M5637_IG04: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byre
; byrRegs +[rsi]
add rdx, rdx
cmp rdx, 10
- jne SHORT G_M5637_IG06
+ jne SHORT G_M5637_IG08
;; size=37 bbWeight=1 PerfScore 8.00
-G_M5637_IG05: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=00C0 {rsi rdi}, byref, isz
+G_M5637_IG07: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=00C0 {rsi rdi}, byref, isz
; gcrRegs -[rax r15]
mov rax, qword ptr [rsi]
mov rdx, qword ptr [rsi+0x02]
mov qword ptr [rdi], rax
mov qword ptr [rdi+0x02], rdx
- jmp SHORT G_M5637_IG07
+ jmp SHORT G_M5637_IG09
;; size=16 bbWeight=0.50 PerfScore 4.00
-G_M5637_IG06: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=00C0 {rsi rdi}, byref
+G_M5637_IG08: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=00C0 {rsi rdi}, byref
call [<unknown method>]
; byrRegs -[rsi rdi]
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M5637_IG07: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+G_M5637_IG09: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
mov rax, r14
; gcrRegs +[rax]
;; size=3 bbWeight=1 PerfScore 0.25
-G_M5637_IG08: ; bbWeight=1, epilog, nogc, extend
+G_M5637_IG10: ; bbWeight=1, epilog, nogc, extend
pop rbx
pop r13
pop r14
@@ -108,24 +124,11 @@ G_M5637_IG08: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=9 bbWeight=1 PerfScore 3.50
-G_M5637_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref
+G_M5637_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax r14] +[r15]
mov rax, r15
; gcrRegs +[rax]
;; size=3 bbWeight=0 PerfScore 0.00
-G_M5637_IG10: ; bbWeight=0, epilog, nogc, extend
- pop rbx
- pop r13
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=9 bbWeight=0 PerfScore 0.00
-G_M5637_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax r15]
- mov rax, 0xD1FFAB1E
- ; gcrRegs +[rax]
- ;; size=10 bbWeight=0 PerfScore 0.00
G_M5637_IG12: ; bbWeight=0, epilog, nogc, extend
pop rbx
pop r13
@@ -134,7 +137,20 @@ G_M5637_IG12: ; bbWeight=0, epilog, nogc, extend
pop rbp
ret
;; size=9 bbWeight=0 PerfScore 0.00
-G_M5637_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref
+G_M5637_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax r15]
+ mov rax, 0xD1FFAB1E
+ ; gcrRegs +[rax]
+ ;; size=10 bbWeight=0 PerfScore 0.00
+G_M5637_IG14: ; bbWeight=0, epilog, nogc, extend
+ pop rbx
+ pop r13
+ pop r14
+ pop r15
+ pop rbp
+ ret
+ ;; size=9 bbWeight=0 PerfScore 0.00
+G_M5637_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax] +[r15]
mov rdi, r15
; gcrRegs +[rdi]
@@ -144,27 +160,8 @@ G_M5637_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8000 {r
; gcrRegs -[rdi r15]
int3
;; size=15 bbWeight=0 PerfScore 0.00
-G_M5637_IG14: ; bbWeight=0, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
- ; gcrRegs +[r15]
- mov rdi, 0xD1FFAB1E
- ; gcrRegs +[rdi]
- mov rsi, 0xD1FFAB1E
- ; gcrRegs +[rsi]
- call [<unknown method>]
- ; gcrRegs -[rsi rdi]
- jmp G_M5637_IG03
- ;; size=31 bbWeight=0 PerfScore 0.00
-G_M5637_IG15: ; bbWeight=0, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
- mov rdi, 0xD1FFAB1E
- ; gcrRegs +[rdi]
- mov rsi, 0xD1FFAB1E
- ; gcrRegs +[rsi]
- call [<unknown method>]
- ; gcrRegs -[rsi rdi]
- jmp G_M5637_IG04
- ;; size=31 bbWeight=0 PerfScore 0.00
-; Total bytes of code 286, prolog size 13, PerfScore 37.50, instruction count 82, allocated bytes for code 286 (MethodHash=28a4e9fa) for method System.String:Substring(int):System.String:this (Tier1)
+; Total bytes of code 260, prolog size 13, PerfScore 44.50, instruction count 80, allocated bytes for code 260 (MethodHash=28a4e9fa) for method System.String:Substring(int):System.String:this (Tier1)
; ============================================================
Unwind Info:
-11 (-9.02%) : 93779.dasm - Interop+Crypto:CheckValidOpenSslHandle(System.Runtime.InteropServices.SafeHandle) (Tier1)
@@ -9,68 +9,62 @@
; 1 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 10, 6 ) ref -> rbx class-hnd single-def <System.Runtime.InteropServices.SafeHandle>
-; V01 loc0 [V01,T03] ( 2, 0 ) ref -> r14 class-hnd single-def <System.Exception>
+; V00 arg0 [V00,T00] ( 11, 5 ) ref -> rbx class-hnd single-def <System.Runtime.InteropServices.SafeHandle>
+; V01 loc0 [V01,T01] ( 2, 0 ) ref -> r15 class-hnd single-def <System.Exception>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 2, 2 ) int -> rax "guarded devirt return temp"
+; V03 tmp1 [V03,T02] ( 2, 0 ) int -> rax "guarded devirt return temp"
;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.Win32.SafeHandles.SafeEvpMdCtxHandle>
-; V05 cse0 [V05,T01] ( 5, 3 ) long -> r15 multi-def "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M457_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
- push r14
push rbx
- push rax
- lea rbp, [rsp+0x20]
+ lea rbp, [rsp+0x10]
mov rbx, rdi
; gcrRegs +[rbx]
- ;; size=15 bbWeight=1 PerfScore 5.75
+ ;; size=12 bbWeight=1 PerfScore 3.75
G_M457_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
test rbx, rbx
je SHORT G_M457_IG05
- mov r15, qword ptr [rbx]
mov rdi, 0xD1FFAB1E ; Microsoft.Win32.SafeHandles.SafeEvpMdCtxHandle
- cmp r15, rdi
- jne SHORT G_M457_IG03
- cmp qword ptr [rbx+0x10], 0
+ cmp qword ptr [rbx], rdi
jne SHORT G_M457_IG04
- jmp SHORT G_M457_IG05
- ;; size=32 bbWeight=1 PerfScore 10.75
-G_M457_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rdi, rbx
- ; gcrRegs +[rdi]
- mov rax, qword ptr [r15+0x48]
- call [rax+0x20]<unknown method>
- ; gcrRegs -[rdi]
- test eax, eax
- jne SHORT G_M457_IG05
- ;; size=14 bbWeight=1 PerfScore 6.50
-G_M457_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ cmp qword ptr [rbx+0x10], 0
+ je SHORT G_M457_IG05
+ ;; size=27 bbWeight=1 PerfScore 9.50
+G_M457_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx]
- add rsp, 8
pop rbx
- pop r14
pop r15
pop rbp
ret
- ;; size=11 bbWeight=1 PerfScore 3.25
-G_M457_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=5 bbWeight=1 PerfScore 2.50
+G_M457_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx]
+ mov rdi, rbx
+ ; gcrRegs +[rdi]
+ mov rax, qword ptr [rbx]
+ mov rax, qword ptr [rax+0x48]
+ call [rax+0x20]<unknown method>
+ ; gcrRegs -[rdi]
+ test eax, eax
+ je SHORT G_M457_IG03
+ ;; size=17 bbWeight=0 PerfScore 0.00
+G_M457_IG05: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
call [Interop+Crypto:CreateOpenSslCryptographicException():System.Exception]
; gcrRegs +[rax]
- mov r14, rax
- ; gcrRegs +[r14]
+ mov r15, rax
+ ; gcrRegs +[r15]
test rbx, rbx
je SHORT G_M457_IG06
mov rdi, rbx
; gcrRegs +[rdi]
mov esi, 1
- mov r15, qword ptr [rbx]
- mov rax, qword ptr [r15+0x48]
+ mov rax, qword ptr [rbx]
; gcrRegs -[rax]
+ mov rax, qword ptr [rax+0x48]
call [rax+0x30]<unknown method>
; gcrRegs -[rdi]
mov rdi, rbx
@@ -78,15 +72,15 @@ G_M457_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rb
call [System.GC:SuppressFinalize(System.Object)]
; gcrRegs -[rbx rdi]
;; size=41 bbWeight=0 PerfScore 0.00
-G_M457_IG06: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
- mov rdi, r14
+G_M457_IG06: ; bbWeight=0, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
+ mov rdi, r15
; gcrRegs +[rdi]
call CORINFO_HELP_THROW
- ; gcrRegs -[rdi r14]
+ ; gcrRegs -[rdi r15]
int3
;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 122, prolog size 12, PerfScore 26.25, instruction count 41, allocated bytes for code 122 (MethodHash=07b5fe36) for method Interop+Crypto:CheckValidOpenSslHandle(System.Runtime.InteropServices.SafeHandle) (Tier1)
+; Total bytes of code 111, prolog size 9, PerfScore 15.75, instruction count 36, allocated bytes for code 111 (MethodHash=07b5fe36) for method Interop+Crypto:CheckValidOpenSslHandle(System.Runtime.InteropServices.SafeHandle) (Tier1)
; ============================================================
Unwind Info:
@@ -94,13 +88,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x07
- CountOfUnwindCodes: 5
+ SizeOfProlog : 0x04
+ CountOfUnwindCodes: 3
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-26 (-8.55%) : 103230.dasm - System.String:Substring(int,int):System.String:this (Tier1)
@@ -29,7 +29,7 @@
;
; Lcl frame size = 0
-G_M1562_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M1562_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
push r15
push r14
@@ -41,37 +41,53 @@ G_M1562_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov r15d, esi
mov ebx, edx
;; size=21 bbWeight=1 PerfScore 6.25
-G_M1562_IG02: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+G_M1562_IG02: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
mov edi, r15d
- mov eax, ebx
- add rdi, rax
+ mov esi, ebx
+ add rdi, rsi
mov r13d, dword ptr [r14+0x08]
- mov eax, r13d
- cmp rdi, rax
- ja G_M1562_IG09
+ mov esi, r13d
+ cmp rdi, rsi
+ ja G_M1562_IG11
test ebx, ebx
- je G_M1562_IG10
- cmp r13d, ebx
je G_M1562_IG12
+ cmp r13d, ebx
+ je G_M1562_IG14
test r15d, r15d
- jl G_M1562_IG14
+ jl SHORT G_M1562_IG03
xor edi, edi
cmp r13d, r15d
setge dil
test dil, dil
- je G_M1562_IG14
- ;; size=68 bbWeight=1 PerfScore 10.75
+ jne SHORT G_M1562_IG04
+ ;; size=60 bbWeight=1 PerfScore 10.75
G_M1562_IG03: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+ mov rdi, 0xD1FFAB1E
+ ; gcrRegs +[rdi]
+ mov rsi, 0xD1FFAB1E
+ ; gcrRegs +[rsi]
+ call [<unknown method>]
+ ; gcrRegs -[rsi rdi]
+ ;; size=26 bbWeight=1 PerfScore 3.50
+G_M1562_IG04: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
test ebx, ebx
- jl G_M1562_IG15
+ jl SHORT G_M1562_IG05
sub r13d, ebx
xor edi, edi
cmp r13d, r15d
setge dil
test dil, dil
- je G_M1562_IG15
- ;; size=29 bbWeight=1 PerfScore 4.25
-G_M1562_IG04: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M1562_IG06
+ ;; size=21 bbWeight=1 PerfScore 4.25
+G_M1562_IG05: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+ mov rdi, 0xD1FFAB1E
+ ; gcrRegs +[rdi]
+ mov rsi, 0xD1FFAB1E
+ ; gcrRegs +[rsi]
+ call [<unknown method>]
+ ; gcrRegs -[rsi rdi]
+ ;; size=26 bbWeight=1 PerfScore 3.50
+G_M1562_IG06: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
mov edi, ebx
call <unknown method>
; gcrRegs +[rax]
@@ -86,23 +102,23 @@ G_M1562_IG04: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byre
; byrRegs +[rsi]
add rdx, rdx
cmp rdx, 2
- jne SHORT G_M1562_IG06
+ jne SHORT G_M1562_IG08
;; size=37 bbWeight=1 PerfScore 8.00
-G_M1562_IG05: ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=00C0 {rsi rdi}, byref, isz
+G_M1562_IG07: ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=00C0 {rsi rdi}, byref, isz
; gcrRegs -[rax r14]
movzx rdx, word ptr [rsi]
mov word ptr [rdi], dx
- jmp SHORT G_M1562_IG07
+ jmp SHORT G_M1562_IG09
;; size=8 bbWeight=0.50 PerfScore 2.50
-G_M1562_IG06: ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=00C0 {rsi rdi}, byref
+G_M1562_IG08: ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=00C0 {rsi rdi}, byref
call [<unknown method>]
; byrRegs -[rsi rdi]
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M1562_IG07: ; bbWeight=1, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
+G_M1562_IG09: ; bbWeight=1, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
mov rax, r13
; gcrRegs +[rax]
;; size=3 bbWeight=1 PerfScore 0.25
-G_M1562_IG08: ; bbWeight=1, epilog, nogc, extend
+G_M1562_IG10: ; bbWeight=1, epilog, nogc, extend
pop rbx
pop r13
pop r14
@@ -110,7 +126,7 @@ G_M1562_IG08: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=9 bbWeight=1 PerfScore 3.50
-G_M1562_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref
+G_M1562_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax r13] +[r14]
mov rdi, r14
; gcrRegs +[rdi]
@@ -120,27 +136,10 @@ G_M1562_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=4000 {r
; gcrRegs -[rdi r14]
int3
;; size=15 bbWeight=0 PerfScore 0.00
-G_M1562_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M1562_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rax, 0xD1FFAB1E
; gcrRegs +[rax]
;; size=10 bbWeight=0 PerfScore 0.00
-G_M1562_IG11: ; bbWeight=0, epilog, nogc, extend
- pop rbx
- pop r13
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=9 bbWeight=0 PerfScore 0.00
-G_M1562_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax] +[r14]
- xor edi, edi
- test r15d, r15d
- sete dil
- call [System.Diagnostics.Debug:Assert(ubyte)]
- mov rax, r14
- ; gcrRegs +[rax]
- ;; size=18 bbWeight=0 PerfScore 0.00
G_M1562_IG13: ; bbWeight=0, epilog, nogc, extend
pop rbx
pop r13
@@ -150,26 +149,24 @@ G_M1562_IG13: ; bbWeight=0, epilog, nogc, extend
ret
;; size=9 bbWeight=0 PerfScore 0.00
G_M1562_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax]
- mov rdi, 0xD1FFAB1E
- ; gcrRegs +[rdi]
- mov rsi, 0xD1FFAB1E
- ; gcrRegs +[rsi]
- call [<unknown method>]
- ; gcrRegs -[rsi rdi]
- jmp G_M1562_IG03
- ;; size=31 bbWeight=0 PerfScore 0.00
-G_M1562_IG15: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
- mov rdi, 0xD1FFAB1E
- ; gcrRegs +[rdi]
- mov rsi, 0xD1FFAB1E
- ; gcrRegs +[rsi]
- call [<unknown method>]
- ; gcrRegs -[rsi rdi]
- jmp G_M1562_IG04
- ;; size=31 bbWeight=0 PerfScore 0.00
+ ; gcrRegs -[rax] +[r14]
+ xor edi, edi
+ test r15d, r15d
+ sete dil
+ call [System.Diagnostics.Debug:Assert(ubyte)]
+ mov rax, r14
+ ; gcrRegs +[rax]
+ ;; size=18 bbWeight=0 PerfScore 0.00
+G_M1562_IG15: ; bbWeight=0, epilog, nogc, extend
+ pop rbx
+ pop r13
+ pop r14
+ pop r15
+ pop rbp
+ ret
+ ;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 304, prolog size 13, PerfScore 37.00, instruction count 88, allocated bytes for code 304 (MethodHash=c7e4f9e5) for method System.String:Substring(int,int):System.String:this (Tier1)
+; Total bytes of code 278, prolog size 13, PerfScore 44.00, instruction count 86, allocated bytes for code 278 (MethodHash=c7e4f9e5) for method System.String:Substring(int,int):System.String:this (Tier1)
; ============================================================
Unwind Info:
+8 (+11.94%) : 102462.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:IsInDocumentationComment(Microsoft.CodeAnalysis.SyntaxNode):ubyte (Tier1)
@@ -9,13 +9,13 @@
; 2 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 3, 3 ) ref -> rdi class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode>
+; V00 arg0 [V00,T03] ( 3, 3 ) ref -> rdi class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode>
; V01 loc0 [V01,T00] ( 6, 22.04) ref -> rdi class-hnd <Microsoft.CodeAnalysis.SyntaxNode>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 4, 15.03) ushort -> rcx "Inline return value spill temp"
+; V03 tmp1 [V03,T01] ( 5, 15.03) ushort -> rcx "Inline return value spill temp"
; V04 tmp2 [V04,T02] ( 3, 15.03) int -> rcx "Inline stloc first use temp"
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
-;* V06 tmp4 [V06,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V06 tmp4 [V06,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;
; Lcl frame size = 0
@@ -26,7 +26,7 @@ G_M65070_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M65070_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi]
test rdi, rdi
- je SHORT G_M65070_IG05
+ je SHORT G_M65070_IG08
;; size=5 bbWeight=1 PerfScore 1.25
G_M65070_IG03: ; bbWeight=5.01, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
mov rax, gword ptr [rdi+0x18]
@@ -35,39 +35,45 @@ G_M65070_IG03: ; bbWeight=5.01, gcrefRegs=0080 {rdi}, byrefRegs=0000 {},
lea eax, [rcx-0x02]
; gcrRegs -[rax]
cmp eax, 0x1FFE
- jbe SHORT G_M65070_IG09
- ;; size=18 bbWeight=5.01 PerfScore 28.80
-G_M65070_IG04: ; bbWeight=5.01, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ jbe SHORT G_M65070_IG10
cmp ecx, 0x2160
- je SHORT G_M65070_IG07
+ je SHORT G_M65070_IG05
+ ;; size=26 bbWeight=5.01 PerfScore 35.06
+G_M65070_IG04: ; bbWeight=5.01, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
cmp ecx, 0x2161
- je SHORT G_M65070_IG07
- mov rdi, gword ptr [rdi+0x08]
- test rdi, rdi
- jne SHORT G_M65070_IG03
- ;; size=25 bbWeight=5.01 PerfScore 28.80
-G_M65070_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jne SHORT G_M65070_IG07
+ ;; size=8 bbWeight=5.01 PerfScore 6.26
+G_M65070_IG05: ; bbWeight=5.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
- xor eax, eax
- ;; size=2 bbWeight=1 PerfScore 0.25
-G_M65070_IG06: ; bbWeight=1, epilog, nogc, extend
- pop rbp
- ret
- ;; size=2 bbWeight=1 PerfScore 1.50
-G_M65070_IG07: ; bbWeight=5.01, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, 1
;; size=5 bbWeight=5.01 PerfScore 1.25
-G_M65070_IG08: ; bbWeight=5.01, epilog, nogc, extend
+G_M65070_IG06: ; bbWeight=5.01, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=5.01 PerfScore 7.51
-G_M65070_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M65070_IG07: ; bbWeight=5.01, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[rdi]
+ mov rdi, gword ptr [rdi+0x08]
+ test rdi, rdi
+ jne SHORT G_M65070_IG03
+ ;; size=9 bbWeight=5.01 PerfScore 16.28
+G_M65070_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rdi]
+ xor eax, eax
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M65070_IG09: ; bbWeight=1, epilog, nogc, extend
+ pop rbp
+ ret
+ ;; size=2 bbWeight=1 PerfScore 1.50
+G_M65070_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rdi]
xor ecx, ecx
- jmp SHORT G_M65070_IG04
- ;; size=4 bbWeight=0 PerfScore 0.00
+ cmp ecx, 0x2160
+ jne SHORT G_M65070_IG04
+ jmp SHORT G_M65070_IG05
+ ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 67, prolog size 4, PerfScore 70.62, instruction count 24, allocated bytes for code 67 (MethodHash=f34b01d1) for method Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:IsInDocumentationComment(Microsoft.CodeAnalysis.SyntaxNode):ubyte (Tier1)
+; Total bytes of code 75, prolog size 4, PerfScore 70.62, instruction count 26, allocated bytes for code 75 (MethodHash=f34b01d1) for method Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:IsInDocumentationComment(Microsoft.CodeAnalysis.SyntaxNode):ubyte (Tier1)
; ============================================================
Unwind Info:
+26 (+15.38%) : 131281.dasm - System.MemoryExtensions:Trim(System.ReadOnlySpan1[ushort]):System.ReadOnlySpan1ushort
@@ -11,9 +11,9 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T04] ( 2, 4 ) int -> rdi "Span.get_Item index"
-; V03 tmp2 [V03,T05] ( 2, 2 ) ubyte -> rax "Inline return value spill temp"
-; V04 tmp3 [V04,T00] ( 4, 8 ) ushort -> rdi "Inlining Arg"
+; V02 tmp1 [V02,T04] ( 4, 4 ) int -> r14 "Span.get_Item index"
+; V03 tmp2 [V03,T05] ( 2, 0 ) ubyte -> rax "Inline return value spill temp"
+; V04 tmp3 [V04,T03] ( 4, 6 ) ushort -> rdi "Inlining Arg"
;* V05 tmp4 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V06 tmp5 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V07 tmp6 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -21,8 +21,8 @@
;* V09 tmp8 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V10 tmp9 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V11 tmp10 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V12 tmp11 [V12,T06] ( 2, 2 ) ubyte -> rax "Inline return value spill temp"
-; V13 tmp12 [V13,T01] ( 4, 8 ) ushort -> rdi "Inlining Arg"
+; V12 tmp11 [V12,T06] ( 2, 0 ) ubyte -> rax "Inline return value spill temp"
+; V13 tmp12 [V13,T01] ( 6, 6 ) ushort -> rdi "Inlining Arg"
;* V14 tmp13 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V15 tmp14 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V16 tmp15 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -30,8 +30,8 @@
;* V18 tmp17 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V19 tmp18 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V20 tmp19 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V21 tmp20 [V21,T02] ( 5, 4 ) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V22 tmp21 [V22,T03] ( 5, 4 ) int -> r15 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V21 tmp20 [V21,T00] ( 6, 4 ) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V22 tmp21 [V22,T02] ( 6, 4 ) int -> r15 single-def "field V00._length (fldOffset=0x8)" P-INDEP
;* V23 tmp22 [V23 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP
;* V24 tmp23 [V24 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
;* V25 tmp24 [V25 ] ( 0, 0 ) byref -> zero-ref single-def "field V06._reference (fldOffset=0x0)" P-INDEP
@@ -56,88 +56,97 @@
;* V44 tmp43 [V44 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP
;* V45 tmp44 [V45 ] ( 0, 0 ) byref -> zero-ref single-def "field V20._reference (fldOffset=0x0)" P-INDEP
;* V46 tmp45 [V46 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
-; V47 tmp46 [V47,T07] ( 2, 0 ) struct (16) [rbp-0x20] do-not-enreg[SR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <System.ReadOnlySpan`1[ushort]>
+; V47 tmp46 [V47,T07] ( 2, 0 ) struct (16) [rbp-0x28] do-not-enreg[SR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <System.ReadOnlySpan`1[ushort]>
;
-; Lcl frame size = 16
+; Lcl frame size = 24
-G_M37241_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M37241_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
+ push r14
push rbx
- sub rsp, 16
- lea rbp, [rsp+0x20]
+ sub rsp, 24
+ lea rbp, [rsp+0x30]
xor eax, eax
- mov qword ptr [rbp-0x20], rax
+ mov qword ptr [rbp-0x28], rax
mov rbx, rdi
; byrRegs +[rbx]
mov r15d, esi
- ;; size=25 bbWeight=1 PerfScore 5.50
+ ;; size=27 bbWeight=1 PerfScore 6.50
G_M37241_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
test r15d, r15d
- je SHORT G_M37241_IG06
+ je SHORT G_M37241_IG04
movzx rdi, word ptr [rbx]
cmp edi, 256
- jb SHORT G_M37241_IG03
- call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
- test eax, eax
- jne SHORT G_M37241_IG08
- jmp SHORT G_M37241_IG04
- ;; size=28 bbWeight=1 PerfScore 10.75
-G_M37241_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- mov edi, edi
- mov rax, 0xD1FFAB1E ; static handle
- test byte ptr [rdi+rax], 128
- jne SHORT G_M37241_IG08
- ;; size=18 bbWeight=1 PerfScore 4.50
-G_M37241_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- lea edi, [r15-0x01]
- movzx rdi, word ptr [rbx+2*rdi]
- cmp edi, 256
- jb SHORT G_M37241_IG05
- call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
- test eax, eax
- jne SHORT G_M37241_IG08
- jmp SHORT G_M37241_IG06
- ;; size=28 bbWeight=1 PerfScore 10.00
-G_M37241_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ jae SHORT G_M37241_IG08
mov eax, edi
mov rdx, 0xD1FFAB1E ; static handle
test byte ptr [rax+rdx], 128
- jne SHORT G_M37241_IG08
+ jne SHORT G_M37241_IG06
+ lea r14d, [r15-0x01]
+ mov eax, r14d
+ movzx rdi, word ptr [rbx+2*rax]
+ cmp edi, 256
+ jae SHORT G_M37241_IG09
+ ;; size=53 bbWeight=1 PerfScore 13.00
+G_M37241_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ mov eax, edi
+ mov rdx, 0xD1FFAB1E ; static handle
+ test byte ptr [rax+rdx], 128
+ jne SHORT G_M37241_IG06
;; size=18 bbWeight=1 PerfScore 4.50
-G_M37241_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M37241_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov rax, rbx
; byrRegs +[rax]
mov rdx, r15
;; size=6 bbWeight=1 PerfScore 0.50
-G_M37241_IG07: ; bbWeight=1, epilog, nogc, extend
- add rsp, 16
+G_M37241_IG05: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 24
pop rbx
+ pop r14
pop r15
pop rbp
ret
- ;; size=9 bbWeight=1 PerfScore 2.75
-G_M37241_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
+ ;; size=11 bbWeight=1 PerfScore 3.25
+G_M37241_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
; byrRegs -[rax]
mov rdi, rbx
; byrRegs +[rdi]
mov esi, r15d
call [<unknown method>]
; byrRegs -[rbx rdi] +[rax]
- mov bword ptr [rbp-0x20], rax
- mov qword ptr [rbp-0x18], rdx
- mov rax, bword ptr [rbp-0x20]
- mov rdx, qword ptr [rbp-0x18]
+ mov bword ptr [rbp-0x28], rax
+ mov qword ptr [rbp-0x20], rdx
+ mov rax, bword ptr [rbp-0x28]
+ mov rdx, qword ptr [rbp-0x20]
;; size=28 bbWeight=0 PerfScore 0.00
-G_M37241_IG09: ; bbWeight=0, epilog, nogc, extend
- add rsp, 16
+G_M37241_IG07: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 24
pop rbx
+ pop r14
pop r15
pop rbp
ret
- ;; size=9 bbWeight=0 PerfScore 0.00
+ ;; size=11 bbWeight=0 PerfScore 0.00
+G_M37241_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref, isz
+ ; byrRegs -[rax] +[rbx]
+ call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
+ test eax, eax
+ jne SHORT G_M37241_IG06
+ lea r14d, [r15-0x01]
+ mov eax, r14d
+ movzx rdi, word ptr [rbx+2*rax]
+ cmp edi, 256
+ jb SHORT G_M37241_IG03
+ ;; size=29 bbWeight=0 PerfScore 0.00
+G_M37241_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
+ test eax, eax
+ jne SHORT G_M37241_IG06
+ jmp SHORT G_M37241_IG04
+ ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 169, prolog size 19, PerfScore 38.50, instruction count 53, allocated bytes for code 169 (MethodHash=76ed6e86) for method System.MemoryExtensions:Trim(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Tier1)
+; Total bytes of code 195, prolog size 21, PerfScore 27.75, instruction count 61, allocated bytes for code 195 (MethodHash=76ed6e86) for method System.MemoryExtensions:Trim(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Tier1)
; ============================================================
Unwind Info:
@@ -145,12 +154,13 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x08
- CountOfUnwindCodes: 4
+ SizeOfProlog : 0x0A
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 2 * 8 + 8 = 24 = 0x18
+ CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+25 (+21.74%) : 112530.dasm - System.Collections.Concurrent.ConcurrentQueue`1[System.Canon]:Enqueue(System.Canon):this (Tier1)
@@ -9,100 +9,112 @@
; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 4, 4 ) ref -> rdi this class-hnd single-def <System.Collections.Concurrent.ConcurrentQueue`1[System.__Canon]>
-; V01 arg1 [V01,T03] ( 4, 4 ) ref -> rsi class-hnd single-def <System.__Canon>
+; V00 this [V00,T02] ( 4, 3 ) ref -> rdi this class-hnd single-def <System.Collections.Concurrent.ConcurrentQueue`1[System.__Canon]>
+; V01 arg1 [V01,T03] ( 4, 3 ) ref -> rsi class-hnd single-def <System.__Canon>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V04 tmp2 [V04,T00] ( 5, 10.14) ref -> rcx class-hnd exact single-def "Inlining Arg" <System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]>
-; V05 tmp3 [V05,T06] ( 3, 3.05) ref -> rdx class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
-; V06 tmp4 [V06,T01] ( 7, 7.14) int -> rbx "Inline stloc first use temp"
-; V07 tmp5 [V07,T05] ( 3, 3.07) int -> rax "Inline stloc first use temp"
+;* V03 tmp1 [V03,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V04 tmp2 [V04,T00] ( 5, 10.14) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]>
+; V05 tmp3 [V05,T06] ( 3, 3.05) ref -> r15 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+; V06 tmp4 [V06,T01] ( 6, 6.14) int -> [rbp-0x24] spill-single-def "Inline stloc first use temp"
+; V07 tmp5 [V07,T05] ( 3, 3.07) int -> rcx "Inline stloc first use temp"
;* V08 tmp6 [V08 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V09 tmp7 [V09,T07] ( 3, 2.05) int -> r8 "Inline stloc first use temp"
-; V10 cse0 [V10,T04] ( 4, 4.05) byref -> r15 "CSE - aggressive"
+; V09 tmp7 [V09,T08] ( 3, 2.05) int -> rcx "Inline stloc first use temp"
+; V10 cse0 [V10,T04] ( 4, 4.05) byref -> r14 "CSE - aggressive"
+; V11 cse1 [V11,T07] ( 3, 3.05) int -> r13 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 16
G_M15407_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
+ push r14
+ push r13
push rbx
- lea rbp, [rsp+0x10]
- ;; size=9 bbWeight=1 PerfScore 3.50
+ sub rsp, 16
+ lea rbp, [rsp+0x30]
+ ;; size=17 bbWeight=1 PerfScore 5.75
G_M15407_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref
; gcrRegs +[rsi rdi]
- mov rcx, gword ptr [rdi+0x10]
- ; gcrRegs +[rcx]
- mov rdx, gword ptr [rcx+0x08]
- ; gcrRegs +[rdx]
+ mov rbx, gword ptr [rdi+0x10]
+ ; gcrRegs +[rbx]
+ mov r15, gword ptr [rbx+0x08]
+ ; gcrRegs +[r15]
;; size=8 bbWeight=1 PerfScore 4.00
-G_M15407_IG03: ; bbWeight=1.02, gcrefRegs=00C6 {rcx rdx rsi rdi}, byrefRegs=0000 {}, byref, isz
- mov ebx, dword ptr [rcx+0xA0]
- mov eax, ebx
- and eax, dword ptr [rcx+0x18]
- cmp eax, dword ptr [rdx+0x08]
- jae SHORT G_M15407_IG10
- shl rax, 4
- lea r15, bword ptr [rdx+rax+0x10]
- ; byrRegs +[r15]
- mov r8d, dword ptr [r15+0x08]
- sub r8d, ebx
+G_M15407_IG03: ; bbWeight=1.02, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+ mov eax, dword ptr [rbx+0xA0]
+ mov dword ptr [rbp-0x24], eax
+ mov ecx, eax
+ and ecx, dword ptr [rbx+0x18]
+ cmp ecx, dword ptr [r15+0x08]
+ jae SHORT G_M15407_IG09
+ shl rcx, 4
+ lea r14, bword ptr [r15+rcx+0x10]
+ ; byrRegs +[r14]
+ mov ecx, dword ptr [r14+0x08]
+ sub ecx, eax
jne SHORT G_M15407_IG06
- ;; size=34 bbWeight=1.02 PerfScore 14.34
-G_M15407_IG04: ; bbWeight=1.02, gcrefRegs=00C6 {rcx rdx rsi rdi}, byrefRegs=8000 {r15}, byref, isz
- lea r8, bword ptr [rcx+0xA0]
- ; byrRegs +[r8]
- lea r9d, [rbx+0x01]
- mov eax, ebx
+ ;; size=37 bbWeight=1.02 PerfScore 15.36
+G_M15407_IG04: ; bbWeight=1.02, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=4000 {r14}, byref, isz
+ lea rcx, bword ptr [rbx+0xA0]
+ ; byrRegs +[rcx]
+ lea r13d, [rax+0x01]
lock
- cmpxchg dword ptr [r8], r9d
- cmp eax, ebx
+ cmpxchg dword ptr [rcx], r13d
+ cmp eax, dword ptr [rbp-0x24]
jne SHORT G_M15407_IG03
- ;; size=22 bbWeight=1.02 PerfScore 20.99
-G_M15407_IG05: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=8000 {r15}, byref, isz
- ; gcrRegs -[rcx rdx rdi]
- ; byrRegs -[r8]
- jmp SHORT G_M15407_IG08
+ ;; size=21 bbWeight=1.02 PerfScore 22.53
+G_M15407_IG05: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=4000 {r14}, byref, isz
+ ; gcrRegs -[rbx rdi r15]
+ ; byrRegs -[rcx]
+ jmp SHORT G_M15407_IG07
;; size=2 bbWeight=1 PerfScore 2.00
-G_M15407_IG06: ; bbWeight=0.00, gcrefRegs=00C6 {rcx rdx rsi rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rcx rdx rdi]
- ; byrRegs -[r15]
- test r8d, r8d
- jge SHORT G_M15407_IG03
- ;; size=5 bbWeight=0.00 PerfScore 0.00
-G_M15407_IG07: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[rcx rdx]
- pop rbx
- pop r15
- pop rbp
- tail.jmp [<unknown method>]
- ; gcr arg pop 0
- ;; size=10 bbWeight=1 PerfScore 3.50
-G_M15407_IG08: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=8000 {r15}, gcvars, byref
- ; gcrRegs -[rdi]
- ; byrRegs +[r15]
- mov rdi, r15
+G_M15407_IG06: ; bbWeight=0.00, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rbx rdi r15]
+ ; byrRegs -[r14]
+ test ecx, ecx
+ jl SHORT G_M15407_IG10
+ jmp SHORT G_M15407_IG03
+ ;; size=6 bbWeight=0.00 PerfScore 0.00
+G_M15407_IG07: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=4000 {r14}, byref
+ ; gcrRegs -[rbx rdi r15]
+ ; byrRegs +[r14]
+ mov rdi, r14
; byrRegs +[rdi]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rsi]
; byrRegs -[rdi]
- inc ebx
- mov dword ptr [r15+0x08], ebx
- ;; size=14 bbWeight=1 PerfScore 2.50
-G_M15407_IG09: ; bbWeight=1, epilog, nogc, extend
+ mov dword ptr [r14+0x08], r13d
+ ;; size=12 bbWeight=1 PerfScore 2.25
+G_M15407_IG08: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 16
pop rbx
+ pop r13
+ pop r14
pop r15
pop rbp
ret
- ;; size=5 bbWeight=1 PerfScore 2.50
-G_M15407_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; byrRegs -[r15]
+ ;; size=13 bbWeight=1 PerfScore 3.75
+G_M15407_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; byrRegs -[r14]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
- int3
- ;; size=6 bbWeight=0 PerfScore 0.00
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M15407_IG10: ; bbWeight=0, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rsi rdi]
+ nop
+ ;; size=1 bbWeight=0 PerfScore 0.00
+G_M15407_IG11: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 16
+ pop rbx
+ pop r13
+ pop r14
+ pop r15
+ pop rbp
+ tail.jmp [<unknown method>]
+ ; gcr arg pop 0
+ ;; size=18 bbWeight=0 PerfScore 0.00
-; Total bytes of code 115, prolog size 9, PerfScore 53.33, instruction count 40, allocated bytes for code 115 (MethodHash=96c6c3d0) for method System.Collections.Concurrent.ConcurrentQueue`1[System.__Canon]:Enqueue(System.__Canon):this (Tier1)
+; Total bytes of code 140, prolog size 17, PerfScore 55.64, instruction count 49, allocated bytes for code 140 (MethodHash=96c6c3d0) for method System.Collections.Concurrent.ConcurrentQueue`1[System.__Canon]:Enqueue(System.__Canon):this (Tier1)
; ============================================================
Unwind Info:
@@ -110,11 +122,14 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x0C
+ CountOfUnwindCodes: 6
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
+ CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
coreclr_tests.run.linux.x64.checked.mch
-14 (-14.14%) : 398473.dasm - Internal.TypeSystem.Interop.MarshalHelpers:ShouldCheckForPendingException(Internal.TypeSystem.TargetDetails,Internal.TypeSystem.PInvokeMetadata):ubyte (Tier1)
@@ -5,51 +5,47 @@
; optimized using Dynamic PGO
; rbp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 249
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 249
; 1 inlinees with PGO data; 6 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T01] ( 3, 3 ) ref -> rdi class-hnd single-def <Internal.TypeSystem.TargetDetails>
-; V01 arg1 [V01,T03] ( 2, 1 ) struct (24) [rbp+0x10] do-not-enreg[SF] single-def <Internal.TypeSystem.PInvokeMetadata>
+; V01 arg1 [V01,T02] ( 2, 0 ) struct (24) [rbp+0x10] do-not-enreg[SF] single-def <Internal.TypeSystem.PInvokeMetadata>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
-;* V04 tmp2 [V04,T02] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V05 cse0 [V05,T00] ( 5, 5 ) int -> rbx "CSE - aggressive"
+;* V04 tmp2 [V04,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V05 cse0 [V05,T00] ( 5, 5 ) int -> rax "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
-G_M58552_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M58552_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
- push rbx
- push rax
- lea rbp, [rsp+0x10]
- ;; size=8 bbWeight=1 PerfScore 3.50
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
G_M58552_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi]
- mov ebx, dword ptr [rdi+0x10]
- cmp ebx, 3
+ mov eax, dword ptr [rdi+0x10]
+ cmp eax, 3
je SHORT G_M58552_IG06
- cmp ebx, 7
+ cmp eax, 7
ja SHORT G_M58552_IG03
mov edi, 15
; gcrRegs -[rdi]
- bt edi, ebx
+ bt edi, eax
jae SHORT G_M58552_IG06
;; size=23 bbWeight=1 PerfScore 6.25
G_M58552_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp ebx, 8
+ cmp eax, 8
je SHORT G_M58552_IG06
;; size=5 bbWeight=1 PerfScore 1.25
G_M58552_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor eax, eax
;; size=2 bbWeight=1 PerfScore 0.25
G_M58552_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 8
- pop rbx
pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
-G_M58552_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=2 bbWeight=1 PerfScore 1.50
+G_M58552_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
mov rdi, gword ptr [rbp+0x18]
; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E
@@ -59,22 +55,18 @@ G_M58552_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
; gcrRegs -[rsi rdi]
test eax, eax
je SHORT G_M58552_IG04
- ;; size=26 bbWeight=1 PerfScore 8.50
-G_M58552_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbp+0x10]
; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
cmp dword ptr [rdi], edi
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M58552_IG08: ; bbWeight=0, epilog, nogc, extend
- add rsp, 8
- pop rbx
+ ;; size=42 bbWeight=0 PerfScore 0.00
+G_M58552_IG07: ; bbWeight=0, epilog, nogc, extend
pop rbp
tail.jmp [System.String:StartsWith(System.String):ubyte:this]
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 99, prolog size 8, PerfScore 22.00, instruction count 32, allocated bytes for code 99 (MethodHash=14861b47) for method Internal.TypeSystem.Interop.MarshalHelpers:ShouldCheckForPendingException(Internal.TypeSystem.TargetDetails,Internal.TypeSystem.PInvokeMetadata):ubyte (Tier1)
+; Total bytes of code 85, prolog size 4, PerfScore 10.50, instruction count 26, allocated bytes for code 85 (MethodHash=14861b47) for method Internal.TypeSystem.Interop.MarshalHelpers:ShouldCheckForPendingException(Internal.TypeSystem.TargetDetails,Internal.TypeSystem.PInvokeMetadata):ubyte (Tier1)
; ============================================================
Unwind Info:
@@ -82,11 +74,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x03
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-14 (-14.14%) : 391544.dasm - Internal.TypeSystem.Interop.MarshalHelpers:ShouldCheckForPendingException(Internal.TypeSystem.TargetDetails,Internal.TypeSystem.PInvokeMetadata):ubyte (Tier1)
@@ -5,51 +5,47 @@
; optimized using Dynamic PGO
; rbp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 246
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 246
; 1 inlinees with PGO data; 6 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T01] ( 3, 3 ) ref -> rdi class-hnd single-def <Internal.TypeSystem.TargetDetails>
-; V01 arg1 [V01,T03] ( 2, 1 ) struct (24) [rbp+0x10] do-not-enreg[SF] single-def <Internal.TypeSystem.PInvokeMetadata>
+; V01 arg1 [V01,T02] ( 2, 0 ) struct (24) [rbp+0x10] do-not-enreg[SF] single-def <Internal.TypeSystem.PInvokeMetadata>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
-;* V04 tmp2 [V04,T02] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V05 cse0 [V05,T00] ( 5, 5 ) int -> rbx "CSE - aggressive"
+;* V04 tmp2 [V04,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V05 cse0 [V05,T00] ( 5, 5 ) int -> rax "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
-G_M58552_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M58552_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
- push rbx
- push rax
- lea rbp, [rsp+0x10]
- ;; size=8 bbWeight=1 PerfScore 3.50
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
G_M58552_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi]
- mov ebx, dword ptr [rdi+0x10]
- cmp ebx, 3
+ mov eax, dword ptr [rdi+0x10]
+ cmp eax, 3
je SHORT G_M58552_IG06
- cmp ebx, 7
+ cmp eax, 7
ja SHORT G_M58552_IG03
mov edi, 15
; gcrRegs -[rdi]
- bt edi, ebx
+ bt edi, eax
jae SHORT G_M58552_IG06
;; size=23 bbWeight=1 PerfScore 6.25
G_M58552_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp ebx, 8
+ cmp eax, 8
je SHORT G_M58552_IG06
;; size=5 bbWeight=1 PerfScore 1.25
G_M58552_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor eax, eax
;; size=2 bbWeight=1 PerfScore 0.25
G_M58552_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 8
- pop rbx
pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
-G_M58552_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=2 bbWeight=1 PerfScore 1.50
+G_M58552_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
mov rdi, gword ptr [rbp+0x18]
; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E
@@ -59,22 +55,18 @@ G_M58552_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
; gcrRegs -[rsi rdi]
test eax, eax
je SHORT G_M58552_IG04
- ;; size=26 bbWeight=1 PerfScore 8.50
-G_M58552_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbp+0x10]
; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
cmp dword ptr [rdi], edi
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M58552_IG08: ; bbWeight=0, epilog, nogc, extend
- add rsp, 8
- pop rbx
+ ;; size=42 bbWeight=0 PerfScore 0.00
+G_M58552_IG07: ; bbWeight=0, epilog, nogc, extend
pop rbp
tail.jmp [System.String:StartsWith(System.String):ubyte:this]
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 99, prolog size 8, PerfScore 22.00, instruction count 32, allocated bytes for code 99 (MethodHash=14861b47) for method Internal.TypeSystem.Interop.MarshalHelpers:ShouldCheckForPendingException(Internal.TypeSystem.TargetDetails,Internal.TypeSystem.PInvokeMetadata):ubyte (Tier1)
+; Total bytes of code 85, prolog size 4, PerfScore 10.50, instruction count 26, allocated bytes for code 85 (MethodHash=14861b47) for method Internal.TypeSystem.Interop.MarshalHelpers:ShouldCheckForPendingException(Internal.TypeSystem.TargetDetails,Internal.TypeSystem.PInvokeMetadata):ubyte (Tier1)
; ============================================================
Unwind Info:
@@ -82,11 +74,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x03
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-41 (-9.21%) : 388620.dasm - Internal.TypeSystem.ArrayType:InstantiateSignature(Internal.TypeSystem.Instantiation,Internal.TypeSystem.Instantiation):Internal.TypeSystem.TypeDesc:this (Tier1)
@@ -15,40 +15,41 @@
; V03 loc0 [V03,T01] ( 10, 5.20) ref -> r15 class-hnd single-def <Internal.TypeSystem.TypeDesc>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Internal.TypeSystem.TypeDesc>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T02] ( 9, 4.36) ref -> r14 "guarded devirt return temp"
+; V06 tmp1 [V06,T02] ( 9, 4.36) ref -> r13 "guarded devirt return temp"
;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V08 tmp3 [V08,T08] ( 2, 0.88) int -> rdi
-; V09 tmp4 [V09,T09] ( 3, 1.75) ref -> r13 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+; V08 tmp3 [V08,T10] ( 2, 0.88) int -> rdi
+; V09 tmp4 [V09,T09] ( 3, 1.75) ref -> r12 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
;* V10 tmp5 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V11 tmp6 [V11,T10] ( 3, 0.88) ref -> r12 "guarded devirt return temp"
+; V11 tmp6 [V11,T11] ( 3, 0.88) ref -> rax "guarded devirt return temp"
;* V12 tmp7 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V13 tmp8 [V13,T11] ( 3, 0.88) ref -> r13 "guarded devirt return temp"
-; V14 tmp9 [V14,T06] ( 5, 2.63) ref -> rdi single-def "guarded devirt arg temp"
+; V13 tmp8 [V13,T12] ( 3, 0.88) ref -> r12 "guarded devirt return temp"
+; V14 tmp9 [V14,T07] ( 5, 2.63) ref -> rdi single-def "guarded devirt arg temp"
;* V15 tmp10 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V16 tmp11 [V16,T12] ( 3, 0.84) ref -> r12 "guarded devirt return temp"
-; V17 tmp12 [V17,T07] ( 5, 2.53) ref -> rdi single-def "guarded devirt arg temp"
+; V16 tmp11 [V16,T13] ( 3, 0.84) ref -> rax "guarded devirt return temp"
+; V17 tmp12 [V17,T08] ( 5, 2.53) ref -> rdi single-def "guarded devirt arg temp"
;* V18 tmp13 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
;* V19 tmp14 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V20 tmp15 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V21 tmp16 [V21,T19] ( 3, 0.09) ref -> r12 "guarded devirt return temp"
-; V22 tmp17 [V22,T13] ( 5, 0.29) ref -> rdi single-def "guarded devirt arg temp"
+; V21 tmp16 [V21,T20] ( 3, 0.09) ref -> rax "guarded devirt return temp"
+; V22 tmp17 [V22,T14] ( 5, 0.29) ref -> rdi single-def "guarded devirt arg temp"
;* V23 tmp18 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V24 tmp19 [V24,T21] ( 3, 0.07) ref -> r12 "guarded devirt return temp"
-; V25 tmp20 [V25,T15] ( 5, 0.22) ref -> rdi single-def "guarded devirt arg temp"
+; V24 tmp19 [V24,T22] ( 3, 0.07) ref -> rax "guarded devirt return temp"
+; V25 tmp20 [V25,T16] ( 5, 0.22) ref -> rdi single-def "guarded devirt arg temp"
;* V26 tmp21 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V27 tmp22 [V27,T16] ( 2, 0.18) int -> rbx "Inlining Arg"
+; V27 tmp22 [V27,T17] ( 2, 0.18) int -> rbx "Inlining Arg"
;* V28 tmp23 [V28 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <Internal.TypeSystem.TypeSystemContext+ArrayTypeKey>
-; V29 tmp24 [V29,T14] ( 4, 0.28) ref -> r13 class-hnd exact single-def "impAppendStmt" <<unknown class>>
-; V30 tmp25 [V30,T20] ( 3, 0.09) ref -> rax class-hnd "Inline return value spill temp" <Internal.TypeSystem.ArrayType>
+; V29 tmp24 [V29,T15] ( 4, 0.28) ref -> r12 class-hnd exact single-def "impAppendStmt" <<unknown class>>
+; V30 tmp25 [V30,T21] ( 3, 0.09) ref -> rax class-hnd "Inline return value spill temp" <Internal.TypeSystem.ArrayType>
;* V31 tmp26 [V31 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <Internal.TypeSystem.TypeSystemContext+ArrayTypeKey>
; V32 tmp27 [V32 ] ( 2, 0.09) ref -> [rbp-0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <Internal.TypeSystem.ArrayType>
-; V33 tmp28 [V33,T03] ( 2, 1.31) ref -> rsi single-def "field V01._genericParameters (fldOffset=0x0)" P-INDEP
-; V34 tmp29 [V34,T04] ( 2, 1.31) ref -> rdx single-def "field V02._genericParameters (fldOffset=0x0)" P-INDEP
-; V35 tmp30 [V35,T17] ( 3, 0.09) ref -> r14 single-def "field V28._elementType (fldOffset=0x0)" P-INDEP
-; V36 tmp31 [V36,T18] ( 3, 0.09) int -> rbx single-def "field V28._rank (fldOffset=0x8)" P-INDEP
+; V33 tmp28 [V33,T04] ( 2, 1.31) ref -> rsi single-def "field V01._genericParameters (fldOffset=0x0)" P-INDEP
+; V34 tmp29 [V34,T05] ( 2, 1.31) ref -> rdx single-def "field V02._genericParameters (fldOffset=0x0)" P-INDEP
+; V35 tmp30 [V35,T18] ( 3, 0.09) ref -> r13 single-def "field V28._elementType (fldOffset=0x0)" P-INDEP
+; V36 tmp31 [V36,T19] ( 3, 0.09) int -> rbx single-def "field V28._rank (fldOffset=0x8)" P-INDEP
;* V37 tmp32 [V37 ] ( 0, 0 ) ref -> zero-ref single-def "field V31._elementType (fldOffset=0x0)" P-INDEP
;* V38 tmp33 [V38 ] ( 0, 0 ) int -> zero-ref single-def "field V31._rank (fldOffset=0x8)" P-INDEP
-; V39 cse0 [V39,T05] ( 3, 3 ) ref -> rsi "CSE - moderate"
+; V39 cse0 [V39,T03] ( 5, 3.36) long -> r14 "CSE - aggressive"
+; V40 cse1 [V40,T06] ( 3, 3 ) ref -> rsi "CSE - moderate"
;
; Lcl frame size = 8
@@ -70,86 +71,82 @@ G_M38501_IG02: ; bbWeight=1, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000
; gcrRegs +[rdx rsi]
mov r15, gword ptr [rbx+0x28]
; gcrRegs +[r15]
- mov rdi, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaType
- cmp qword ptr [r15], rdi
+ mov r14, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaType
+ cmp qword ptr [r15], r14
jne SHORT G_M38501_IG07
;; size=19 bbWeight=1 PerfScore 6.25
G_M38501_IG03: ; bbWeight=0.69, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx rsi]
- mov r14, r15
- ; gcrRegs +[r14]
+ mov r13, r15
+ ; gcrRegs +[r13]
;; size=3 bbWeight=0.69 PerfScore 0.17
-G_M38501_IG04: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
- test r14, r14
+G_M38501_IG04: ; bbWeight=1, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref
+ test r13, r13
je G_M38501_IG14
;; size=9 bbWeight=1 PerfScore 1.25
-G_M38501_IG05: ; bbWeight=0.88, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
- mov rdi, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaType
- cmp qword ptr [r14], rdi
+G_M38501_IG05: ; bbWeight=0.88, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref
+ cmp qword ptr [r13], r14
jne G_M38501_IG26
- ;; size=19 bbWeight=0.88 PerfScore 3.74
-G_M38501_IG06: ; bbWeight=0.44, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- mov rdi, gword ptr [r14+0x58]
+ ;; size=10 bbWeight=0.88 PerfScore 3.52
+G_M38501_IG06: ; bbWeight=0.44, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
+ mov rdi, gword ptr [r13+0x58]
; gcrRegs +[rdi]
mov rax, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaAssembly
cmp qword ptr [rdi], rax
jne G_M38501_IG25
- mov r13, gword ptr [rdi+0x08]
- ; gcrRegs +[r13]
+ mov r12, gword ptr [rdi+0x08]
+ ; gcrRegs +[r12]
jmp SHORT G_M38501_IG08
;; size=29 bbWeight=0.44 PerfScore 4.49
G_M38501_IG07: ; bbWeight=0.31, gcrefRegs=804C {rdx rbx rsi r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdi r13-r14] +[rdx rsi]
+ ; gcrRegs -[rdi r12-r13] +[rdx rsi]
mov rdi, r15
; gcrRegs +[rdi]
mov rax, qword ptr [r15]
mov rax, qword ptr [rax+0x58]
call [rax+0x18]Internal.TypeSystem.TypeDesc:InstantiateSignature(Internal.TypeSystem.Instantiation,Internal.TypeSystem.Instantiation):Internal.TypeSystem.TypeDesc:this
; gcrRegs -[rdx rsi rdi] +[rax]
- mov r14, rax
- ; gcrRegs +[r14]
+ mov r13, rax
+ ; gcrRegs +[r13]
jmp SHORT G_M38501_IG04
;; size=18 bbWeight=0.31 PerfScore 2.94
-G_M38501_IG08: ; bbWeight=0.44, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax] +[r13]
- mov rdi, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaType
- cmp qword ptr [r15], rdi
+G_M38501_IG08: ; bbWeight=0.44, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax] +[r12]
+ cmp qword ptr [r15], r14
jne SHORT G_M38501_IG12
- ;; size=15 bbWeight=0.44 PerfScore 1.86
-G_M38501_IG09: ; bbWeight=0.42, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
+ ;; size=5 bbWeight=0.44 PerfScore 1.75
+G_M38501_IG09: ; bbWeight=0.42, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [r15+0x58]
; gcrRegs +[rdi]
mov rax, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaAssembly
cmp qword ptr [rdi], rax
jne G_M38501_IG27
;; size=23 bbWeight=0.42 PerfScore 2.63
-G_M38501_IG10: ; bbWeight=0.42, gcrefRegs=E088 {rbx rdi r13 r14 r15}, byrefRegs=0000 {}, byref
- mov r12, gword ptr [rdi+0x08]
- ; gcrRegs +[r12]
+G_M38501_IG10: ; bbWeight=0.42, gcrefRegs=B088 {rbx rdi r12 r13 r15}, byrefRegs=0000 {}, byref
+ mov rax, gword ptr [rdi+0x08]
+ ; gcrRegs +[rax]
;; size=4 bbWeight=0.42 PerfScore 0.84
-G_M38501_IG11: ; bbWeight=0.44, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M38501_IG11: ; bbWeight=0.44, gcrefRegs=B009 {rax rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi]
xor edi, edi
- cmp r13, r12
+ cmp r12, rax
sete dil
test dil, dil
jne SHORT G_M38501_IG14
jmp SHORT G_M38501_IG13
;; size=16 bbWeight=0.44 PerfScore 2.08
-G_M38501_IG12: ; bbWeight=0.02, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r12]
+G_M38501_IG12: ; bbWeight=0.02, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax]
mov rdi, r15
; gcrRegs +[rdi]
mov rax, qword ptr [r15]
mov rax, qword ptr [rax+0x48]
call [rax+0x20]<unknown method>
; gcrRegs -[rdi] +[rax]
- mov r12, rax
- ; gcrRegs +[r12]
jmp SHORT G_M38501_IG11
- ;; size=18 bbWeight=0.02 PerfScore 0.17
-G_M38501_IG13: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax r12-r13]
+ ;; size=15 bbWeight=0.02 PerfScore 0.16
+G_M38501_IG13: ; bbWeight=1, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax r12]
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
mov rdi, rsi
@@ -157,12 +154,12 @@ G_M38501_IG13: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
call [<unknown method>]
; gcrRegs -[rsi rdi]
;; size=19 bbWeight=1 PerfScore 3.50
-G_M38501_IG14: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- cmp r14, r15
+G_M38501_IG14: ; bbWeight=1, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
+ cmp r13, r15
jne SHORT G_M38501_IG17
;; size=5 bbWeight=1 PerfScore 1.25
G_M38501_IG15: ; bbWeight=0.95, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r14-r15]
+ ; gcrRegs -[r13 r15]
mov rax, rbx
; gcrRegs +[rax]
;; size=3 bbWeight=0.95 PerfScore 0.24
@@ -176,55 +173,51 @@ G_M38501_IG16: ; bbWeight=0.95, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.95 PerfScore 4.06
-G_M38501_IG17: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax] +[r14]
+G_M38501_IG17: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rax] +[r13]
mov rdi, gword ptr [rbx+0x28]
; gcrRegs +[rdi]
- mov rax, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaType
- cmp qword ptr [rdi], rax
+ cmp qword ptr [rdi], r14
jne SHORT G_M38501_IG20
- ;; size=19 bbWeight=0.05 PerfScore 0.28
-G_M38501_IG18: ; bbWeight=0.04, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref
+ ;; size=9 bbWeight=0.05 PerfScore 0.27
+G_M38501_IG18: ; bbWeight=0.04, gcrefRegs=2088 {rbx rdi r13}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rdi+0x58]
mov rax, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaAssembly
cmp qword ptr [rdi], rax
jne G_M38501_IG28
- mov r12, gword ptr [rdi+0x08]
- ; gcrRegs +[r12]
+ mov rax, gword ptr [rdi+0x08]
+ ; gcrRegs +[rax]
;; size=27 bbWeight=0.04 PerfScore 0.30
-G_M38501_IG19: ; bbWeight=0.04, gcrefRegs=5008 {rbx r12 r14}, byrefRegs=0000 {}, byref, isz
+G_M38501_IG19: ; bbWeight=0.04, gcrefRegs=2009 {rax rbx r13}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi]
jmp SHORT G_M38501_IG21
;; size=2 bbWeight=0.04 PerfScore 0.07
-G_M38501_IG20: ; bbWeight=0.01, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r12] +[rdi]
+G_M38501_IG20: ; bbWeight=0.01, gcrefRegs=2088 {rbx rdi r13}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax] +[rdi]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x48]
call [rax+0x20]<unknown method>
; gcrRegs -[rdi] +[rax]
- mov r12, rax
- ; gcrRegs +[r12]
- ;; size=13 bbWeight=0.01 PerfScore 0.06
-G_M38501_IG21: ; bbWeight=0.05, gcrefRegs=5008 {rbx r12 r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
+ ;; size=10 bbWeight=0.01 PerfScore 0.06
+G_M38501_IG21: ; bbWeight=0.05, gcrefRegs=2009 {rax rbx r13}, byrefRegs=0000 {}, byref, isz
mov ebx, dword ptr [rbx+0x38]
; gcrRegs -[rbx]
- mov r13, gword ptr [r12+0x20]
- ; gcrRegs +[r13]
- cmp byte ptr [r13], r13b
- mov rsi, r14
+ mov r12, gword ptr [rax+0x20]
...
+17 (+11.49%) : 200036.dasm - System.Enum:AreSorteduint:ubyte (Instrumented Tier1)
@@ -13,8 +13,8 @@
; V01 loc0 [V01,T00] ( 6, 67.10) int -> r15
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03,T06] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V04 tmp2 [V04,T01] ( 3, 58.78) byref -> rdi "Inlining Arg"
-; V05 tmp3 [V05,T02] ( 3, 58.78) int -> rax "Inlining Arg"
+; V04 tmp2 [V04,T01] ( 3, 58.78) byref -> r13 "Inlining Arg"
+; V05 tmp3 [V05,T02] ( 3, 58.78) int -> r12 "Inlining Arg"
; V06 cse0 [V06,T05] ( 4, 28.44) int -> r14 "CSE - aggressive"
; V07 cse1 [V07,T03] ( 3, 39.66) int -> rdi "CSE - aggressive"
;
@@ -24,35 +24,33 @@ G_M57841_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbp
push r15
push r14
+ push r13
+ push r12
push rbx
push rax
- lea rbp, [rsp+0x20]
+ lea rbp, [rsp+0x30]
mov rbx, rdi
; gcrRegs +[rbx]
- ;; size=15 bbWeight=1 PerfScore 5.75
+ ;; size=19 bbWeight=1 PerfScore 7.75
G_M57841_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov r15d, 1
mov r14d, dword ptr [rbx+0x08]
cmp r14d, 1
- jle SHORT G_M57841_IG06
+ jle SHORT G_M57841_IG05
;; size=16 bbWeight=1 PerfScore 3.50
G_M57841_IG03: ; bbWeight=13.22, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
lea edi, [r15-0x01]
cmp edi, r14d
jae SHORT G_M57841_IG10
- lea rdi, bword ptr [rbx+4*rdi+0x10]
- ; byrRegs +[rdi]
- mov eax, r15d
- mov eax, dword ptr [rbx+4*rax+0x10]
- cmp dword ptr [rdi], eax
- jb SHORT G_M57841_IG05
- ;; size=25 bbWeight=13.22 PerfScore 118.98
-G_M57841_IG04: ; bbWeight=2.95, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
- cmp dword ptr [rdi], eax
- ja SHORT G_M57841_IG08
- ;; size=4 bbWeight=2.95 PerfScore 11.80
-G_M57841_IG05: ; bbWeight=13.22, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[rdi]
+ lea r13, bword ptr [rbx+4*rdi+0x10]
+ ; byrRegs +[r13]
+ mov edi, r15d
+ mov r12d, dword ptr [rbx+4*rdi+0x10]
+ cmp dword ptr [r13], r12d
+ jae SHORT G_M57841_IG07
+ ;; size=28 bbWeight=13.22 PerfScore 118.98
+G_M57841_IG04: ; bbWeight=13.22, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[r13]
mov rdi, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
@@ -60,22 +58,32 @@ G_M57841_IG05: ; bbWeight=13.22, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
cmp r14d, r15d
jg SHORT G_M57841_IG03
;; size=23 bbWeight=13.22 PerfScore 36.35
-G_M57841_IG06: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M57841_IG05: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
mov rdi, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
mov eax, 1
;; size=20 bbWeight=0.92 PerfScore 1.38
-G_M57841_IG07: ; bbWeight=0.92, epilog, nogc, extend
+G_M57841_IG06: ; bbWeight=0.92, epilog, nogc, extend
add rsp, 8
pop rbx
+ pop r12
+ pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=11 bbWeight=0.92 PerfScore 3.00
-G_M57841_IG08: ; bbWeight=2.11, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=15 bbWeight=0.92 PerfScore 3.92
+G_M57841_IG07: ; bbWeight=2.95, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13}, gcvars, byref, isz
+ ; gcrRegs +[rbx]
+ ; byrRegs +[r13]
+ cmp dword ptr [r13], r12d
+ jbe SHORT G_M57841_IG04
+ ;; size=6 bbWeight=2.95 PerfScore 11.80
+G_M57841_IG08: ; bbWeight=2.11, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx]
+ ; byrRegs -[r13]
mov rdi, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
@@ -84,18 +92,20 @@ G_M57841_IG08: ; bbWeight=2.11, gcVars=0000000000000000 {}, gcrefRegs=000
G_M57841_IG09: ; bbWeight=2.11, epilog, nogc, extend
add rsp, 8
pop rbx
+ pop r12
+ pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=11 bbWeight=2.11 PerfScore 6.87
+ ;; size=15 bbWeight=2.11 PerfScore 8.99
G_M57841_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 148, prolog size 15, PerfScore 190.82, instruction count 46, allocated bytes for code 148 (MethodHash=e05b1e0e) for method System.Enum:AreSorted[uint](uint[]):ubyte (Instrumented Tier1)
+; Total bytes of code 165, prolog size 19, PerfScore 195.85, instruction count 52, allocated bytes for code 165 (MethodHash=e05b1e0e) for method System.Enum:AreSorted[uint](uint[]):ubyte (Instrumented Tier1)
; ============================================================
Unwind Info:
@@ -103,13 +113,15 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x07
- CountOfUnwindCodes: 5
+ SizeOfProlog : 0x0B
+ CountOfUnwindCodes: 7
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
+ CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+36 (+13.90%) : 6023.dasm - System.Guid:TryParseGuid(System.ReadOnlySpan`1[ushort],byref):ubyte (Tier1)
@@ -14,14 +14,14 @@
; V02 loc0 [V02,T09] ( 4, 2 ) ubyte -> rax
; V03 loc1 [V03,T08] ( 3, 3 ) ushort -> rdx
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T13] ( 3, 0 ) int -> rax
+; V05 tmp1 [V05,T11] ( 3, 0 ) int -> rax
; V06 tmp2 [V06,T10] ( 3, 2 ) int -> rax
;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V08 tmp4 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V09 tmp5 [V09 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ushort]>
-; V10 tmp6 [V10,T06] ( 2, 3.97) int -> rdi "Span.get_Item index"
-; V11 tmp7 [V11,T11] ( 2, 1.98) ubyte -> rax "Inline return value spill temp"
-; V12 tmp8 [V12,T00] ( 4, 7.93) ushort -> rdi "Inlining Arg"
+; V10 tmp6 [V10,T06] ( 4, 3.97) int -> r13 "Span.get_Item index"
+; V11 tmp7 [V11,T12] ( 2, 0 ) ubyte -> rax "Inline return value spill temp"
+; V12 tmp8 [V12,T02] ( 4, 5.95) ushort -> rdi "Inlining Arg"
;* V13 tmp9 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V14 tmp10 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V15 tmp11 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -29,8 +29,8 @@
;* V17 tmp13 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V18 tmp14 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp15 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V20 tmp16 [V20,T12] ( 2, 1.97) ubyte -> rax "Inline return value spill temp"
-; V21 tmp17 [V21,T01] ( 4, 7.90) ushort -> rdi "Inlining Arg"
+; V20 tmp16 [V20,T13] ( 2, 0 ) ubyte -> rax "Inline return value spill temp"
+; V21 tmp17 [V21,T03] ( 6, 5.93) ushort -> rdi "Inlining Arg"
;* V22 tmp18 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V23 tmp19 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V24 tmp20 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -38,8 +38,8 @@
;* V26 tmp22 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V27 tmp23 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V28 tmp24 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V29 tmp25 [V29,T03] ( 5, 3.98) byref -> r15 "field V00._reference (fldOffset=0x0)" P-INDEP
-; V30 tmp26 [V30,T02] ( 5, 3.99) int -> rbx "field V00._length (fldOffset=0x8)" P-INDEP
+; V29 tmp25 [V29,T01] ( 6, 3.98) byref -> r15 "field V00._reference (fldOffset=0x0)" P-INDEP
+; V30 tmp26 [V30,T00] ( 6, 3.99) int -> rbx "field V00._length (fldOffset=0x8)" P-INDEP
; V31 tmp27 [V31,T05] ( 10, 4 ) byref -> rdi single-def "field V07._reference (fldOffset=0x0)" P-INDEP
; V32 tmp28 [V32,T07] ( 8, 3 ) int -> rsi "field V07._length (fldOffset=0x8)" P-INDEP
;* V33 tmp29 [V33 ] ( 0, 0 ) byref -> zero-ref single-def "field V08._reference (fldOffset=0x0)" P-INDEP
@@ -71,97 +71,79 @@
;* V59 tmp55 [V59 ] ( 0, 0 ) byref -> zero-ref single-def "field V28._reference (fldOffset=0x0)" P-INDEP
;* V60 tmp56 [V60 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M61906_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
push r14
+ push r13
push rbx
- push rax
lea rbp, [rsp+0x20]
mov r15, rdi
; byrRegs +[r15]
mov ebx, esi
mov r14, rdx
; byrRegs +[r14]
- ;; size=20 bbWeight=1 PerfScore 6.25
+ ;; size=21 bbWeight=1 PerfScore 6.25
G_M61906_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=C000 {r14 r15}, byref, isz
test ebx, ebx
- je SHORT G_M61906_IG11
+ je SHORT G_M61906_IG06
;; size=4 bbWeight=1 PerfScore 1.25
G_M61906_IG03: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=C000 {r14 r15}, byref, isz
movzx rdi, word ptr [r15]
cmp edi, 256
- jb SHORT G_M61906_IG06
- ;; size=12 bbWeight=0.99 PerfScore 3.22
-G_M61906_IG04: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=C000 {r14 r15}, byref, isz
- call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
- test eax, eax
- jne SHORT G_M61906_IG15
- ;; size=10 bbWeight=0.99 PerfScore 4.22
-G_M61906_IG05: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=C000 {r14 r15}, byref, isz
- jmp SHORT G_M61906_IG07
- ;; size=2 bbWeight=0.98 PerfScore 1.97
-G_M61906_IG06: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=C000 {r14 r15}, byref, isz
- mov edi, edi
- mov rax, 0xD1FFAB1E ; static handle
- test byte ptr [rdi+rax], 128
- jne SHORT G_M61906_IG15
- ;; size=18 bbWeight=0.99 PerfScore 4.46
-G_M61906_IG07: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=C000 {r14 r15}, byref, isz
- lea edi, [rbx-0x01]
+ jae G_M61906_IG16
+ mov rsi, 0xD1FFAB1E ; static handle
+ test byte ptr [rdi+rsi], 128
+ jne SHORT G_M61906_IG10
+ ;; size=32 bbWeight=0.99 PerfScore 7.44
+G_M61906_IG04: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=C000 {r14 r15}, byref
+ lea r13d, [rbx-0x01]
+ mov edi, r13d
movzx rdi, word ptr [r15+2*rdi]
cmp edi, 256
- jb SHORT G_M61906_IG10
- ;; size=16 bbWeight=0.99 PerfScore 3.72
-G_M61906_IG08: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=C000 {r14 r15}, byref, isz
- call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
- test eax, eax
- jne SHORT G_M61906_IG15
- ;; size=10 bbWeight=0.98 PerfScore 4.18
-G_M61906_IG09: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=C000 {r14 r15}, byref, isz
- jmp SHORT G_M61906_IG11
- ;; size=2 bbWeight=0.99 PerfScore 1.98
-G_M61906_IG10: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=C000 {r14 r15}, byref, isz
+ jae G_M61906_IG17
+ ;; size=24 bbWeight=0.99 PerfScore 3.97
+G_M61906_IG05: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=C000 {r14 r15}, byref, isz
mov edi, edi
- mov rax, 0xD1FFAB1E ; static handle
- test byte ptr [rdi+rax], 128
- jne SHORT G_M61906_IG15
+ mov rsi, 0xD1FFAB1E ; static handle
+ test byte ptr [rdi+rsi], 128
+ jne SHORT G_M61906_IG10
;; size=18 bbWeight=0.98 PerfScore 4.43
-G_M61906_IG11: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=C000 {r14 r15}, byref
+G_M61906_IG06: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=C000 {r14 r15}, byref
mov rdi, r15
; byrRegs +[rdi]
mov esi, ebx
;; size=5 bbWeight=0.99 PerfScore 0.50
-G_M61906_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=4080 {rdi r14}, byref, isz
+G_M61906_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=4080 {rdi r14}, byref, isz
; byrRegs -[r15]
cmp esi, 32
- jl SHORT G_M61906_IG21
+ jl G_M61906_IG18
movzx rdx, word ptr [rdi]
cmp edx, 40
- je SHORT G_M61906_IG16
+ je SHORT G_M61906_IG11
cmp edx, 123
- je SHORT G_M61906_IG17
+ je SHORT G_M61906_IG12
cmp word ptr [rdi+0x10], 45
- jne SHORT G_M61906_IG20
+ jne SHORT G_M61906_IG15
mov rdx, r14
; byrRegs +[rdx]
call [<unknown method>]
; byrRegs -[rdx rdi r14]
- ;; size=34 bbWeight=1 PerfScore 13.00
-G_M61906_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=38 bbWeight=1 PerfScore 13.00
+G_M61906_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M61906_IG14: ; bbWeight=1, epilog, nogc, extend
- add rsp, 8
+G_M61906_IG09: ; bbWeight=1, epilog, nogc, extend
pop rbx
+ pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=11 bbWeight=1 PerfScore 3.25
-G_M61906_IG15: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=C000 {r14 r15}, gcvars, byref, isz
+ ;; size=9 bbWeight=1 PerfScore 3.50
+G_M61906_IG10: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=C000 {r14 r15}, gcvars, byref, isz
; byrRegs +[r14-r15]
mov rdi, r15
; byrRegs +[rdi]
@@ -171,46 +153,63 @@ G_M61906_IG15: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=000
mov rdi, rax
; byrRegs +[rdi]
mov esi, edx
- jmp SHORT G_M61906_IG12
+ jmp SHORT G_M61906_IG07
;; size=18 bbWeight=0.01 PerfScore 0.05
-G_M61906_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4080 {rdi r14}, byref, isz
+G_M61906_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4080 {rdi r14}, byref, isz
; byrRegs -[rax]
mov rdx, r14
; byrRegs +[rdx]
call [System.Guid:TryParseExactP(System.ReadOnlySpan`1[ushort],byref):ubyte]
; byrRegs -[rdx rdi r14]
- jmp SHORT G_M61906_IG13
+ jmp SHORT G_M61906_IG08
;; size=11 bbWeight=0 PerfScore 0.00
-G_M61906_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4080 {rdi r14}, byref, isz
+G_M61906_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4080 {rdi r14}, byref, isz
; byrRegs +[rdi r14]
cmp word ptr [rdi+0x12], 45
- je SHORT G_M61906_IG18
+ je SHORT G_M61906_IG13
mov rdx, r14
; byrRegs +[rdx]
call [<unknown method>]
; byrRegs -[rdx rdi r14]
- jmp SHORT G_M61906_IG19
+ jmp SHORT G_M61906_IG14
;; size=18 bbWeight=0 PerfScore 0.00
-G_M61906_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4080 {rdi r14}, byref
+G_M61906_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4080 {rdi r14}, byref
; byrRegs +[rdi r14]
mov rdx, r14
; byrRegs +[rdx]
call [System.Guid:TryParseExactB(System.ReadOnlySpan`1[ushort],byref):ubyte]
; byrRegs -[rdx rdi r14]
;; size=9 bbWeight=0 PerfScore 0.00
-G_M61906_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M61906_IG13
+G_M61906_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M61906_IG08
;; size=2 bbWeight=0 PerfScore 0.00
-G_M61906_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4080 {rdi r14}, byref, isz
+G_M61906_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4080 {rdi r14}, byref, isz
; byrRegs +[rdi r14]
mov rdx, r14
; byrRegs +[rdx]
call [<unknown method>]
; byrRegs -[rdx rdi r14]
- jmp SHORT G_M61906_IG13
+ jmp SHORT G_M61906_IG08
;; size=11 bbWeight=0 PerfScore 0.00
-G_M61906_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
- ; byrRegs +[r14]
+G_M61906_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=C000 {r14 r15}, byref, isz
+ ; byrRegs +[r14-r15]
+ call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
+ test eax, eax
+ jne SHORT G_M61906_IG10
+ lea r13d, [rbx-0x01]
+ mov eax, r13d
+ movzx rdi, word ptr [r15+2*rax]
+ cmp edi, 256
+ jb G_M61906_IG05
+ ;; size=34 bbWeight=0 PerfScore 0.00
+G_M61906_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=C000 {r14 r15}, byref, isz
+ call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
+ test eax, eax
+ jne SHORT G_M61906_IG10
+ jmp G_M61906_IG06
+ ;; size=15 bbWeight=0 PerfScore 0.00
+G_M61906_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
+ ; byrRegs -[r15]
mov rdi, r14
; byrRegs +[rdi]
mov esi, 9
@@ -218,16 +217,16 @@ G_M61906_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byr
; byrRegs -[rdi r14]
xor eax, eax
;; size=16 bbWeight=0 PerfScore 0.00
...
+12 (+16.22%) : 388021.dasm - Internal.TypeSystem.TypeSystemContext+SignatureVariableHashtable:CompareKeyToValue(uint,Internal.TypeSystem.SignatureVariable):ubyte:this (Tier1)
@@ -11,61 +11,66 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Internal.TypeSystem.TypeSystemContext+SignatureVariableHashtable>
; V01 arg1 [V01,T01] ( 3, 3 ) int -> r15 single-def
-; V02 arg2 [V02,T00] ( 6, 5 ) ref -> rbx class-hnd single-def <Internal.TypeSystem.SignatureVariable>
+; V02 arg2 [V02,T00] ( 7, 4.48) ref -> rbx class-hnd single-def <Internal.TypeSystem.SignatureVariable>
;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T04] ( 3, 2.00) int -> rax
-; V06 tmp2 [V06,T03] ( 2, 2 ) int -> rax "guarded devirt return temp"
+; V05 tmp1 [V05,T02] ( 3, 2.10) int -> r14
+; V06 tmp2 [V06,T03] ( 2, 0.38) int -> rax "guarded devirt return temp"
;* V07 tmp3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.SignatureTypeVariable>
-; V08 cse0 [V08,T02] ( 3, 3 ) long -> rax "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M7735_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
+ push r14
push rbx
- lea rbp, [rsp+0x10]
+ push rax
+ lea rbp, [rsp+0x20]
mov r15d, esi
mov rbx, rdx
; gcrRegs +[rbx]
- ;; size=15 bbWeight=1 PerfScore 4.00
+ ;; size=18 bbWeight=1 PerfScore 6.00
G_M7735_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rax, qword ptr [rbx]
mov rdi, 0xD1FFAB1E ; Internal.TypeSystem.SignatureTypeVariable
- cmp rax, rdi
- je SHORT G_M7735_IG03
+ cmp qword ptr [rbx], rdi
+ jne SHORT G_M7735_IG06
+ ;; size=15 bbWeight=1 PerfScore 4.25
+G_M7735_IG03: ; bbWeight=0.81, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov r14d, dword ptr [rbx+0x24]
+ ;; size=4 bbWeight=0.81 PerfScore 1.62
+G_M7735_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx]
+ xor eax, eax
+ cmp r15d, r14d
+ sete al
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M7735_IG05: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8
+ pop rbx
+ pop r14
+ pop r15
+ pop rbp
+ ret
+ ;; size=11 bbWeight=1 PerfScore 3.25
+G_M7735_IG06: ; bbWeight=0.19, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[rbx]
mov rdi, rbx
; gcrRegs +[rdi]
+ mov rax, qword ptr [rbx]
mov rax, qword ptr [rax+0x60]
call [rax+0x30]<unknown method>
; gcrRegs -[rdi]
test eax, eax
- jne SHORT G_M7735_IG06
- ;; size=32 bbWeight=1 PerfScore 10.00
-G_M7735_IG03: ; bbWeight=0.71, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- mov eax, dword ptr [rbx+0x24]
- ;; size=3 bbWeight=0.71 PerfScore 1.41
-G_M7735_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
- cmp r15d, eax
- sete al
- movzx rax, al
- ;; size=9 bbWeight=1 PerfScore 1.50
-G_M7735_IG05: ; bbWeight=1, epilog, nogc, extend
- pop rbx
- pop r15
- pop rbp
- ret
- ;; size=5 bbWeight=1 PerfScore 2.50
-G_M7735_IG06: ; bbWeight=0.29, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rbx]
- mov eax, dword ptr [rbx+0x24]
- or eax, 0xD1FFAB1E
+ je SHORT G_M7735_IG03
+ ;; size=17 bbWeight=0.19 PerfScore 1.62
+G_M7735_IG07: ; bbWeight=0.29, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov r14d, dword ptr [rbx+0x24]
+ or r14d, 0xD1FFAB1E
jmp SHORT G_M7735_IG04
- ;; size=10 bbWeight=0.29 PerfScore 1.25
+ ;; size=13 bbWeight=0.29 PerfScore 1.25
-; Total bytes of code 74, prolog size 9, PerfScore 20.66, instruction count 26, allocated bytes for code 74 (MethodHash=0d53e1c8) for method Internal.TypeSystem.TypeSystemContext+SignatureVariableHashtable:CompareKeyToValue(uint,Internal.TypeSystem.SignatureVariable):ubyte:this (Tier1)
+; Total bytes of code 86, prolog size 12, PerfScore 19.48, instruction count 30, allocated bytes for code 86 (MethodHash=0d53e1c8) for method Internal.TypeSystem.TypeSystemContext+SignatureVariableHashtable:CompareKeyToValue(uint,Internal.TypeSystem.SignatureVariable):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -73,11 +78,13 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x07
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
libraries.pmi.linux.x64.checked.mch
-35 (-7.43%) : 106165.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:GenerateAllDeclarationErrorsImpl(System.Threading.CancellationToken):this (FullOpts)
@@ -68,20 +68,34 @@ G_M15591_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rbx, rdi
; gcrRegs +[rbx]
;; size=26 bbWeight=1 PerfScore 8.00
-G_M15591_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M15591_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp gword ptr [rbp-0x30], 0
- jne G_M15591_IG27
- ;; size=11 bbWeight=1 PerfScore 3.00
-G_M15591_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ je SHORT G_M15591_IG04
+ ;; size=7 bbWeight=1 PerfScore 3.00
+G_M15591_IG03: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov rdi, gword ptr [rbp-0x30]
+ ; gcrRegs +[rdi]
+ cmp dword ptr [rdi+0x20], 0
+ jne G_M15591_IG28
+ ;; size=14 bbWeight=0.17 PerfScore 0.87
+G_M15591_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdi]
mov rdi, rbx
; gcrRegs +[rdi]
call [Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:GetMembersAndInitializers():Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol+MembersAndInitializers:this]
; gcrRegs -[rdi] +[rax]
cmp gword ptr [rbp-0x30], 0
- jne G_M15591_IG26
- ;; size=20 bbWeight=1 PerfScore 6.25
-G_M15591_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M15591_IG06
+ ;; size=16 bbWeight=1 PerfScore 6.25
+G_M15591_IG05: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
+ mov rdi, gword ptr [rbp-0x30]
+ ; gcrRegs +[rdi]
+ cmp dword ptr [rdi+0x20], 0
+ jne G_M15591_IG28
+ ;; size=14 bbWeight=0.17 PerfScore 0.87
+G_M15591_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdi]
mov rdi, rbx
; gcrRegs +[rdi]
mov r15, qword ptr [rbx]
@@ -96,9 +110,9 @@ G_M15591_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs -[rax]
mov dword ptr [rbp-0x34], eax
test r14d, r14d
- jle SHORT G_M15591_IG08
+ jle SHORT G_M15591_IG10
;; size=35 bbWeight=1 PerfScore 12.25
-G_M15591_IG05: ; bbWeight=4, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
+G_M15591_IG07: ; bbWeight=4, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
mov edi, r12d
mov r12, gword ptr [r13+8*rdi+0x10]
; gcrRegs +[r12]
@@ -110,9 +124,9 @@ G_M15591_IG05: ; bbWeight=4, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {},
call [rdx+0x30]<unknown method>
; gcrRegs -[rdi]
cmp eax, 11
- je SHORT G_M15591_IG07
+ je SHORT G_M15591_IG09
;; size=31 bbWeight=4 PerfScore 47.00
-G_M15591_IG06: ; bbWeight=2, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000 {}, byref
+G_M15591_IG08: ; bbWeight=2, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000 {}, byref
mov rdi, r12
; gcrRegs +[rdi]
mov rsi, gword ptr [rbp-0x30]
@@ -123,77 +137,119 @@ G_M15591_IG06: ; bbWeight=2, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000
call [rax+0x38]<unknown method>
; gcrRegs -[rsi rdi]
;; size=19 bbWeight=2 PerfScore 14.50
-G_M15591_IG07: ; bbWeight=4, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
+G_M15591_IG09: ; bbWeight=4, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
mov r12d, dword ptr [rbp-0x34]
inc r12d
mov edi, r12d
cmp r14d, edi
mov dword ptr [rbp-0x34], edi
- jg SHORT G_M15591_IG05
+ jg SHORT G_M15591_IG07
;; size=18 bbWeight=4 PerfScore 15.00
-G_M15591_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M15591_IG10: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r13]
cmp gword ptr [rbp-0x30], 0
- jne G_M15591_IG25
- ;; size=11 bbWeight=1 PerfScore 3.00
-G_M15591_IG09: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ je SHORT G_M15591_IG12
+ ;; size=7 bbWeight=1 PerfScore 3.00
+G_M15591_IG11: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov rdi, gword ptr [rbp-0x30]
+ ; gcrRegs +[rdi]
+ cmp dword ptr [rdi+0x20], 0
+ jne G_M15591_IG28
+ ;; size=14 bbWeight=0.17 PerfScore 0.87
+G_M15591_IG12: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdi]
mov rdi, rbx
; gcrRegs +[rdi]
call [Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol:get_BaseTypeNoUseSiteDiagnostics():Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol:this]
; gcrRegs -[rdi] +[rax]
cmp gword ptr [rbp-0x30], 0
- jne G_M15591_IG24
- ;; size=20 bbWeight=1 PerfScore 6.25
-G_M15591_IG10: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ je SHORT G_M15591_IG14
+ ;; size=16 bbWeight=1 PerfScore 6.25
+G_M15591_IG13: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
+ mov rdi, gword ptr [rbp-0x30]
+ ; gcrRegs +[rdi]
+ cmp dword ptr [rdi+0x20], 0
+ jne G_M15591_IG28
+ ;; size=14 bbWeight=0.17 PerfScore 0.87
+G_M15591_IG14: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdi]
mov rdi, rbx
; gcrRegs +[rdi]
call [Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol:get_InterfacesNoUseSiteDiagnostics():System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol]:this]
; gcrRegs -[rdi] +[rax]
cmp gword ptr [rbp-0x30], 0
- jne G_M15591_IG23
- ;; size=20 bbWeight=1 PerfScore 6.25
-G_M15591_IG11: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ je SHORT G_M15591_IG16
+ ;; size=16 bbWeight=1 PerfScore 6.25
+G_M15591_IG15: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
+ mov rdi, gword ptr [rbp-0x30]
+ ; gcrRegs +[rdi]
+ cmp dword ptr [rdi+0x20], 0
+ jne G_M15591_IG28
+ ;; size=14 bbWeight=0.17 PerfScore 0.87
+G_M15591_IG16: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdi]
mov rdi, rbx
; gcrRegs +[rdi]
mov rax, qword ptr [r15+0xD8]
call [rax+0x10]<unknown method>
; gcrRegs -[rdi] +[rax]
cmp gword ptr [rbp-0x30], 0
- jne G_M15591_IG22
- ;; size=24 bbWeight=1 PerfScore 8.25
-G_M15591_IG12: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M15591_IG18
+ ;; size=20 bbWeight=1 PerfScore 8.25
+G_M15591_IG17: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
+ mov rdi, gword ptr [rbp-0x30]
+ ; gcrRegs +[rdi]
+ cmp dword ptr [rdi+0x20], 0
+ jne G_M15591_IG28
+ ;; size=14 bbWeight=0.17 PerfScore 0.87
+G_M15591_IG18: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdi]
mov rdi, rbx
; gcrRegs +[rdi]
mov rax, qword ptr [r15+0x118]
call [rax+0x30]<unknown method>
; gcrRegs -[rdi] +[rax]
cmp dword ptr [rax+0x08], 0
- je SHORT G_M15591_IG14
+ je SHORT G_M15591_IG20
;; size=19 bbWeight=1 PerfScore 9.25
-G_M15591_IG13: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
+G_M15591_IG19: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
mov rdi, rax
; gcrRegs +[rdi]
call [Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol:EnsureAllConstraintsAreResolved(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol])]
; gcrRegs -[rax rdi]
;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M15591_IG14: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M15591_IG20: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp gword ptr [rbp-0x30], 0
- jne SHORT G_M15591_IG21
+ je SHORT G_M15591_IG22
;; size=7 bbWeight=1 PerfScore 3.00
-G_M15591_IG15: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M15591_IG21: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov rdi, gword ptr [rbp-0x30]
+ ; gcrRegs +[rdi]
+ cmp dword ptr [rdi+0x20], 0
+ jne SHORT G_M15591_IG28
+ ;; size=10 bbWeight=0.17 PerfScore 0.87
+G_M15591_IG22: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdi]
mov rdi, rbx
; gcrRegs +[rdi]
mov rax, qword ptr [r15+0xA0]
call [rax+0x08]<unknown method>
; gcrRegs -[rdi] +[rax]
cmp gword ptr [rbp-0x30], 0
- jne SHORT G_M15591_IG20
+ je SHORT G_M15591_IG24
;; size=20 bbWeight=1 PerfScore 8.25
-G_M15591_IG16: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M15591_IG23: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
+ mov rdi, gword ptr [rbp-0x30]
+ ; gcrRegs +[rdi]
+ cmp dword ptr [rdi+0x20], 0
+ jne SHORT G_M15591_IG28
+ ;; size=10 bbWeight=0.17 PerfScore 0.87
+G_M15591_IG24: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdi]
mov rdi, rbx
; gcrRegs +[rdi]
mov rsi, gword ptr [rbp-0x30]
@@ -201,16 +257,23 @@ G_M15591_IG16: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
call [<unknown method>]
; gcrRegs -[rsi rdi]
cmp gword ptr [rbp-0x30], 0
- jne SHORT G_M15591_IG19
+ je SHORT G_M15591_IG26
;; size=20 bbWeight=1 PerfScore 7.25
-G_M15591_IG17: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M15591_IG25: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov rdi, gword ptr [rbp-0x30]
+ ; gcrRegs +[rdi]
+ cmp dword ptr [rdi+0x20], 0
+ jne SHORT G_M15591_IG28
+ ;; size=10 bbWeight=0.17 PerfScore 0.87
+G_M15591_IG26: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rdi]
mov rdi, rbx
; gcrRegs +[rdi]
call [<unknown method>]
; gcrRegs -[rbx rdi]
nop
;; size=10 bbWeight=1 PerfScore 3.50
-G_M15591_IG18: ; bbWeight=1, epilog, nogc, extend
+G_M15591_IG27: ; bbWeight=1, epilog, nogc, extend
add rsp, 24
pop rbx
pop r12
@@ -220,85 +283,13 @@ G_M15591_IG18: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-G_M15591_IG19: ; bbWeight=0.17, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rbx]
- mov rdi, gword ptr [rbp-0x30]
- ; gcrRegs +[rdi]
- cmp dword ptr [rdi+0x20], 0
- je SHORT G_M15591_IG17
- jmp SHORT G_M15591_IG28
- ;; size=12 bbWeight=0.17 PerfScore 1.21
-G_M15591_IG20: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdi]
- mov rdi, gword ptr [rbp-0x30]
...
-34 (-7.31%) : 68611.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
@@ -62,11 +62,18 @@ G_M48701_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
mov gword ptr [rbp-0x28], rax
; GC ptr vars +{V02}
;; size=25 bbWeight=0.50 PerfScore 4.62
-G_M48701_IG05: ; bbWeight=0.50, gcVars=0000000000000010 {V02}, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M48701_IG05: ; bbWeight=0.50, gcVars=0000000000000010 {V02}, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, gcvars, byref, isz
cmp gword ptr [rbp-0x18], 0
+ je SHORT G_M48701_IG07
+ ;; size=7 bbWeight=0.50 PerfScore 1.50
+G_M48701_IG06: ; bbWeight=0.17, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
+ mov rdi, gword ptr [rbp-0x18]
+ ; gcrRegs +[rdi]
+ cmp dword ptr [rdi+0x20], 0
jne G_M48701_IG16
- ;; size=11 bbWeight=0.50 PerfScore 1.50
-G_M48701_IG06: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
+ ;; size=14 bbWeight=0.17 PerfScore 0.87
+G_M48701_IG07: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdi]
mov rdi, rbx
; gcrRegs +[rdi]
mov rsi, rax
@@ -77,9 +84,16 @@ G_M48701_IG06: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0000
; gcrRegs -[rax rdx rsi rdi]
; gcr arg pop 0
cmp gword ptr [rbp-0x18], 0
- jne G_M48701_IG15
- ;; size=27 bbWeight=0.50 PerfScore 3.75
-G_M48701_IG07: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ je SHORT G_M48701_IG09
+ ;; size=23 bbWeight=0.50 PerfScore 3.75
+G_M48701_IG08: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov rdi, gword ptr [rbp-0x18]
+ ; gcrRegs +[rdi]
+ cmp dword ptr [rdi+0x20], 0
+ jne G_M48701_IG16
+ ;; size=14 bbWeight=0.17 PerfScore 0.87
+G_M48701_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdi]
mov rdi, rbx
; gcrRegs +[rdi]
mov rsi, gword ptr [rbp-0x28]
@@ -88,9 +102,16 @@ G_M48701_IG07: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcrRegs -[rsi rdi]
; gcr arg pop 0
cmp gword ptr [rbp-0x18], 0
- jne G_M48701_IG14
- ;; size=24 bbWeight=0.50 PerfScore 3.62
-G_M48701_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M48701_IG11
+ ;; size=20 bbWeight=0.50 PerfScore 3.62
+G_M48701_IG10: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov rdi, gword ptr [rbp-0x18]
+ ; gcrRegs +[rdi]
+ cmp dword ptr [rdi+0x20], 0
+ jne SHORT G_M48701_IG16
+ ;; size=10 bbWeight=0.17 PerfScore 0.87
+G_M48701_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdi]
mov rdi, rbx
; gcrRegs +[rdi]
mov rsi, gword ptr [rbp-0x28]
@@ -106,11 +127,18 @@ G_M48701_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcrRegs -[rdi]
; gcr arg pop 0
cmp eax, 7
- jne SHORT G_M48701_IG10
+ jne SHORT G_M48701_IG14
cmp gword ptr [rbp-0x18], 0
- jne SHORT G_M48701_IG13
+ je SHORT G_M48701_IG13
;; size=41 bbWeight=0.50 PerfScore 7.88
-G_M48701_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M48701_IG12: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov rdi, gword ptr [rbp-0x18]
+ ; gcrRegs +[rdi]
+ cmp dword ptr [rdi+0x20], 0
+ jne SHORT G_M48701_IG16
+ ;; size=10 bbWeight=0.17 PerfScore 0.87
+G_M48701_IG13: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rdi]
mov rdi, rbx
; gcrRegs +[rdi]
mov rsi, gword ptr [rbp-0x28]
@@ -119,7 +147,7 @@ G_M48701_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcrRegs -[rsi rdi]
; gcr arg pop 0
;; size=13 bbWeight=0.50 PerfScore 2.12
-G_M48701_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M48701_IG14: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
lea r15, bword ptr [rbx+0x70]
; byrRegs +[r15]
mov rdi, rbx
@@ -134,17 +162,34 @@ G_M48701_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
mov rsi, rax
; gcrRegs +[rsi]
test r15, r15
- je G_M48701_IG18
+ jne SHORT G_M48701_IG17
+ ;; size=29 bbWeight=0.50 PerfScore 3.62
+G_M48701_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rbx rsi]
+ ; byrRegs -[r15]
+ call [System.ThrowHelper:ThrowNullReferenceException()]
+ ; gcr arg pop 0
+ int3
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M48701_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ lea rdi, [rbp-0x18]
+ call [System.Threading.CancellationToken:ThrowOperationCanceledException():this]
+ ; gcr arg pop 0
+ int3
+ ;; size=11 bbWeight=0 PerfScore 0.00
+G_M48701_IG17: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=8000 {r15}, byref, isz
+ ; gcrRegs +[rbx rsi]
+ ; byrRegs +[r15]
mov rdi, r15
; byrRegs +[rdi]
xor rdx, rdx
; gcrRegs +[rdx]
call <unknown method>
- ; gcrRegs -[rdx rsi]
+ ; gcrRegs -[rdx rsi] +[rax]
; byrRegs -[rdi r15]
; gcr arg pop 0
test rax, rax
- jne G_M48701_IG19
+ jne SHORT G_M48701_IG19
mov rdi, rbx
; gcrRegs +[rdi]
mov rsi, gword ptr [rbp-0x28]
@@ -157,8 +202,8 @@ G_M48701_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcr arg pop 0
lea rdi, bword ptr [rbx+0x84]
; byrRegs +[rdi]
- ;; size=79 bbWeight=0.50 PerfScore 9.38
-G_M48701_IG11: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
+ ;; size=42 bbWeight=0.50 PerfScore 5.75
+G_M48701_IG18: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
mov eax, dword ptr [rdi]
mov dword ptr [rbp-0x1C], eax
mov ecx, eax
@@ -168,56 +213,10 @@ G_M48701_IG11: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi},
lock
cmpxchg dword ptr [rdi], ecx
cmp eax, dword ptr [rbp-0x1C]
- jne SHORT G_M48701_IG11
+ jne SHORT G_M48701_IG18
;; size=26 bbWeight=4 PerfScore 103.00
-G_M48701_IG12: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[rdi]
- jmp SHORT G_M48701_IG19
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M48701_IG13: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rdi, gword ptr [rbp-0x18]
- ; gcrRegs +[rdi]
- cmp dword ptr [rdi+0x20], 0
- je G_M48701_IG09
- jmp SHORT G_M48701_IG17
- ;; size=16 bbWeight=0.17 PerfScore 1.21
-G_M48701_IG14: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdi]
- mov rdi, gword ptr [rbp-0x18]
- ; gcrRegs +[rdi]
- cmp dword ptr [rdi+0x20], 0
- jne SHORT G_M48701_IG17
- jmp G_M48701_IG08
- ;; size=15 bbWeight=0.17 PerfScore 1.21
-G_M48701_IG15: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdi]
- mov rdi, gword ptr [rbp-0x18]
- ; gcrRegs +[rdi]
- cmp dword ptr [rdi+0x20], 0
- jne SHORT G_M48701_IG17
- jmp G_M48701_IG07
- ;; size=15 bbWeight=0.17 PerfScore 1.21
-G_M48701_IG16: ; bbWeight=0.17, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi] +[rax]
- mov rdi, gword ptr [rbp-0x18]
- ; gcrRegs +[rdi]
- cmp dword ptr [rdi+0x20], 0
- je G_M48701_IG06
- ;; size=14 bbWeight=0.17 PerfScore 0.87
-G_M48701_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbx rdi]
- lea rdi, [rbp-0x18]
- call [System.Threading.CancellationToken:ThrowOperationCanceledException():this]
- ; gcr arg pop 0
- int3
- ;; size=11 bbWeight=0 PerfScore 0.00
-G_M48701_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- call [System.ThrowHelper:ThrowNullReferenceException()]
- ; gcr arg pop 0
- int3
- ;; size=7 bbWeight=0 PerfScore 0.00
G_M48701_IG19: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rbx]
+ ; byrRegs -[rdi]
mov rdi, gword ptr [rbp-0x28]
; gcrRegs +[rdi]
cmp dword ptr [rdi], edi
@@ -274,7 +273,7 @@ G_M48701_IG25: ; bbWeight=0, funclet epilog, nogc, extend
ret
;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 465, prolog size 24, PerfScore 161.62, instruction count 123, allocated bytes for code 465 (MethodHash=c61241c2) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
+; Total bytes of code 431, prolog size 24, PerfScore 159.59, instruction count 119, allocated bytes for code 431 (MethodHash=c61241c2) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
; ============================================================
Unwind Info:
-17 (-4.90%) : 140860.dasm - System.Security.Cryptography.X509Certificates.X509SubjectAlternativeNameExtension:.ctor(ubyte[],ubyte):this (FullOpts)
@@ -40,8 +40,8 @@
; V29 tmp26 [V29,T06] ( 4, 3.00) int -> r15 "field V11._length (fldOffset=0x8)" P-INDEP
;* V30 tmp27 [V30 ] ( 0, 0 ) byref -> zero-ref single-def "field V15._reference (fldOffset=0x0)" P-INDEP
;* V31 tmp28 [V31 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
-; V32 tmp29 [V32,T13] ( 3, 1.50) byref -> registers "field V23._reference (fldOffset=0x0)" P-INDEP
-; V33 tmp30 [V33,T14] ( 3, 1.50) int -> registers "field V23._length (fldOffset=0x8)" P-INDEP
+; V32 tmp29 [V32,T13] ( 3, 1.50) byref -> rsi "field V23._reference (fldOffset=0x0)" P-INDEP
+; V33 tmp30 [V33,T14] ( 3, 1.50) int -> rax "field V23._length (fldOffset=0x8)" P-INDEP
; V34 tmp31 [V34,T17] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
; V35 tmp32 [V35,T18] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
;
@@ -66,7 +66,7 @@ G_M33757_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
call [System.Security.Cryptography.Oids:get_SubjectAltNameOid():System.Security.Cryptography.Oid]
; gcrRegs +[rax]
test r15, r15
- je G_M33757_IG17
+ je G_M33757_IG18
lea r13, bword ptr [r15+0x10]
; byrRegs +[r13]
mov r15d, dword ptr [r15+0x08]
@@ -122,30 +122,30 @@ G_M33757_IG07: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
test rdi, rdi
jne SHORT G_M33757_IG10
;; size=18 bbWeight=1 PerfScore 4.75
-G_M33757_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M33757_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx rdi]
xor r15, r15
; gcrRegs +[r15]
- jmp G_M33757_IG18
- ;; size=8 bbWeight=0.50 PerfScore 1.12
+ jmp SHORT G_M33757_IG17
+ ;; size=5 bbWeight=0.50 PerfScore 1.12
G_M33757_IG09: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r15] +[rbx]
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
jmp SHORT G_M33757_IG07
;; size=12 bbWeight=0.00 PerfScore 0.00
-G_M33757_IG10: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+G_M33757_IG10: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi] +[rdi]
mov r15, gword ptr [rdi+0x08]
; gcrRegs +[r15]
test r15, r15
- je G_M33757_IG18
- ;; size=13 bbWeight=0.50 PerfScore 1.62
-G_M33757_IG11: ; bbWeight=0.47, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ je SHORT G_M33757_IG17
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
+G_M33757_IG11: ; bbWeight=0.47, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi]
cmp dword ptr [r15+0x08], 0
- je G_M33757_IG18
- ;; size=11 bbWeight=0.47 PerfScore 1.87
+ je SHORT G_M33757_IG17
+ ;; size=7 bbWeight=0.47 PerfScore 1.87
G_M33757_IG12: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r15]
mov byte ptr [rbx+0x18], r14b
@@ -157,11 +157,10 @@ G_M33757_IG12: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
G_M33757_IG13: ; bbWeight=0.44, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
lea rsi, bword ptr [rdi+0x10]
; byrRegs +[rsi]
- mov edi, dword ptr [rdi+0x08]
- ; gcrRegs -[rdi]
- mov eax, edi
- ;; size=9 bbWeight=0.44 PerfScore 1.22
+ mov eax, dword ptr [rdi+0x08]
+ ;; size=7 bbWeight=0.44 PerfScore 1.11
G_M33757_IG14: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
+ ; gcrRegs -[rdi]
mov rdi, rsi
; byrRegs +[rdi]
mov esi, eax
@@ -190,17 +189,27 @@ G_M33757_IG15: ; bbWeight=1, epilog, nogc, extend
;; size=15 bbWeight=1 PerfScore 4.25
G_M33757_IG16: ; bbWeight=0.06, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx]
- xor rdi, rdi
- ; byrRegs +[rdi]
- xor esi, esi
- mov eax, esi
- mov rsi, rdi
+ xor rsi, rsi
; byrRegs +[rsi]
+ xor eax, eax
jmp SHORT G_M33757_IG14
- ;; size=11 bbWeight=0.06 PerfScore 0.17
-G_M33757_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
- ; byrRegs -[rsi rdi]
+ ;; size=6 bbWeight=0.06 PerfScore 0.14
+G_M33757_IG17: ; bbWeight=0, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx] +[r15]
+ ; byrRegs -[rsi]
+ mov edi, 0x897D
+ mov rsi, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ ; gcrRegs +[rax]
+ mov rsi, rax
+ ; gcrRegs +[rsi]
+ mov rdi, r15
+ ; gcrRegs +[rdi]
+ call [System.ArgumentException:ThrowNullOrEmptyException(System.String,System.String)]
+ ; gcrRegs -[rax rsi rdi r15]
+ int3
+ ;; size=33 bbWeight=0 PerfScore 0.00
+G_M33757_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -219,23 +228,10 @@ G_M33757_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs +[rdi]
call CORINFO_HELP_THROW
; gcrRegs -[rdi r15]
- ;; size=58 bbWeight=0 PerfScore 0.00
-G_M33757_IG18: ; bbWeight=0, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
- ; gcrRegs +[r15]
- mov edi, 0x897D
- mov rsi, 0xD1FFAB1E
- call CORINFO_HELP_STRCNS
- ; gcrRegs +[rax]
- mov rsi, rax
- ; gcrRegs +[rsi]
- mov rdi, r15
- ; gcrRegs +[rdi]
- call [System.ArgumentException:ThrowNullOrEmptyException(System.String,System.String)]
- ; gcrRegs -[rax rsi rdi r15]
int3
- ;; size=33 bbWeight=0 PerfScore 0.00
+ ;; size=59 bbWeight=0 PerfScore 0.00
-; Total bytes of code 347, prolog size 16, PerfScore 46.82, instruction count 94, allocated bytes for code 347 (MethodHash=11867c22) for method System.Security.Cryptography.X509Certificates.X509SubjectAlternativeNameExtension:.ctor(ubyte[],ubyte):this (FullOpts)
+; Total bytes of code 330, prolog size 16, PerfScore 46.68, instruction count 92, allocated bytes for code 330 (MethodHash=11867c22) for method System.Security.Cryptography.X509Certificates.X509SubjectAlternativeNameExtension:.ctor(ubyte[],ubyte):this (FullOpts)
; ============================================================
Unwind Info:
+28 (+7.45%) : 15697.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:check@1006(Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+GenericComparer,System.Array,System.Array,long,long,long,long):int (FullOpts)
@@ -8,28 +8,28 @@
; 4 inlinees with PGO data; 10 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T18] ( 3, 6 ) ref -> r12 class-hnd single-def <Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+GenericComparer>
+; V00 arg0 [V00,T16] ( 3, 6 ) ref -> r12 class-hnd single-def <Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+GenericComparer>
; V01 arg1 [V01,T00] ( 7, 22 ) ref -> rbx class-hnd single-def <System.Array>
; V02 arg2 [V02,T01] ( 7, 22 ) ref -> r15 class-hnd single-def <System.Array>
; V03 arg3 [V03,T12] ( 3, 10 ) long -> r13 single-def
-; V04 arg4 [V04,T19] ( 3, 6 ) long -> [rbp-0x30] single-def
-; V05 arg5 [V05,T20] ( 3, 6 ) long -> [rbp-0x38] single-def
+; V04 arg4 [V04,T17] ( 3, 6 ) long -> [rbp-0x30] single-def
+; V05 arg5 [V05,T18] ( 3, 6 ) long -> [rbp-0x38] single-def
; V06 arg6 [V06,T02] ( 5, 24 ) long -> r14
-; V07 loc0 [V07,T17] ( 3, 8.50) int -> rax
+; V07 loc0 [V07,T15] ( 3, 8.50) int -> rax
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T07] ( 2, 16 ) ref -> [rbp-0x48] class-hnd spill-single-def "impAppendStmt" <System.Object>
+; V09 tmp1 [V09,T07] ( 2, 16 ) ref -> [rbp-0x48] class-hnd "impAppendStmt" <System.Object>
; V10 tmp2 [V10,T05] ( 3, 24 ) long -> rdi "Inlining Arg"
; V11 tmp3 [V11,T13] ( 3, 12 ) int -> [rbp-0x3C] spill-single-def "Inline stloc first use temp"
-; V12 tmp4 [V12,T21] ( 2, 4 ) int -> rdi "Inline return value spill temp"
+; V12 tmp4 [V12,T21] ( 2, 0 ) int -> r8 "Inline return value spill temp"
;* V13 tmp5 [V13 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V14 tmp6 [V14,T15] ( 3, 10 ) int -> rdi "Inline stloc first use temp"
+; V14 tmp6 [V14,T19] ( 3, 8 ) int -> r8 "Inline stloc first use temp"
; V15 tmp7 [V15,T03] ( 3, 24 ) byref -> [rbp-0x50] spill-single-def "Inlining Arg"
;* V16 tmp8 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V17 tmp9 [V17,T06] ( 3, 24 ) long -> rdi "Inlining Arg"
-; V18 tmp10 [V18,T14] ( 3, 12 ) int -> [rbp-0x40] spill-single-def "Inline stloc first use temp"
-; V19 tmp11 [V19,T22] ( 2, 4 ) int -> rdi "Inline return value spill temp"
+; V18 tmp10 [V18,T14] ( 3, 12 ) int -> [rbp-0x40] "Inline stloc first use temp"
+; V19 tmp11 [V19,T22] ( 2, 0 ) int -> r8 "Inline return value spill temp"
;* V20 tmp12 [V20 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V21 tmp13 [V21,T16] ( 3, 10 ) int -> rdi "Inline stloc first use temp"
+; V21 tmp13 [V21,T20] ( 3, 8 ) int -> r8 "Inline stloc first use temp"
; V22 tmp14 [V22,T04] ( 3, 24 ) byref -> [rbp-0x58] spill-single-def "Inlining Arg"
;* V23 tmp15 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V24 tmp16 [V24,T09] ( 2, 16 ) long -> rsi "argument with side effect"
@@ -61,7 +61,7 @@ G_M51942_IG01: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=42 bbWeight=8 PerfScore 80.00
G_M51942_IG02: ; bbWeight=8, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, byref
cmp r14, r13
- jge G_M51942_IG12
+ jge G_M51942_IG10
;; size=9 bbWeight=8 PerfScore 10.00
G_M51942_IG03: ; bbWeight=4, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, byref, isz
mov qword ptr [rbp-0x30], rax
@@ -88,21 +88,17 @@ G_M51942_IG04: ; bbWeight=2, gcVars=0000000000000008 {V15}, gcrefRegs=900
; gcrRegs -[rsi rdi]
mov edx, dword ptr [rbp-0x3C]
;; size=22 bbWeight=2 PerfScore 9.00
-G_M51942_IG05: ; bbWeight=4, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, byref, isz
+G_M51942_IG05: ; bbWeight=4, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, byref
mov r8, bword ptr [rbp-0x50]
; byrRegs +[r8]
- mov edi, dword ptr [r8+0x04]
- add edi, -24
- shr edi, 3
- je SHORT G_M51942_IG07
- ;; size=16 bbWeight=4 PerfScore 19.00
-G_M51942_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, gcvars, byref
+ mov r8d, dword ptr [r8+0x04]
; byrRegs -[r8]
+ add r8d, -24
+ shr r8d, 3
+ jne G_M51942_IG13
+ ;; size=22 bbWeight=4 PerfScore 19.00
+G_M51942_IG06: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V15}
- cmp edi, 1
- jne G_M51942_IG16
- ;; size=9 bbWeight=2 PerfScore 2.50
-G_M51942_IG07: ; bbWeight=4, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, byref, isz
mov rdi, rbx
; gcrRegs +[rdi]
mov esi, edx
@@ -128,10 +124,11 @@ G_M51942_IG07: ; bbWeight=4, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000
mov bword ptr [rbp-0x58], r8
; GC ptr vars +{V22}
test dword ptr [r8], 0xD1FFAB1E
- jne SHORT G_M51942_IG09
+ jne SHORT G_M51942_IG08
;; size=73 bbWeight=4 PerfScore 96.00
-G_M51942_IG08: ; bbWeight=2, gcVars=0000000000000090 {V09 V22}, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, gcvars, byref
+G_M51942_IG07: ; bbWeight=2, gcVars=0000000000000090 {V09 V22}, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
+ mov dword ptr [rbp-0x40], edx
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
mov rdi, rsi
@@ -139,22 +136,18 @@ G_M51942_IG08: ; bbWeight=2, gcVars=0000000000000090 {V09 V22}, gcrefRegs
call [<unknown method>]
; gcrRegs -[rsi rdi]
mov edx, dword ptr [rbp-0x40]
- ;; size=22 bbWeight=2 PerfScore 9.00
-G_M51942_IG09: ; bbWeight=4, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=25 bbWeight=2 PerfScore 11.00
+G_M51942_IG08: ; bbWeight=4, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, byref, isz
mov r8, bword ptr [rbp-0x58]
; byrRegs +[r8]
- mov edi, dword ptr [r8+0x04]
- add edi, -24
- shr edi, 3
- je SHORT G_M51942_IG11
- ;; size=16 bbWeight=4 PerfScore 19.00
-G_M51942_IG10: ; bbWeight=2, gcVars=0000000000000080 {V09}, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov r8d, dword ptr [r8+0x04]
; byrRegs -[r8]
+ add r8d, -24
+ shr r8d, 3
+ jne SHORT G_M51942_IG14
+ ;; size=18 bbWeight=4 PerfScore 19.00
+G_M51942_IG09: ; bbWeight=4, gcVars=0000000000000080 {V09}, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V22}
- cmp edi, 1
- jne SHORT G_M51942_IG16
- ;; size=5 bbWeight=2 PerfScore 2.50
-G_M51942_IG11: ; bbWeight=4, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, byref, isz
mov rdi, r15
; gcrRegs +[rdi]
mov esi, edx
@@ -175,16 +168,16 @@ G_M51942_IG11: ; bbWeight=4, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000
call [<unknown method>]
; gcrRegs -[rax rdx rsi rdi]
test eax, eax
- jne SHORT G_M51942_IG14
+ jne SHORT G_M51942_IG12
inc r14
mov rax, qword ptr [rbp-0x30]
jmp G_M51942_IG02
;; size=55 bbWeight=4 PerfScore 64.00
-G_M51942_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M51942_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx r12 r15]
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M51942_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M51942_IG11: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 56
pop rbx
pop r12
@@ -194,7 +187,7 @@ G_M51942_IG13: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M51942_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M51942_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
add rsp, 56
pop rbx
pop r12
@@ -204,7 +197,27 @@ G_M51942_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M51942_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[rbx r12 r15]
+ cmp r8d, 1
+ jne SHORT G_M51942_IG16
+ jmp G_M51942_IG06
+ ;; size=11 bbWeight=0 PerfScore 0.00
+G_M51942_IG14: ; bbWeight=0, gcVars=0000000000000080 {V09}, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; GC ptr vars +{V07 V09}
+ cmp r8d, 1
+ jne SHORT G_M51942_IG16
+ mov edi, edx
+ mov rdx, gword ptr [rbp-0x48]
+ ; gcrRegs +[rdx]
+ mov gword ptr [rbp-0x48], rdx
+ mov edx, edi
+ ; gcrRegs -[rdx]
+ jmp SHORT G_M51942_IG09
+ ;; size=20 bbWeight=0 PerfScore 0.00
G_M51942_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rbx r12 r15]
+ ; GC ptr vars -{V07 V09}
mov edi, 21
mov esi, 53
call [System.ThrowHelper:ThrowArgumentOutOfRangeException(int,int)]
@@ -216,7 +229,7 @@ G_M51942_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 376, prolog size 19, PerfScore 376.38, instruction count 111, allocated bytes for code 376 (MethodHash=a11e3519) for method Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:check@1006(Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+GenericComparer,System.Array,System.Array,long,long,long,long):int (FullOpts)
+; Total bytes of code 404, prolog size 19, PerfScore 373.38, instruction count 118, allocated bytes for code 404 (MethodHash=a11e3519) for method Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:check@1006(Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+GenericComparer,System.Array,System.Array,long,long,long,long):int (FullOpts)
; ============================================================
Unwind Info:
+40 (+8.62%) : 74166.dasm - Microsoft.CodeAnalysis.CSharp.ValueSetFactory+DecimalValueSetFactory:Microsoft.CodeAnalysis.CSharp.IValueSetFactory.Related(int,Microsoft.CodeAnalysis.ConstantValue):Microsoft.CodeAnalysis.CSharp.IValueSet:this (FullOpts)
@@ -11,40 +11,40 @@
; V00 this [V00,T01] ( 3, 2.50) ref -> r15 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.ValueSetFactory+DecimalValueSetFactory>
; V01 arg1 [V01,T02] ( 3, 2.50) int -> r14 single-def
; V02 arg2 [V02,T00] ( 5, 4.50) ref -> rbx class-hnd single-def <Microsoft.CodeAnalysis.ConstantValue>
-; V03 loc0 [V03 ] ( 2, 1 ) struct ( 8) [rbp-0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.CSharp.ValueSetFactory+DecimalTC>
+; V03 loc0 [V03 ] ( 2, 1 ) struct ( 8) [rbp-0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.CSharp.ValueSetFactory+DecimalTC>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
; V05 OutArgs [V05 ] ( 1, 1 ) struct ( 8) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T05] ( 3, 3 ) struct (16) [rbp-0x30] do-not-enreg[SAR] multireg-arg multireg-ret "spilled call-like call argument" <System.Decimal>
+; V06 tmp1 [V06,T05] ( 3, 3 ) struct (16) [rbp-0x40] do-not-enreg[SAR] multireg-arg multireg-ret "spilled call-like call argument" <System.Decimal>
; V07 tmp2 [V07,T09] ( 2, 2 ) ref -> rbx class-hnd single-def "impAppendStmt" <<unknown class>>
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Decimal>
-; V09 tmp4 [V09 ] ( 12, 6 ) struct (16) [rbp-0x40] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.ValueSetFactory+DecimalTC+DecimalRep>
+; V09 tmp4 [V09 ] ( 12, 6 ) struct (16) [rbp-0x50] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.ValueSetFactory+DecimalTC+DecimalRep>
;* V10 tmp5 [V10 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <Microsoft.CodeAnalysis.CSharp.ValueSetFactory+DecimalTC+DecimalRep>
-; V11 tmp6 [V11 ] ( 2, 1 ) ubyte -> [rbp-0x48] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V12 tmp7 [V12 ] ( 2, 1 ) ubyte -> [rbp-0x50] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V13 tmp8 [V13 ] ( 2, 1 ) int -> [rbp-0x58] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V14 tmp9 [V14 ] ( 2, 1 ) int -> [rbp-0x60] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V15 tmp10 [V15 ] ( 2, 1 ) int -> [rbp-0x68] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V11 tmp6 [V11 ] ( 2, 1 ) ubyte -> [rbp-0x58] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V12 tmp7 [V12 ] ( 2, 1 ) ubyte -> [rbp-0x60] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V13 tmp8 [V13 ] ( 2, 1 ) int -> [rbp-0x68] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V14 tmp9 [V14 ] ( 2, 1 ) int -> [rbp-0x70] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V15 tmp10 [V15 ] ( 2, 1 ) int -> [rbp-0x78] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
;* V16 tmp11 [V16 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.ValueSetFactory+DecimalTC+DecimalRep>
; V17 tmp12 [V17,T06] ( 3, 3 ) ubyte -> rsi "Inlining Arg"
; V18 tmp13 [V18,T10] ( 2, 2 ) int -> rdi "Inlining Arg"
; V19 tmp14 [V19,T11] ( 2, 2 ) int -> rax "Inlining Arg"
; V20 tmp15 [V20,T12] ( 2, 2 ) int -> rcx "Inlining Arg"
; V21 tmp16 [V21,T13] ( 2, 2 ) ubyte -> rdx "Inlining Arg"
-; V22 tmp17 [V22,T20] ( 3, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V23 tmp18 [V23 ] ( 8, 8 ) struct (16) [rbp-0x78] do-not-enreg[SFA] multireg-arg ld-addr-op "NewObj constructor temp" <System.Decimal>
-; V24 tmp19 [V24,T03] ( 5, 4.18) ubyte -> r11 "Inlining Arg"
-; V25 tmp20 [V25,T14] ( 2, 2 ) int -> rdx "Inlining Arg"
-; V26 tmp21 [V26,T15] ( 2, 2 ) int -> rcx "Inlining Arg"
-; V27 tmp22 [V27,T16] ( 2, 2 ) int -> rdi "Inlining Arg"
-; V28 tmp23 [V28,T17] ( 2, 2 ) ubyte -> rsi "Inlining Arg"
-; V29 tmp24 [V29,T18] ( 2, 1 ) int -> r15 ld-addr-op "Inlining Arg"
+; V22 tmp17 [V22,T20] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V23 tmp18 [V23 ] ( 8, 8 ) struct (16) [rbp-0x88] do-not-enreg[SFA] multireg-arg ld-addr-op "NewObj constructor temp" <System.Decimal>
+; V24 tmp19 [V24,T03] ( 5, 4.18) ubyte -> rdx "Inlining Arg"
+; V25 tmp20 [V25,T14] ( 2, 2 ) int -> r15 "Inlining Arg"
+; V26 tmp21 [V26,T15] ( 2, 2 ) int -> r13 "Inlining Arg"
+; V27 tmp22 [V27,T16] ( 2, 2 ) int -> r12 "Inlining Arg"
+; V28 tmp23 [V28,T17] ( 2, 2 ) ubyte -> rax "Inlining Arg"
+; V29 tmp24 [V29,T18] ( 2, 1 ) int -> [rbp-0x8C] ld-addr-op spill-single-def "Inlining Arg"
;* V30 tmp25 [V30,T19] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V31 tmp26 [V31 ] ( 0, 0 ) int -> zero-ref "field V08._flags (fldOffset=0x0)" P-INDEP
;* V32 tmp27 [V32 ] ( 0, 0 ) int -> zero-ref "field V08._hi32 (fldOffset=0x4)" P-INDEP
;* V33 tmp28 [V33 ] ( 0, 0 ) long -> zero-ref "field V08._lo64 (fldOffset=0x8)" P-INDEP
-; V34 tmp29 [V34,T04] ( 6, 4 ) int -> [rbp-0x78] do-not-enreg[] "field V23._flags (fldOffset=0x0)" P-DEP
-; V35 tmp30 [V35,T07] ( 3, 2.50) int -> [rbp-0x74] do-not-enreg[] "field V23._hi32 (fldOffset=0x4)" P-DEP
-; V36 tmp31 [V36,T08] ( 3, 2.50) long -> [rbp-0x70] do-not-enreg[] "field V23._lo64 (fldOffset=0x8)" P-DEP
+; V34 tmp29 [V34,T04] ( 6, 4 ) int -> [rbp-0x88] do-not-enreg[] "field V23._flags (fldOffset=0x0)" P-DEP
+; V35 tmp30 [V35,T07] ( 3, 2.50) int -> [rbp-0x84] do-not-enreg[] "field V23._hi32 (fldOffset=0x4)" P-DEP
+; V36 tmp31 [V36,T08] ( 3, 2.50) long -> [rbp-0x80] do-not-enreg[] "field V23._lo64 (fldOffset=0x8)" P-DEP
;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref "V16.[000..004)"
;* V38 tmp33 [V38 ] ( 0, 0 ) int -> zero-ref "V16.[004..008)"
;* V39 tmp34 [V39 ] ( 0, 0 ) int -> zero-ref "V16.[008..012)"
@@ -53,27 +53,29 @@
; V42 tmp37 [V42,T21] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
; V43 tmp38 [V43,T22] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
;
-; Lcl frame size = 104
+; Lcl frame size = 120
G_M59213_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
push r14
+ push r13
+ push r12
push rbx
- sub rsp, 104
- lea rbp, [rsp+0x80]
+ sub rsp, 120
+ lea rbp, [rsp+0xA0]
xor eax, eax
- mov qword ptr [rbp-0x68], rax
+ mov qword ptr [rbp-0x78], rax
vxorps xmm8, xmm8, xmm8
- vmovdqu ymmword ptr [rbp-0x60], ymm8
- vmovdqu ymmword ptr [rbp-0x40], ymm8
- mov qword ptr [rbp-0x20], rax
+ vmovdqu ymmword ptr [rbp-0x70], ymm8
+ vmovdqu ymmword ptr [rbp-0x50], ymm8
+ mov qword ptr [rbp-0x30], rax
mov r15, rdi
; gcrRegs +[r15]
mov r14d, esi
mov rbx, rdx
; gcrRegs +[rbx]
- ;; size=52 bbWeight=1 PerfScore 12.08
+ ;; size=56 bbWeight=1 PerfScore 14.08
G_M59213_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
mov rdi, rbx
; gcrRegs +[rdi]
@@ -82,74 +84,70 @@ G_M59213_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
call [rax+0x20]<unknown method>
; gcrRegs -[rdi]
cmp eax, 1
- je G_M59213_IG07
+ je G_M59213_IG06
;; size=22 bbWeight=1 PerfScore 8.50
-G_M59213_IG03: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- mov byte ptr [rbp-0x20], 0
- lea rdi, [rbp-0x20]
+G_M59213_IG03: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ mov byte ptr [rbp-0x30], 0
+ lea rdi, [rbp-0x30]
mov rsi, rbx
; gcrRegs +[rsi]
call [Microsoft.CodeAnalysis.CSharp.ValueSetFactory+DecimalTC:FromConstantValue(Microsoft.CodeAnalysis.ConstantValue):System.Decimal:this]
; gcrRegs -[rbx rsi]
- mov qword ptr [rbp-0x30], rax
- mov qword ptr [rbp-0x28], rdx
- mov rbx, gword ptr [r15+0x08]
- ; gcrRegs +[rbx]
- lea rdi, [rbp-0x68]
- mov qword ptr [rsp], rdi
- mov rdi, qword ptr [rbp-0x30]
- mov rsi, qword ptr [rbp-0x28]
- lea rdx, [rbp-0x48]
- lea rcx, [rbp-0x50]
- lea r8, [rbp-0x58]
- lea r9, [rbp-0x60]
- call [Roslyn.Utilities.DecimalUtilities:GetBits(System.Decimal,byref,byref,byref,byref,byref)]
- ; gcrRegs -[r15]
- mov edi, dword ptr [rbp-0x58]
- mov eax, dword ptr [rbp-0x60]
- mov ecx, dword ptr [rbp-0x68]
- movzx rdx, byte ptr [rbp-0x48]
- movzx rsi, byte ptr [rbp-0x50]
- cmp esi, 28
- jg G_M59213_IG10
- mov dword ptr [rbp-0x40], edi
- mov dword ptr [rbp-0x3C], eax
- mov dword ptr [rbp-0x38], ecx
- mov byte ptr [rbp-0x34], dl
- mov byte ptr [rbp-0x33], sil
- lea rdi, [rbp-0x40]
- call [<unknown method>]
mov qword ptr [rbp-0x40], rax
mov qword ptr [rbp-0x38], rdx
- mov edx, dword ptr [rbp-0x40]
- mov ecx, dword ptr [rbp-0x3C]
- mov edi, dword ptr [rbp-0x38]
- movzx rsi, byte ptr [rbp-0x34]
- movzx r11, byte ptr [rbp-0x33]
- mov r15d, r11d
- cmp r11d, 28
- jl SHORT G_M59213_IG05
- ;; size=156 bbWeight=0.50 PerfScore 20.25
-G_M59213_IG04: ; bbWeight=0.09, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- cmp r11d, 28
- jg G_M59213_IG09
- ;; size=10 bbWeight=0.09 PerfScore 0.11
-G_M59213_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- mov edx, edx
- mov ecx, ecx
- shl rcx, 32
- add rdx, rcx
- mov qword ptr [rbp-0x70], rdx
- mov dword ptr [rbp-0x74], edi
- shl r11d, 16
- mov dword ptr [rbp-0x78], r11d
- mov edx, dword ptr [rbp-0x78]
+ mov rbx, gword ptr [r15+0x08]
+ ; gcrRegs +[rbx]
+ lea rdi, [rbp-0x78]
+ mov qword ptr [rsp], rdi
+ mov rdi, qword ptr [rbp-0x40]
+ mov rsi, qword ptr [rbp-0x38]
+ lea rdx, [rbp-0x58]
+ lea rcx, [rbp-0x60]
+ lea r8, [rbp-0x68]
+ lea r9, [rbp-0x70]
+ call [Roslyn.Utilities.DecimalUtilities:GetBits(System.Decimal,byref,byref,byref,byref,byref)]
+ ; gcrRegs -[r15]
+ mov edi, dword ptr [rbp-0x68]
+ mov eax, dword ptr [rbp-0x70]
+ mov ecx, dword ptr [rbp-0x78]
+ movzx rdx, byte ptr [rbp-0x58]
+ movzx rsi, byte ptr [rbp-0x60]
+ cmp esi, 28
+ jg G_M59213_IG10
+ mov dword ptr [rbp-0x50], edi
+ mov dword ptr [rbp-0x4C], eax
+ mov dword ptr [rbp-0x48], ecx
+ mov byte ptr [rbp-0x44], dl
+ mov byte ptr [rbp-0x43], sil
+ lea rdi, [rbp-0x50]
+ call [<unknown method>]
+ mov qword ptr [rbp-0x50], rax
+ mov qword ptr [rbp-0x48], rdx
+ mov r15d, dword ptr [rbp-0x50]
+ mov r13d, dword ptr [rbp-0x4C]
+ mov r12d, dword ptr [rbp-0x48]
+ movzx rax, byte ptr [rbp-0x44]
+ movzx rdx, byte ptr [rbp-0x43]
+ mov dword ptr [rbp-0x8C], edx
+ cmp edx, 28
+ jge G_M59213_IG08
+ ;; size=163 bbWeight=0.50 PerfScore 20.62
+G_M59213_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov ecx, r15d
+ mov edi, r13d
+ shl rdi, 32
+ add rcx, rdi
+ mov qword ptr [rbp-0x80], rcx
+ mov dword ptr [rbp-0x84], r12d
+ shl edx, 16
+ mov dword ptr [rbp-0x88], edx
+ mov edx, dword ptr [rbp-0x88]
or edx, 0xD1FFAB1E
- test esi, esi
- cmove edx, dword ptr [rbp-0x78]
- mov dword ptr [rbp-0x78], edx
- mov rdx, qword ptr [rbp-0x78]
- mov rcx, qword ptr [rbp-0x70]
+ test eax, eax
+ cmove edx, dword ptr [rbp-0x88]
+ mov dword ptr [rbp-0x88], edx
+ mov rdx, qword ptr [rbp-0x88]
+ mov rcx, qword ptr [rbp-0x80]
mov rdi, rbx
; gcrRegs +[rdi]
mov esi, r14d
@@ -157,16 +155,18 @@ G_M59213_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
call [r11]<unknown method>
; gcrRegs -[rbx rdi] +[rax]
nop
- ;; size=72 bbWeight=0.50 PerfScore 7.62
-G_M59213_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 104
+ ;; size=91 bbWeight=0.50 PerfScore 7.62
+G_M59213_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 120
pop rbx
+ pop r12
+ pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.62
-G_M59213_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M59213_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
...
+14 (+13.33%) : 269802.dasm - System.Collections.CaseInsensitiveHashCodeProvider:GetHashCode(System.Object):int:this (FullOpts)
@@ -10,42 +10,44 @@
;
; V00 this [V00,T01] ( 3, 2.50) ref -> rdi this class-hnd single-def <System.Collections.CaseInsensitiveHashCodeProvider>
; V01 arg1 [V01,T00] ( 6, 5.00) ref -> rsi class-hnd single-def <System.Object>
-; V02 loc0 [V02,T04] ( 3, 1.50) ref -> rsi class-hnd exact <System.String>
+; V02 loc0 [V02,T06] ( 3, 1.50) ref -> rsi class-hnd exact <System.String>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String>
-; V05 tmp2 [V05,T02] ( 3, 3.00) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Globalization.CompareInfo>
+; V05 tmp2 [V05,T02] ( 3, 3 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Globalization.CompareInfo>
;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V07 tmp4 [V07 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V08 tmp5 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V09 tmp6 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V10 tmp7 [V10,T06] ( 2, 2.00) int -> rsi "Inlining Arg"
-; V11 tmp8 [V11,T05] ( 2, 2.00) byref -> rdx single-def "Inlining Arg"
+; V10 tmp7 [V10,T05] ( 2, 2 ) int -> rsi "Inlining Arg"
+; V11 tmp8 [V11,T04] ( 2, 2 ) byref -> rdx single-def "Inlining Arg"
;* V12 tmp9 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp10 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp11 [V14 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V15 tmp12 [V15 ] ( 0, 0 ) byref -> zero-ref single-def "field V06._reference (fldOffset=0x0)" P-INDEP
;* V16 tmp13 [V16 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
-; V17 tmp14 [V17,T07] ( 2, 1.00) byref -> rdx single-def "field V07._reference (fldOffset=0x0)" P-INDEP
-; V18 tmp15 [V18,T09] ( 2, 1.00) int -> rcx "field V07._length (fldOffset=0x8)" P-INDEP
-; V19 tmp16 [V19,T08] ( 2, 1.00) byref -> rdx single-def "field V08._reference (fldOffset=0x0)" P-INDEP
-; V20 tmp17 [V20,T10] ( 2, 1.00) int -> rsi "field V08._length (fldOffset=0x8)" P-INDEP
+; V17 tmp14 [V17,T07] ( 2, 1 ) byref -> rdx single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+; V18 tmp15 [V18,T09] ( 2, 1 ) int -> rcx "field V07._length (fldOffset=0x8)" P-INDEP
+; V19 tmp16 [V19,T08] ( 2, 1 ) byref -> rdx single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+; V20 tmp17 [V20,T10] ( 2, 1 ) int -> rsi "field V08._length (fldOffset=0x8)" P-INDEP
;* V21 tmp18 [V21 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP
;* V22 tmp19 [V22 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V23 cse0 [V23,T03] ( 3, 2.50) long -> rax "CSE - aggressive"
+; V23 cse0 [V23,T03] ( 3, 2.50) long -> rbx "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M64002_IG01: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- mov rbp, rsp
- ;; size=4 bbWeight=1.00 PerfScore 1.25
+ push rbx
+ push rax
+ lea rbp, [rsp+0x10]
+ ;; size=8 bbWeight=1.00 PerfScore 3.50
G_M64002_IG02: ; bbWeight=1.00, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rsi rdi]
test rsi, rsi
je SHORT G_M64002_IG07
- mov rax, qword ptr [rsi]
- mov rcx, 0xD1FFAB1E ; System.String
- cmp rax, rcx
+ mov rbx, qword ptr [rsi]
+ mov rdx, 0xD1FFAB1E ; System.String
+ cmp rbx, rdx
jne SHORT G_M64002_IG05
;; size=23 bbWeight=1.00 PerfScore 4.75
G_M64002_IG03: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref
@@ -67,22 +69,26 @@ G_M64002_IG03: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000
nop
;; size=33 bbWeight=0.50 PerfScore 5.88
G_M64002_IG04: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 8
+ pop rbx
pop rbp
ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
G_M64002_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rsi]
mov rdi, rsi
; gcrRegs +[rdi]
- mov rax, qword ptr [rax+0x48]
+ mov rax, qword ptr [rbx+0x48]
call [rax+0x18]<unknown method>
; gcrRegs -[rsi rdi]
nop
;; size=11 bbWeight=0.50 PerfScore 2.75
G_M64002_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 8
+ pop rbx
pop rbp
ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
G_M64002_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov edi, 0x447
mov rsi, 0xD1FFAB1E
@@ -95,7 +101,7 @@ G_M64002_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=30 bbWeight=0 PerfScore 0.00
-; Total bytes of code 105, prolog size 4, PerfScore 16.12, instruction count 32, allocated bytes for code 105 (MethodHash=067e05fd) for method System.Collections.CaseInsensitiveHashCodeProvider:GetHashCode(System.Object):int:this (FullOpts)
+; Total bytes of code 119, prolog size 8, PerfScore 19.12, instruction count 38, allocated bytes for code 119 (MethodHash=067e05fd) for method System.Collections.CaseInsensitiveHashCodeProvider:GetHashCode(System.Object):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -103,9 +109,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x01
- CountOfUnwindCodes: 1
+ SizeOfProlog : 0x03
+ CountOfUnwindCodes: 3
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
+ CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
libraries_tests.run.linux.x64.Release.mch
-19 (-30.16%) : 89281.dasm - Roslyn.Utilities.MultiDictionary2[System.__Canon,System.ValueTuple2[System.Canon,int]]:get_Item(System.Canon):Roslyn.Utilities.MultiDictionary2+ValueSet[System.__Canon,System.ValueTuple2[System.__Canon,int]]:this (Tier1)
@@ -3,35 +3,32 @@
; Tier1 code
; optimized code
; optimized using Dynamic PGO
-; rbp based frame
+; rsp based frame
; partially interruptible
; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 360896
; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 5, 5 ) ref -> rbx this class-hnd single-def <Roslyn.Utilities.MultiDictionary`2[System.__Canon,System.ValueTuple`2[System.__Canon,int]]>
+; V00 this [V00,T01] ( 5, 3.62) ref -> rbx this class-hnd single-def <Roslyn.Utilities.MultiDictionary`2[System.__Canon,System.ValueTuple`2[System.__Canon,int]]>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rsi class-hnd single-def <System.__Canon>
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.ValueTuple`2[System.__Canon,int]]>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Return value temp for multireg return" <Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.ValueTuple`2[System.__Canon,int]]>
-;* V05 tmp2 [V05,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V06 tmp3 [V06,T01] ( 3, 6 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.__Canon,Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.ValueTuple`2[System.__Canon,int]]]>
-; V07 tmp4 [V07,T03] ( 4, 3.38) byref -> rax single-def "Inline stloc first use temp"
-; V08 tmp5 [V08,T04] ( 2, 1.57) ref -> rcx "field V02._value (fldOffset=0x0)" P-INDEP
-; V09 tmp6 [V09,T05] ( 2, 1.57) ref -> rdx "field V02._equalityComparer (fldOffset=0x8)" P-INDEP
-; V10 tmp7 [V10,T06] ( 2, 2 ) ref -> rax single-def "field V04._value (fldOffset=0x0)" P-INDEP
-; V11 tmp8 [V11,T07] ( 2, 2 ) ref -> rdx single-def "field V04._equalityComparer (fldOffset=0x8)" P-INDEP
+;* V05 tmp2 [V05,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V06 tmp3 [V06,T00] ( 3, 6 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.__Canon,Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.ValueTuple`2[System.__Canon,int]]]>
+; V07 tmp4 [V07,T03] ( 4, 3.76) byref -> rax single-def "Inline stloc first use temp"
+; V08 tmp5 [V08,T04] ( 2, 1.76) ref -> rcx "field V02._value (fldOffset=0x0)" P-INDEP
+; V09 tmp6 [V09,T05] ( 2, 1.76) ref -> rdx "field V02._equalityComparer (fldOffset=0x8)" P-INDEP
+; V10 tmp7 [V10,T07] ( 2, 0.62) ref -> rax single-def "field V04._value (fldOffset=0x0)" P-INDEP
+; V11 tmp8 [V11,T08] ( 2, 0.62) ref -> rdx single-def "field V04._equalityComparer (fldOffset=0x8)" P-INDEP
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M37695_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push rbp
push rbx
- push rax
- lea rbp, [rsp+0x10]
mov rbx, rdi
; gcrRegs +[rbx]
- ;; size=11 bbWeight=1 PerfScore 3.75
+ ;; size=4 bbWeight=1 PerfScore 1.25
G_M37695_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rsi]
mov rdi, gword ptr [rbx+0x08]
@@ -40,44 +37,37 @@ G_M37695_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
call [System.Collections.Generic.Dictionary`2[System.__Canon,Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.ValueTuple`2[System.__Canon,int]]]:FindValue(System.__Canon):byref:this]
; gcrRegs -[rsi rdi]
; byrRegs +[rax]
+ ; gcr arg pop 0
test rax, rax
- je SHORT G_M37695_IG04
+ je SHORT G_M37695_IG05
;; size=18 bbWeight=1 PerfScore 9.25
-G_M37695_IG03: ; bbWeight=0.69, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
+G_M37695_IG03: ; bbWeight=0.88, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref
; gcrRegs -[rbx]
mov rcx, gword ptr [rax]
; gcrRegs +[rcx]
mov rdx, gword ptr [rax+0x08]
; gcrRegs +[rdx]
- jmp SHORT G_M37695_IG06
- ;; size=9 bbWeight=0.69 PerfScore 4.14
-G_M37695_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rcx rdx] +[rbx]
+ mov rax, rcx
+ ; gcrRegs +[rax]
; byrRegs -[rax]
+ ;; size=10 bbWeight=0.88 PerfScore 3.75
+G_M37695_IG04: ; bbWeight=0.88, epilog, nogc, extend
+ pop rbx
+ ret
+ ;; size=2 bbWeight=0.88 PerfScore 1.32
+G_M37695_IG05: ; bbWeight=0.31, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax rcx rdx] +[rbx]
mov rax, gword ptr [rbx+0x18]
; gcrRegs +[rax]
mov rdx, gword ptr [rbx+0x20]
; gcrRegs +[rdx]
- ;; size=8 bbWeight=1 PerfScore 4.00
-G_M37695_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 8
+ ;; size=8 bbWeight=0.31 PerfScore 1.24
+G_M37695_IG06: ; bbWeight=0.31, epilog, nogc, extend
pop rbx
- pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
-G_M37695_IG06: ; bbWeight=0.88, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax rbx] +[rcx]
- mov rax, rcx
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=0.88 PerfScore 0.22
-G_M37695_IG07: ; bbWeight=0.88, epilog, nogc, extend
- add rsp, 8
- pop rbx
- pop rbp
- ret
- ;; size=7 bbWeight=0.88 PerfScore 1.98
+ ;; size=2 bbWeight=0.31 PerfScore 0.46
-; Total bytes of code 63, prolog size 8, PerfScore 25.60, instruction count 24, allocated bytes for code 63 (MethodHash=05ba6cc0) for method Roslyn.Utilities.MultiDictionary`2[System.__Canon,System.ValueTuple`2[System.__Canon,int]]:get_Item(System.__Canon):Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.ValueTuple`2[System.__Canon,int]]:this (Tier1)
+; Total bytes of code 44, prolog size 1, PerfScore 17.27, instruction count 16, allocated bytes for code 44 (MethodHash=05ba6cc0) for method Roslyn.Utilities.MultiDictionary`2[System.__Canon,System.ValueTuple`2[System.__Canon,int]]:get_Item(System.__Canon):Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.ValueTuple`2[System.__Canon,int]]:this (Tier1)
; ============================================================
Unwind Info:
@@ -85,11 +75,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x03
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
-19 (-30.16%) : 52939.dasm - Roslyn.Utilities.MultiDictionary2[System.__Canon,System.ValueTuple2[System.Canon,int]]:get_Item(System.Canon):Roslyn.Utilities.MultiDictionary2+ValueSet[System.__Canon,System.ValueTuple2[System.__Canon,int]]:this (Tier1)
@@ -3,35 +3,32 @@
; Tier1 code
; optimized code
; optimized using Dynamic PGO
-; rbp based frame
+; rsp based frame
; partially interruptible
; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 107742
; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 5, 5 ) ref -> rbx this class-hnd single-def <Roslyn.Utilities.MultiDictionary`2[System.__Canon,System.ValueTuple`2[System.__Canon,int]]>
+; V00 this [V00,T01] ( 5, 3.63) ref -> rbx this class-hnd single-def <Roslyn.Utilities.MultiDictionary`2[System.__Canon,System.ValueTuple`2[System.__Canon,int]]>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rsi class-hnd single-def <System.__Canon>
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.ValueTuple`2[System.__Canon,int]]>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Return value temp for multireg return" <Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.ValueTuple`2[System.__Canon,int]]>
-;* V05 tmp2 [V05,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V06 tmp3 [V06,T01] ( 3, 6 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.__Canon,Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.ValueTuple`2[System.__Canon,int]]]>
-; V07 tmp4 [V07,T03] ( 4, 3.37) byref -> rax single-def "Inline stloc first use temp"
-; V08 tmp5 [V08,T04] ( 2, 1.57) ref -> rcx "field V02._value (fldOffset=0x0)" P-INDEP
-; V09 tmp6 [V09,T05] ( 2, 1.57) ref -> rdx "field V02._equalityComparer (fldOffset=0x8)" P-INDEP
-; V10 tmp7 [V10,T06] ( 2, 2 ) ref -> rax single-def "field V04._value (fldOffset=0x0)" P-INDEP
-; V11 tmp8 [V11,T07] ( 2, 2 ) ref -> rdx single-def "field V04._equalityComparer (fldOffset=0x8)" P-INDEP
+;* V05 tmp2 [V05,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V06 tmp3 [V06,T00] ( 3, 6 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.__Canon,Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.ValueTuple`2[System.__Canon,int]]]>
+; V07 tmp4 [V07,T03] ( 4, 3.76) byref -> rax single-def "Inline stloc first use temp"
+; V08 tmp5 [V08,T04] ( 2, 1.76) ref -> rcx "field V02._value (fldOffset=0x0)" P-INDEP
+; V09 tmp6 [V09,T05] ( 2, 1.76) ref -> rdx "field V02._equalityComparer (fldOffset=0x8)" P-INDEP
+; V10 tmp7 [V10,T07] ( 2, 0.63) ref -> rax single-def "field V04._value (fldOffset=0x0)" P-INDEP
+; V11 tmp8 [V11,T08] ( 2, 0.63) ref -> rdx single-def "field V04._equalityComparer (fldOffset=0x8)" P-INDEP
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M37695_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push rbp
push rbx
- push rax
- lea rbp, [rsp+0x10]
mov rbx, rdi
; gcrRegs +[rbx]
- ;; size=11 bbWeight=1 PerfScore 3.75
+ ;; size=4 bbWeight=1 PerfScore 1.25
G_M37695_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rsi]
mov rdi, gword ptr [rbx+0x08]
@@ -40,44 +37,37 @@ G_M37695_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
call [System.Collections.Generic.Dictionary`2[System.__Canon,Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.ValueTuple`2[System.__Canon,int]]]:FindValue(System.__Canon):byref:this]
; gcrRegs -[rsi rdi]
; byrRegs +[rax]
+ ; gcr arg pop 0
test rax, rax
- je SHORT G_M37695_IG04
+ je SHORT G_M37695_IG05
;; size=18 bbWeight=1 PerfScore 9.25
-G_M37695_IG03: ; bbWeight=0.69, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
+G_M37695_IG03: ; bbWeight=0.88, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref
; gcrRegs -[rbx]
mov rcx, gword ptr [rax]
; gcrRegs +[rcx]
mov rdx, gword ptr [rax+0x08]
; gcrRegs +[rdx]
- jmp SHORT G_M37695_IG06
- ;; size=9 bbWeight=0.69 PerfScore 4.11
-G_M37695_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rcx rdx] +[rbx]
+ mov rax, rcx
+ ; gcrRegs +[rax]
; byrRegs -[rax]
+ ;; size=10 bbWeight=0.88 PerfScore 3.75
+G_M37695_IG04: ; bbWeight=0.88, epilog, nogc, extend
+ pop rbx
+ ret
+ ;; size=2 bbWeight=0.88 PerfScore 1.32
+G_M37695_IG05: ; bbWeight=0.31, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax rcx rdx] +[rbx]
mov rax, gword ptr [rbx+0x18]
; gcrRegs +[rax]
mov rdx, gword ptr [rbx+0x20]
; gcrRegs +[rdx]
- ;; size=8 bbWeight=1 PerfScore 4.00
-G_M37695_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 8
+ ;; size=8 bbWeight=0.31 PerfScore 1.26
+G_M37695_IG06: ; bbWeight=0.31, epilog, nogc, extend
pop rbx
- pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
-G_M37695_IG06: ; bbWeight=0.88, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax rbx] +[rcx]
- mov rax, rcx
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=0.88 PerfScore 0.22
-G_M37695_IG07: ; bbWeight=0.88, epilog, nogc, extend
- add rsp, 8
- pop rbx
- pop rbp
- ret
- ;; size=7 bbWeight=0.88 PerfScore 1.99
+ ;; size=2 bbWeight=0.31 PerfScore 0.47
-; Total bytes of code 63, prolog size 8, PerfScore 25.57, instruction count 24, allocated bytes for code 63 (MethodHash=05ba6cc0) for method Roslyn.Utilities.MultiDictionary`2[System.__Canon,System.ValueTuple`2[System.__Canon,int]]:get_Item(System.__Canon):Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.ValueTuple`2[System.__Canon,int]]:this (Tier1)
+; Total bytes of code 44, prolog size 1, PerfScore 17.30, instruction count 16, allocated bytes for code 44 (MethodHash=05ba6cc0) for method Roslyn.Utilities.MultiDictionary`2[System.__Canon,System.ValueTuple`2[System.__Canon,int]]:get_Item(System.__Canon):Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.ValueTuple`2[System.__Canon,int]]:this (Tier1)
; ============================================================
Unwind Info:
@@ -85,11 +75,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x03
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
-14 (-18.67%) : 714592.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedGlobalMethodSymbol:get_CallingConvention():int:this (Tier1)
@@ -9,29 +9,25 @@
; 2 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 5, 4.59) ref -> rdi this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedGlobalMethodSymbol>
+; V00 this [V00,T00] ( 6, 4.41) ref -> rdi this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedGlobalMethodSymbol>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 2, 2 ) int -> rax "guarded devirt return temp"
+; V02 tmp1 [V02,T02] ( 2, 0.82) int -> rax "guarded devirt return temp"
;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedInlineArrayAsReadOnlySpanMethod>
;* V04 tmp3 [V04 ] ( 0, 0 ) struct ( 8) zero-ref multireg-ret ld-addr-op single-def "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol]>
-; V05 tmp4 [V05,T03] ( 2, 1.18) ref -> rax "field V04.array (fldOffset=0x0)" P-INDEP
-; V06 cse0 [V06,T01] ( 3, 3 ) long -> rbx "CSE - aggressive"
+; V05 tmp4 [V05,T01] ( 2, 1.18) ref -> rax "field V04.array (fldOffset=0x0)" P-INDEP
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M18583_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
- push rbx
- push rax
- lea rbp, [rsp+0x10]
- ;; size=8 bbWeight=1 PerfScore 3.50
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
G_M18583_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi]
- mov rbx, qword ptr [rdi]
mov rax, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedInlineArrayAsReadOnlySpanMethod
- cmp rbx, rax
+ cmp qword ptr [rdi], rax
jne SHORT G_M18583_IG04
- ;; size=18 bbWeight=1 PerfScore 3.50
+ ;; size=15 bbWeight=1 PerfScore 4.25
G_M18583_IG03: ; bbWeight=0.59, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
call [<unknown method>]
; gcrRegs -[rdi] +[rax]
@@ -39,34 +35,31 @@ G_M18583_IG03: ; bbWeight=0.59, gcrefRegs=0080 {rdi}, byrefRegs=0000 {},
je SHORT G_M18583_IG07
jmp SHORT G_M18583_IG05
;; size=14 bbWeight=0.59 PerfScore 5.31
-G_M18583_IG04: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+G_M18583_IG04: ; bbWeight=0.41, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] +[rdi]
- mov rax, qword ptr [rbx+0xD8]
+ mov rax, qword ptr [rdi]
+ mov rax, qword ptr [rax+0xD8]
call [rax+0x08]Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:get_IsGenericMethod():ubyte:this
; gcrRegs -[rdi]
test eax, eax
je SHORT G_M18583_IG07
- ;; size=14 bbWeight=1 PerfScore 6.25
+ ;; size=17 bbWeight=0.41 PerfScore 3.38
G_M18583_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 16
;; size=5 bbWeight=1 PerfScore 0.25
G_M18583_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 8
- pop rbx
pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=2 bbWeight=1 PerfScore 1.50
G_M18583_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
xor eax, eax
;; size=2 bbWeight=0 PerfScore 0.00
G_M18583_IG08: ; bbWeight=0, epilog, nogc, extend
- add rsp, 8
- pop rbx
pop rbp
ret
- ;; size=7 bbWeight=0 PerfScore 0.00
+ ;; size=2 bbWeight=0 PerfScore 0.00
-; Total bytes of code 75, prolog size 8, PerfScore 21.06, instruction count 26, allocated bytes for code 75 (MethodHash=4388b768) for method Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedGlobalMethodSymbol:get_CallingConvention():int:this (Tier1)
+; Total bytes of code 61, prolog size 4, PerfScore 15.94, instruction count 20, allocated bytes for code 61 (MethodHash=4388b768) for method Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedGlobalMethodSymbol:get_CallingConvention():int:this (Tier1)
; ============================================================
Unwind Info:
@@ -74,11 +67,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x03
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+26 (+35.14%) : 720639.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.Canon,System.Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (Tier1)
@@ -5,25 +5,25 @@
; optimized using Dynamic PGO
; rbp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 12
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 12
; 1 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 4, 3.75) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
+; V00 this [V00,T00] ( 5, 4.50) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rsi class-hnd single-def <Microsoft.CodeAnalysis.MetadataReference>
-; V02 loc0 [V02,T05] ( 3, 2.17) int -> rcx ld-addr-op
+; V02 loc0 [V02,T06] ( 3, 2.25) int -> rcx ld-addr-op
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
;* V04 loc2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-;* V07 tmp2 [V07,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V07 tmp2 [V07,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V08 tmp3 [V08,T01] ( 3, 6 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.MetadataReference,int]>
-; V09 tmp4 [V09,T06] ( 3, 2.67) byref -> rax single-def "Inline stloc first use temp"
+; V09 tmp4 [V09,T05] ( 3, 2.75) byref -> rax single-def "Inline stloc first use temp"
;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V11 tmp6 [V11,T07] ( 3, 2.25) ref -> rax single-def "field V04.array (fldOffset=0x0)" P-INDEP
-;* V12 rat0 [V12,T04] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V13 rat1 [V13,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V14 rat2 [V14,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V11 tmp6 [V11,T07] ( 3, 2.25) ref -> rdx single-def "field V04.array (fldOffset=0x0)" P-INDEP
+; V12 rat0 [V12,T04] ( 2, 3 ) long -> rax "Spilling to split statement for tree"
+;* V13 rat1 [V13,T08] ( 0, 0 ) long -> zero-ref "runtime lookup"
+; V14 rat2 [V14,T03] ( 2, 3 ) long -> rax "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -32,9 +32,10 @@ G_M43979_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbx
push rax
lea rbp, [rsp+0x10]
+ mov qword ptr [rbp-0x10], rdi
mov rbx, rdi
; gcrRegs +[rbx]
- ;; size=11 bbWeight=1 PerfScore 3.75
+ ;; size=15 bbWeight=1 PerfScore 4.75
G_M43979_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rsi]
mov rdi, gword ptr [rbx+0x20]
@@ -44,45 +45,55 @@ G_M43979_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
; gcrRegs -[rsi rdi]
; byrRegs +[rax]
test rax, rax
- je SHORT G_M43979_IG04
+ je SHORT G_M43979_IG05
;; size=18 bbWeight=1 PerfScore 9.25
-G_M43979_IG03: ; bbWeight=0.67, gcrefRegs=0008 {rbx}, byrefRegs=0001 {rax}, byref, isz
+G_M43979_IG03: ; bbWeight=0.75, gcrefRegs=0008 {rbx}, byrefRegs=0001 {rax}, byref, isz
mov ecx, dword ptr [rax]
- jmp SHORT G_M43979_IG06
- ;; size=4 bbWeight=0.67 PerfScore 2.69
-G_M43979_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov rdx, gword ptr [rbx+0x80]
+ ; gcrRegs +[rdx]
+ mov rax, qword ptr [rbx]
; byrRegs -[rax]
+ mov rax, qword ptr [rax+0x38]
+ mov rax, qword ptr [rax]
+ mov rax, qword ptr [rax+0x108]
+ test rax, rax
+ jne SHORT G_M43979_IG07
+ ;; size=31 bbWeight=0.75 PerfScore 9.94
+G_M43979_IG04: ; bbWeight=0.15, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M43979_IG07
+ ;; size=2 bbWeight=0.15 PerfScore 0.30
+G_M43979_IG05: ; bbWeight=0.33, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rdx]
xor rax, rax
; gcrRegs +[rax]
- ;; size=2 bbWeight=1 PerfScore 0.25
-G_M43979_IG05: ; bbWeight=1, epilog, nogc, extend
+ ;; size=2 bbWeight=0.33 PerfScore 0.08
+G_M43979_IG06: ; bbWeight=0.33, epilog, nogc, extend
add rsp, 8
pop rbx
pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
-G_M43979_IG06: ; bbWeight=0.75, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax]
- mov rax, gword ptr [rbx+0x80]
+ ;; size=7 bbWeight=0.33 PerfScore 0.74
+G_M43979_IG07: ; bbWeight=0.75, gcVars=0000000000000000 {}, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rax] +[rdx]
+ cmp ecx, dword ptr [rdx+0x08]
+ jae SHORT G_M43979_IG09
+ mov eax, ecx
+ mov rax, gword ptr [rdx+8*rax+0x10]
; gcrRegs +[rax]
- cmp ecx, dword ptr [rax+0x08]
- jae SHORT G_M43979_IG08
- mov ecx, ecx
- mov rax, gword ptr [rax+8*rcx+0x10]
- ;; size=19 bbWeight=0.75 PerfScore 6.19
-G_M43979_IG07: ; bbWeight=0.75, epilog, nogc, extend
+ ;; size=12 bbWeight=0.75 PerfScore 4.69
+G_M43979_IG08: ; bbWeight=0.75, epilog, nogc, extend
add rsp, 8
pop rbx
pop rbp
ret
;; size=7 bbWeight=0.75 PerfScore 1.69
-G_M43979_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax]
+G_M43979_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax rdx]
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 74, prolog size 8, PerfScore 26.06, instruction count 28, allocated bytes for code 74 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (Tier1)
+; Total bytes of code 100, prolog size 12, PerfScore 31.43, instruction count 35, allocated bytes for code 100 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (Tier1)
; ============================================================
Unwind Info:
+30 (+42.86%) : 92845.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.Canon,System.Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (Tier1)
@@ -5,25 +5,25 @@
; optimized using Dynamic PGO
; rbp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 363840
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 363840
; 1 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 4, 4 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
+; V00 this [V00,T00] ( 5, 5 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T03] ( 3, 3 ) ref -> rsi class-hnd single-def <Microsoft.CodeAnalysis.MetadataReference>
-; V02 loc0 [V02,T05] ( 3, 3 ) int -> rax ld-addr-op
+; V02 loc0 [V02,T05] ( 3, 3 ) int -> rcx ld-addr-op
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
;* V04 loc2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-;* V07 tmp2 [V07,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V07 tmp2 [V07,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V08 tmp3 [V08,T01] ( 3, 6 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.MetadataReference,int]>
; V09 tmp4 [V09,T06] ( 3, 3 ) byref -> rax single-def "Inline stloc first use temp"
;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V11 tmp6 [V11,T07] ( 3, 3 ) ref -> rcx single-def "field V04.array (fldOffset=0x0)" P-INDEP
-;* V12 rat0 [V12,T04] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V13 rat1 [V13,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V14 rat2 [V14,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V11 tmp6 [V11,T07] ( 3, 3 ) ref -> rdx single-def "field V04.array (fldOffset=0x0)" P-INDEP
+; V12 rat0 [V12,T04] ( 2, 4 ) long -> rax "Spilling to split statement for tree"
+;* V13 rat1 [V13,T08] ( 0, 0 ) long -> zero-ref "runtime lookup"
+; V14 rat2 [V14,T02] ( 2, 4 ) long -> rax "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -32,9 +32,10 @@ G_M43979_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbx
push rax
lea rbp, [rsp+0x10]
+ mov qword ptr [rbp-0x10], rdi
mov rbx, rdi
; gcrRegs +[rbx]
- ;; size=11 bbWeight=1 PerfScore 3.75
+ ;; size=15 bbWeight=1 PerfScore 4.75
G_M43979_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rsi]
mov rdi, gword ptr [rbx+0x20]
@@ -45,39 +46,52 @@ G_M43979_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
; byrRegs +[rax]
test rax, rax
je SHORT G_M43979_IG04
- mov eax, dword ptr [rax]
+ mov ecx, dword ptr [rax]
+ mov rdx, gword ptr [rbx+0x80]
+ ; gcrRegs +[rdx]
+ mov rax, qword ptr [rbx]
; byrRegs -[rax]
- mov rcx, gword ptr [rbx+0x80]
- ; gcrRegs +[rcx]
- cmp eax, dword ptr [rcx+0x08]
- jae SHORT G_M43979_IG06
- mov rax, gword ptr [rcx+8*rax+0x10]
- ; gcrRegs +[rax]
- ;; size=37 bbWeight=1 PerfScore 19.25
-G_M43979_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 8
- pop rbx
- pop rbp
- ret
- ;; size=7 bbWeight=1 PerfScore 2.25
-G_M43979_IG04: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax rcx]
+ mov rax, qword ptr [rax+0x38]
+ mov rax, qword ptr [rax]
+ mov rax, qword ptr [rax+0x108]
+ test rax, rax
+ jne SHORT G_M43979_IG06
+ ;; size=49 bbWeight=1 PerfScore 22.50
+G_M43979_IG03: ; bbWeight=0.20, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M43979_IG06
+ ;; size=2 bbWeight=0.20 PerfScore 0.40
+G_M43979_IG04: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rdx]
xor rax, rax
; gcrRegs +[rax]
- ;; size=2 bbWeight=1 PerfScore 0.25
-G_M43979_IG05: ; bbWeight=1, epilog, nogc, extend
+ ;; size=2 bbWeight=0.00 PerfScore 0.00
+G_M43979_IG05: ; bbWeight=0.00, epilog, nogc, extend
+ add rsp, 8
+ pop rbx
+ pop rbp
+ ret
+ ;; size=7 bbWeight=0.00 PerfScore 0.00
+G_M43979_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rax] +[rdx]
+ cmp ecx, dword ptr [rdx+0x08]
+ jae SHORT G_M43979_IG08
+ mov eax, ecx
+ mov rax, gword ptr [rdx+8*rax+0x10]
+ ; gcrRegs +[rax]
+ ;; size=12 bbWeight=1 PerfScore 6.25
+G_M43979_IG07: ; bbWeight=1, epilog, nogc, extend
add rsp, 8
pop rbx
pop rbp
ret
;; size=7 bbWeight=1 PerfScore 2.25
-G_M43979_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax]
+G_M43979_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax rdx]
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 70, prolog size 8, PerfScore 27.75, instruction count 26, allocated bytes for code 70 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (Tier1)
+; Total bytes of code 100, prolog size 12, PerfScore 36.15, instruction count 35, allocated bytes for code 100 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (Tier1)
; ============================================================
Unwind Info:
+30 (+42.86%) : 63287.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.Canon,System.Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (Tier1)
@@ -5,25 +5,25 @@
; optimized using Dynamic PGO
; rbp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 245760
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 245760
; 1 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 4, 4 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
+; V00 this [V00,T00] ( 5, 5 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T03] ( 3, 3 ) ref -> rsi class-hnd single-def <Microsoft.CodeAnalysis.MetadataReference>
-; V02 loc0 [V02,T05] ( 3, 3 ) int -> rax ld-addr-op
+; V02 loc0 [V02,T05] ( 3, 3 ) int -> rcx ld-addr-op
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
;* V04 loc2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-;* V07 tmp2 [V07,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V07 tmp2 [V07,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V08 tmp3 [V08,T01] ( 3, 6 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.MetadataReference,int]>
; V09 tmp4 [V09,T06] ( 3, 3 ) byref -> rax single-def "Inline stloc first use temp"
;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V11 tmp6 [V11,T07] ( 3, 3 ) ref -> rcx single-def "field V04.array (fldOffset=0x0)" P-INDEP
-;* V12 rat0 [V12,T04] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V13 rat1 [V13,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V14 rat2 [V14,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V11 tmp6 [V11,T07] ( 3, 3 ) ref -> rdx single-def "field V04.array (fldOffset=0x0)" P-INDEP
+; V12 rat0 [V12,T04] ( 2, 4 ) long -> rax "Spilling to split statement for tree"
+;* V13 rat1 [V13,T08] ( 0, 0 ) long -> zero-ref "runtime lookup"
+; V14 rat2 [V14,T02] ( 2, 4 ) long -> rax "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -32,9 +32,10 @@ G_M43979_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbx
push rax
lea rbp, [rsp+0x10]
+ mov qword ptr [rbp-0x10], rdi
mov rbx, rdi
; gcrRegs +[rbx]
- ;; size=11 bbWeight=1 PerfScore 3.75
+ ;; size=15 bbWeight=1 PerfScore 4.75
G_M43979_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rsi]
mov rdi, gword ptr [rbx+0x20]
@@ -45,39 +46,52 @@ G_M43979_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
; byrRegs +[rax]
test rax, rax
je SHORT G_M43979_IG04
- mov eax, dword ptr [rax]
+ mov ecx, dword ptr [rax]
+ mov rdx, gword ptr [rbx+0x80]
+ ; gcrRegs +[rdx]
+ mov rax, qword ptr [rbx]
; byrRegs -[rax]
- mov rcx, gword ptr [rbx+0x80]
- ; gcrRegs +[rcx]
- cmp eax, dword ptr [rcx+0x08]
- jae SHORT G_M43979_IG06
- mov rax, gword ptr [rcx+8*rax+0x10]
- ; gcrRegs +[rax]
- ;; size=37 bbWeight=1 PerfScore 19.25
-G_M43979_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 8
- pop rbx
- pop rbp
- ret
- ;; size=7 bbWeight=1 PerfScore 2.25
-G_M43979_IG04: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax rcx]
+ mov rax, qword ptr [rax+0x38]
+ mov rax, qword ptr [rax]
+ mov rax, qword ptr [rax+0x108]
+ test rax, rax
+ jne SHORT G_M43979_IG06
+ ;; size=49 bbWeight=1 PerfScore 22.50
+G_M43979_IG03: ; bbWeight=0.20, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M43979_IG06
+ ;; size=2 bbWeight=0.20 PerfScore 0.40
+G_M43979_IG04: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rdx]
xor rax, rax
; gcrRegs +[rax]
- ;; size=2 bbWeight=1 PerfScore 0.25
-G_M43979_IG05: ; bbWeight=1, epilog, nogc, extend
+ ;; size=2 bbWeight=0.00 PerfScore 0.00
+G_M43979_IG05: ; bbWeight=0.00, epilog, nogc, extend
+ add rsp, 8
+ pop rbx
+ pop rbp
+ ret
+ ;; size=7 bbWeight=0.00 PerfScore 0.00
+G_M43979_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rax] +[rdx]
+ cmp ecx, dword ptr [rdx+0x08]
+ jae SHORT G_M43979_IG08
+ mov eax, ecx
+ mov rax, gword ptr [rdx+8*rax+0x10]
+ ; gcrRegs +[rax]
+ ;; size=12 bbWeight=1 PerfScore 6.25
+G_M43979_IG07: ; bbWeight=1, epilog, nogc, extend
add rsp, 8
pop rbx
pop rbp
ret
;; size=7 bbWeight=1 PerfScore 2.25
-G_M43979_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax]
+G_M43979_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax rdx]
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 70, prolog size 8, PerfScore 27.75, instruction count 26, allocated bytes for code 70 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (Tier1)
+; Total bytes of code 100, prolog size 12, PerfScore 36.15, instruction count 35, allocated bytes for code 100 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (Tier1)
; ============================================================
Unwind Info:
librariestestsnotieredcompilation.run.linux.x64.Release.mch
-34 (-8.00%) : 7128.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
@@ -57,11 +57,18 @@ G_M48701_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
mov gword ptr [rbp-0x28], rax
; GC ptr vars +{V02}
;; size=23 bbWeight=0.50 PerfScore 3.12
-G_M48701_IG04: ; bbWeight=0.50, gcVars=0000000000000010 {V02}, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M48701_IG04: ; bbWeight=0.50, gcVars=0000000000000010 {V02}, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, gcvars, byref, isz
cmp gword ptr [rbp-0x18], 0
+ je SHORT G_M48701_IG06
+ ;; size=7 bbWeight=0.50 PerfScore 1.50
+G_M48701_IG05: ; bbWeight=0.17, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
+ mov rdi, gword ptr [rbp-0x18]
+ ; gcrRegs +[rdi]
+ cmp dword ptr [rdi+0x20], 0
jne G_M48701_IG15
- ;; size=11 bbWeight=0.50 PerfScore 1.50
-G_M48701_IG05: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
+ ;; size=14 bbWeight=0.17 PerfScore 0.87
+G_M48701_IG06: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdi]
mov rdi, rbx
; gcrRegs +[rdi]
mov rsi, rax
@@ -72,9 +79,16 @@ G_M48701_IG05: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0000
; gcrRegs -[rax rdx rsi rdi]
; gcr arg pop 0
cmp gword ptr [rbp-0x18], 0
- jne G_M48701_IG14
- ;; size=27 bbWeight=0.50 PerfScore 3.75
-G_M48701_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ je SHORT G_M48701_IG08
+ ;; size=23 bbWeight=0.50 PerfScore 3.75
+G_M48701_IG07: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov rdi, gword ptr [rbp-0x18]
+ ; gcrRegs +[rdi]
+ cmp dword ptr [rdi+0x20], 0
+ jne G_M48701_IG15
+ ;; size=14 bbWeight=0.17 PerfScore 0.87
+G_M48701_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdi]
mov rdi, rbx
; gcrRegs +[rdi]
mov rsi, gword ptr [rbp-0x28]
@@ -83,9 +97,16 @@ G_M48701_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcrRegs -[rsi rdi]
; gcr arg pop 0
cmp gword ptr [rbp-0x18], 0
- jne G_M48701_IG13
- ;; size=24 bbWeight=0.50 PerfScore 3.62
-G_M48701_IG07: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M48701_IG10
+ ;; size=20 bbWeight=0.50 PerfScore 3.62
+G_M48701_IG09: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov rdi, gword ptr [rbp-0x18]
+ ; gcrRegs +[rdi]
+ cmp dword ptr [rdi+0x20], 0
+ jne SHORT G_M48701_IG15
+ ;; size=10 bbWeight=0.17 PerfScore 0.87
+G_M48701_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdi]
mov rdi, rbx
; gcrRegs +[rdi]
mov rsi, gword ptr [rbp-0x28]
@@ -101,11 +122,18 @@ G_M48701_IG07: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcrRegs -[rdi]
; gcr arg pop 0
cmp eax, 7
- jne SHORT G_M48701_IG09
+ jne SHORT G_M48701_IG13
cmp gword ptr [rbp-0x18], 0
- jne SHORT G_M48701_IG12
+ je SHORT G_M48701_IG12
;; size=41 bbWeight=0.50 PerfScore 7.88
-G_M48701_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M48701_IG11: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov rdi, gword ptr [rbp-0x18]
+ ; gcrRegs +[rdi]
+ cmp dword ptr [rdi+0x20], 0
+ jne SHORT G_M48701_IG15
+ ;; size=10 bbWeight=0.17 PerfScore 0.87
+G_M48701_IG12: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rdi]
mov rdi, rbx
; gcrRegs +[rdi]
mov rsi, gword ptr [rbp-0x28]
@@ -114,7 +142,7 @@ G_M48701_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcrRegs -[rsi rdi]
; gcr arg pop 0
;; size=13 bbWeight=0.50 PerfScore 2.12
-G_M48701_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M48701_IG13: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
lea r15, bword ptr [rbx+0x70]
; byrRegs +[r15]
mov rdi, rbx
@@ -129,17 +157,34 @@ G_M48701_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
mov rsi, rax
; gcrRegs +[rsi]
test r15, r15
- je G_M48701_IG17
+ jne SHORT G_M48701_IG16
+ ;; size=29 bbWeight=0.50 PerfScore 3.62
+G_M48701_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rbx rsi]
+ ; byrRegs -[r15]
+ call [System.ThrowHelper:ThrowNullReferenceException()]
+ ; gcr arg pop 0
+ int3
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M48701_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ lea rdi, [rbp-0x18]
+ call [System.Threading.CancellationToken:ThrowOperationCanceledException():this]
+ ; gcr arg pop 0
+ int3
+ ;; size=11 bbWeight=0 PerfScore 0.00
+G_M48701_IG16: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=8000 {r15}, byref, isz
+ ; gcrRegs +[rbx rsi]
+ ; byrRegs +[r15]
mov rdi, r15
; byrRegs +[rdi]
xor rdx, rdx
; gcrRegs +[rdx]
call <unknown method>
- ; gcrRegs -[rdx rsi]
+ ; gcrRegs -[rdx rsi] +[rax]
; byrRegs -[rdi r15]
; gcr arg pop 0
test rax, rax
- jne G_M48701_IG18
+ jne SHORT G_M48701_IG18
mov rdi, rbx
; gcrRegs +[rdi]
mov rsi, gword ptr [rbp-0x28]
@@ -152,8 +197,8 @@ G_M48701_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcr arg pop 0
lea rdi, bword ptr [rbx+0x84]
; byrRegs +[rdi]
- ;; size=79 bbWeight=0.50 PerfScore 9.38
-G_M48701_IG10: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
+ ;; size=42 bbWeight=0.50 PerfScore 5.75
+G_M48701_IG17: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
mov eax, dword ptr [rdi]
mov dword ptr [rbp-0x1C], eax
mov ecx, eax
@@ -163,56 +208,10 @@ G_M48701_IG10: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi},
lock
cmpxchg dword ptr [rdi], ecx
cmp eax, dword ptr [rbp-0x1C]
- jne SHORT G_M48701_IG10
+ jne SHORT G_M48701_IG17
;; size=26 bbWeight=4 PerfScore 103.00
-G_M48701_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[rdi]
- jmp SHORT G_M48701_IG18
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M48701_IG12: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rdi, gword ptr [rbp-0x18]
- ; gcrRegs +[rdi]
- cmp dword ptr [rdi+0x20], 0
- je G_M48701_IG08
- jmp SHORT G_M48701_IG16
- ;; size=16 bbWeight=0.17 PerfScore 1.21
-G_M48701_IG13: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdi]
- mov rdi, gword ptr [rbp-0x18]
- ; gcrRegs +[rdi]
- cmp dword ptr [rdi+0x20], 0
- jne SHORT G_M48701_IG16
- jmp G_M48701_IG07
- ;; size=15 bbWeight=0.17 PerfScore 1.21
-G_M48701_IG14: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdi]
- mov rdi, gword ptr [rbp-0x18]
- ; gcrRegs +[rdi]
- cmp dword ptr [rdi+0x20], 0
- jne SHORT G_M48701_IG16
- jmp G_M48701_IG06
- ;; size=15 bbWeight=0.17 PerfScore 1.21
-G_M48701_IG15: ; bbWeight=0.17, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi] +[rax]
- mov rdi, gword ptr [rbp-0x18]
- ; gcrRegs +[rdi]
- cmp dword ptr [rdi+0x20], 0
- je G_M48701_IG05
- ;; size=14 bbWeight=0.17 PerfScore 0.87
-G_M48701_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbx rdi]
- lea rdi, [rbp-0x18]
- call [System.Threading.CancellationToken:ThrowOperationCanceledException():this]
- ; gcr arg pop 0
- int3
- ;; size=11 bbWeight=0 PerfScore 0.00
-G_M48701_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- call [System.ThrowHelper:ThrowNullReferenceException()]
- ; gcr arg pop 0
- int3
- ;; size=7 bbWeight=0 PerfScore 0.00
G_M48701_IG18: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rbx]
+ ; byrRegs -[rdi]
mov rdi, gword ptr [rbp-0x28]
; gcrRegs +[rdi]
cmp dword ptr [rdi], edi
@@ -261,7 +260,7 @@ G_M48701_IG23: ; bbWeight=0, funclet epilog, nogc, extend
ret
;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 425, prolog size 24, PerfScore 158.12, instruction count 116, allocated bytes for code 425 (MethodHash=c61241c2) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
+; Total bytes of code 391, prolog size 24, PerfScore 156.09, instruction count 112, allocated bytes for code 391 (MethodHash=c61241c2) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
; ============================================================
Unwind Info:
-26 (-7.16%) : 57630.dasm - Microsoft.Extensions.Primitives.StringSegmentTest:StringSegmentCompareGreater(Microsoft.Extensions.Primitives.StringSegment,Microsoft.Extensions.Primitives.StringSegmentComparer):this (FullOpts)
@@ -9,31 +9,31 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Microsoft.Extensions.Primitives.StringSegmentTest>
-; V01 arg1 [V01,T01] ( 4, 4 ) struct (16) [rbp-0x38] do-not-enreg[SA] multireg-arg single-def <Microsoft.Extensions.Primitives.StringSegment>
+; V01 arg1 [V01,T00] ( 6, 6 ) struct (16) [rbp-0x28] do-not-enreg[SA] multireg-arg single-def <Microsoft.Extensions.Primitives.StringSegment>
; V02 arg2 [V02,T07] ( 3, 3 ) ref -> r8 class-hnd single-def <Microsoft.Extensions.Primitives.StringSegmentComparer>
-; V03 loc0 [V03 ] ( 7, 7 ) struct (16) [rbp-0x48] do-not-enreg[SFA] multireg-arg must-init ld-addr-op <Microsoft.Extensions.Primitives.StringSegment>
-; V04 loc1 [V04,T13] ( 2, 2 ) int -> r14 single-def
-; V05 loc2 [V05 ] ( 10, 8.00) struct (40) [rbp-0x70] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
+; V03 loc0 [V03 ] ( 7, 7 ) struct (16) [rbp-0x38] do-not-enreg[SFA] multireg-arg must-init ld-addr-op <Microsoft.Extensions.Primitives.StringSegment>
+; V04 loc1 [V04,T11] ( 2, 2 ) int -> rbx single-def
+; V05 loc2 [V05 ] ( 10, 8.00) struct (40) [rbp-0x60] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <Microsoft.Extensions.Primitives.StringSegment>
;* V08 tmp2 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V09 tmp3 [V09,T00] ( 4, 8 ) int -> rdi "Inlining Arg"
+; V09 tmp3 [V09,T01] ( 4, 8 ) int -> rdi "Inlining Arg"
;* V10 tmp4 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V11 tmp5 [V11,T02] ( 3, 6 ) int -> r13 "Inlining Arg"
-; V12 tmp6 [V12,T12] ( 2, 3.00) byref -> r12 single-def "Inlining Arg"
+; V11 tmp5 [V11,T02] ( 3, 6 ) int -> r15 "Inlining Arg"
+; V12 tmp6 [V12,T10] ( 2, 3.00) byref -> r14 single-def "Inlining Arg"
;* V13 tmp7 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp8 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V15 tmp9 [V15,T16] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V15 tmp9 [V15,T15] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V16 tmp10 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V17 tmp11 [V17 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V18 tmp12 [V18,T15] ( 2, 1.99) byref -> rdi single-def "Inlining Arg"
+; V18 tmp12 [V18,T13] ( 2, 1.99) byref -> rdi single-def "Inlining Arg"
;* V19 tmp13 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V20 tmp14 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
; V21 tmp15 [V21,T08] ( 2, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
;* V22 tmp16 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V23 tmp17 [V23,T04] ( 5, 5 ) ref -> [rbp-0x48] do-not-enreg[] single-def "field V03.<Buffer>k__BackingField (fldOffset=0x0)" P-DEP
-; V24 tmp18 [V24,T05] ( 5, 5 ) int -> [rbp-0x40] do-not-enreg[] single-def "field V03.<Offset>k__BackingField (fldOffset=0x8)" P-DEP
-; V25 tmp19 [V25,T06] ( 5, 5 ) int -> [rbp-0x3C] do-not-enreg[] single-def "field V03.<Length>k__BackingField (fldOffset=0xc)" P-DEP
+; V23 tmp17 [V23,T04] ( 5, 5 ) ref -> [rbp-0x38] do-not-enreg[] single-def "field V03.<Buffer>k__BackingField (fldOffset=0x0)" P-DEP
+; V24 tmp18 [V24,T05] ( 5, 5 ) int -> [rbp-0x30] do-not-enreg[] single-def "field V03.<Offset>k__BackingField (fldOffset=0x8)" P-DEP
+; V25 tmp19 [V25,T06] ( 5, 5 ) int -> [rbp-0x2C] do-not-enreg[] single-def "field V03.<Length>k__BackingField (fldOffset=0xc)" P-DEP
;* V26 tmp20 [V26 ] ( 0, 0 ) ref -> zero-ref single-def "field V07.<Buffer>k__BackingField (fldOffset=0x0)" P-INDEP
;* V27 tmp21 [V27 ] ( 0, 0 ) int -> zero-ref single-def "field V07.<Offset>k__BackingField (fldOffset=0x8)" P-INDEP
;* V28 tmp22 [V28 ] ( 0, 0 ) int -> zero-ref single-def "field V07.<Length>k__BackingField (fldOffset=0xc)" P-INDEP
@@ -43,12 +43,11 @@
;* V32 tmp26 [V32 ] ( 0, 0 ) int -> zero-ref single-def "field V10._length (fldOffset=0x8)" P-INDEP
;* V33 tmp27 [V33 ] ( 0, 0 ) byref -> zero-ref single-def "field V16._reference (fldOffset=0x0)" P-INDEP
;* V34 tmp28 [V34 ] ( 0, 0 ) int -> zero-ref single-def "field V16._length (fldOffset=0x8)" P-INDEP
-;* V35 tmp29 [V35,T17] ( 0, 0 ) ubyte -> zero-ref single-def "field V20.hasValue (fldOffset=0x0)" P-INDEP
-; V36 tmp30 [V36,T14] ( 2, 2 ) ubyte -> rdi single-def "field V20.value (fldOffset=0x1)" P-INDEP
-; V37 tmp31 [V37,T03] ( 3, 6 ) struct ( 8) [rbp-0x78] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
-; V38 cse0 [V38,T10] ( 3, 3 ) int -> r13 "CSE - aggressive"
-; V39 cse1 [V39,T09] ( 3, 3 ) ref -> rbx "CSE - aggressive"
-; V40 cse2 [V40,T11] ( 3, 3 ) long -> r15 "CSE - aggressive"
+;* V35 tmp29 [V35,T16] ( 0, 0 ) ubyte -> zero-ref single-def "field V20.hasValue (fldOffset=0x0)" P-INDEP
+; V36 tmp30 [V36,T12] ( 2, 2 ) ubyte -> rdi single-def "field V20.value (fldOffset=0x1)" P-INDEP
+; V37 tmp31 [V37,T03] ( 3, 6 ) struct ( 8) [rbp-0x68] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
+; V38 cse0 [V38,T09] ( 3, 3 ) int -> r15 "CSE - moderate"
+; V39 cse1 [V39,T14] ( 3, 1.50) ref -> rsi "CSE - moderate"
;
; Lcl frame size = 88
@@ -56,135 +55,128 @@ G_M53573_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbp
push r15
push r14
- push r13
- push r12
push rbx
sub rsp, 88
vzeroupper
- lea rbp, [rsp+0x80]
+ lea rbp, [rsp+0x70]
vxorps xmm8, xmm8, xmm8
- vmovdqu ymmword ptr [rbp-0x70], ymm8
- vmovdqa xmmword ptr [rbp-0x50], xmm8
+ vmovdqu ymmword ptr [rbp-0x60], ymm8
+ vmovdqa xmmword ptr [rbp-0x40], xmm8
xor eax, eax
- mov qword ptr [rbp-0x40], rax
- mov gword ptr [rbp-0x38], rsi
- mov qword ptr [rbp-0x30], rdx
+ mov qword ptr [rbp-0x30], rax
+ mov gword ptr [rbp-0x28], rsi
+ mov qword ptr [rbp-0x20], rdx
mov r8, rcx
; gcrRegs +[r8]
- ;; size=57 bbWeight=1 PerfScore 15.58
+ ;; size=50 bbWeight=1 PerfScore 13.58
G_M53573_IG02: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E
; gcrRegs +[rdi]
- mov gword ptr [rbp-0x48], rdi
- mov dword ptr [rbp-0x40], 1
- mov dword ptr [rbp-0x3C], 4
- mov rdi, gword ptr [rbp-0x48]
- mov rsi, qword ptr [rbp-0x40]
- mov rbx, gword ptr [rbp-0x38]
- ; gcrRegs +[rbx]
- mov rdx, rbx
+ mov gword ptr [rbp-0x38], rdi
+ mov dword ptr [rbp-0x30], 1
+ mov dword ptr [rbp-0x2C], 4
+ mov rdi, gword ptr [rbp-0x38]
+ mov rsi, qword ptr [rbp-0x30]
+ mov rdx, gword ptr [rbp-0x28]
; gcrRegs +[rdx]
- mov r15, qword ptr [rbp-0x30]
- mov rcx, r15
+ mov rcx, qword ptr [rbp-0x20]
mov r8d, dword ptr [r8+0x10]
; gcrRegs -[r8]
call [<unknown method>]
; gcrRegs -[rdx rdi]
- mov r14d, eax
- lea rdi, [rbp-0x70]
+ mov ebx, eax
+ lea rdi, [rbp-0x60]
mov esi, 24
mov edx, 2
call [<unknown method>]
- mov rsi, gword ptr [rbp-0x48]
+ mov rsi, gword ptr [rbp-0x38]
; gcrRegs +[rsi]
- mov rdx, qword ptr [rbp-0x40]
- lea rdi, [rbp-0x70]
+ mov rdx, qword ptr [rbp-0x30]
+ lea rdi, [rbp-0x60]
call [<unknown method>]
; gcrRegs -[rsi]
- mov edi, dword ptr [rbp-0x60]
- mov r13d, dword ptr [rbp-0x50]
- cmp edi, r13d
+ mov edi, dword ptr [rbp-0x50]
+ mov r15d, dword ptr [rbp-0x40]
+ cmp edi, r15d
ja G_M53573_IG09
- mov rsi, bword ptr [rbp-0x58]
+ mov rsi, bword ptr [rbp-0x48]
; byrRegs +[rsi]
mov eax, edi
- lea r12, bword ptr [rsi+2*rax]
- ; byrRegs +[r12]
- sub r13d, edi
+ lea r14, bword ptr [rsi+2*rax]
+ ; byrRegs +[r14]
+ sub r15d, edi
jns SHORT G_M53573_IG04
- ;; size=132 bbWeight=1 PerfScore 28.75
-G_M53573_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=1000 {r12}, byref
+ ;; size=125 bbWeight=1 PerfScore 28.25
+G_M53573_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
; byrRegs -[rsi]
- mov rdi, 0xD1FFAB1E
- ; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
+ mov rdi, rsi
+ ; gcrRegs +[rdi]
call [<unknown method>]
; gcrRegs -[rsi rdi]
- ;; size=26 bbWeight=0.50 PerfScore 1.75
-G_M53573_IG04: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=1000 {r12}, byref, isz
- cmp r13d, 24
+ ;; size=19 bbWeight=0.50 PerfScore 1.75
+G_M53573_IG04: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+ cmp r15d, 24
jb SHORT G_M53573_IG06
;; size=6 bbWeight=1.00 PerfScore 1.25
-G_M53573_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=1000 {r12}, byref, isz
+G_M53573_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
mov rdi, 0xD1FFAB1E
; byrRegs +[rdi]
vmovdqu ymm0, ymmword ptr [rdi]
vmovdqu xmm1, xmmword ptr [rdi+0x20]
- vmovdqu ymmword ptr [r12], ymm0
- vmovdqu xmmword ptr [r12+0x20], xmm1
- mov edi, dword ptr [rbp-0x60]
+ vmovdqu ymmword ptr [r14], ymm0
+ vmovdqu xmmword ptr [r14+0x20], xmm1
+ mov edi, dword ptr [rbp-0x50]
; byrRegs -[rdi]
add edi, 24
- mov dword ptr [rbp-0x60], edi
+ mov dword ptr [rbp-0x50], edi
jmp SHORT G_M53573_IG07
- ;; size=43 bbWeight=0.50 PerfScore 8.72
-G_M53573_IG06: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; byrRegs -[r12]
- lea rdi, [rbp-0x70]
+ ;; size=41 bbWeight=0.50 PerfScore 8.72
+G_M53573_IG06: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[r14]
+ lea rdi, [rbp-0x60]
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
call [<unknown method>]
; gcrRegs -[rsi]
;; size=20 bbWeight=0.00 PerfScore 0.01
-G_M53573_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- mov rsi, rbx
+G_M53573_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov rsi, gword ptr [rbp-0x28]
; gcrRegs +[rsi]
- mov rdx, r15
- lea rdi, [rbp-0x70]
+ mov rdx, qword ptr [rbp-0x20]
+ lea rdi, [rbp-0x60]
call [<unknown method>]
- ; gcrRegs -[rbx rsi]
- lea rdi, [rbp-0x70]
+ ; gcrRegs -[rsi]
+ lea rdi, [rbp-0x60]
call [<unknown method>]
; gcrRegs +[rax]
mov rsi, rax
; gcrRegs +[rsi]
xor edi, edi
- test r14d, r14d
+ test ebx, ebx
setg dil
- mov byte ptr [rbp-0x78], 1
- mov byte ptr [rbp-0x77], dil
- movzx rdi, word ptr [rbp-0x78]
+ mov byte ptr [rbp-0x68], 1
+ mov byte ptr [rbp-0x67], dil
+ movzx rdi, word ptr [rbp-0x68]
call [Xunit.Assert:True(System.Nullable`1[ubyte],System.String)]
; gcrRegs -[rax rsi]
nop
- ;; size=57 bbWeight=1 PerfScore 15.50
+ ;; size=58 bbWeight=1 PerfScore 17.00
G_M53573_IG08: ; bbWeight=1, epilog, nogc, extend
add rsp, 88
pop rbx
- pop r12
- pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=1 PerfScore 4.25
+ ;; size=11 bbWeight=1 PerfScore 3.25
G_M53573_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 363, prolog size 46, PerfScore 75.81, instruction count 89, allocated bytes for code 363 (MethodHash=30f02eba) for method Microsoft.Extensions.Primitives.StringSegmentTest:StringSegment_Compare_Greater(Microsoft.Extensions.Primitives.StringSegment,Microsoft.Extensions.Primitives.StringSegmentComparer):this (FullOpts)
+; Total bytes of code 337, prolog size 39, PerfScore 73.81, instruction count 83, allocated bytes for code 337 (MethodHash=30f02eba) for method Microsoft.Extensions.Primitives.StringSegmentTest:StringSegment_Compare_Greater(Microsoft.Extensions.Primitives.StringSegment,Microsoft.Extensions.Primitives.StringSegmentComparer):this (FullOpts)
...
-21 (-5.24%) : 226294.dasm - System.Security.Cryptography.X509Certificates.Tests.X500DistinguishedNameEncodingTests:InvalidInput(System.String,System.String) (FullOpts)
@@ -17,11 +17,11 @@
; V06 tmp2 [V06,T00] ( 4, 8 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Func`1[System.Object]>
;* V07 tmp3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "non-inline candidate call" <<unknown class>>
; V08 tmp4 [V08,T06] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1"
-; V09 tmp5 [V09,T11] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable"
+; V09 tmp5 [V09,T10] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable"
; V10 tmp6 [V10,T01] ( 6, 6.75) ref -> r15 class-hnd "spilling QMark2" <<unknown class>>
;* V11 tmp7 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
; V12 tmp8 [V12,T04] ( 5, 5 ) ref -> rax single-def "spilling varStr"
-;* V13 tmp9 [V13,T10] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+;* V13 tmp9 [V13,T11] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
; V14 tmp10 [V14,T07] ( 5, 4 ) ref -> r15 class-hnd exact single-def "Inlining Arg" <System.String>
; V15 tmp11 [V15,T12] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V16 tmp12 [V16,T08] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
@@ -43,7 +43,7 @@ G_M4262_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rbx, rsi
; gcrRegs +[rbx]
;; size=18 bbWeight=1 PerfScore 6.00
-G_M4262_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M4262_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E ; System.Security.Cryptography.X509Certificates.Tests.X500DistinguishedNameEncodingTests+<>c__DisplayClass6_0
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -85,8 +85,8 @@ G_M4262_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
mov r15, rax
; gcrRegs +[r15]
test r15, r15
- jne G_M4262_IG09
- ;; size=124 bbWeight=1 PerfScore 16.25
+ jne SHORT G_M4262_IG06
+ ;; size=120 bbWeight=1 PerfScore 16.25
G_M4262_IG03: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
call [<unknown method>]
@@ -99,17 +99,49 @@ G_M4262_IG03: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
call [rax+0x38]<unknown method>
; gcrRegs -[rdi] +[rax]
test rax, rax
- je SHORT G_M4262_IG07
+ je SHORT G_M4262_IG08
;; size=24 bbWeight=1 PerfScore 11.50
G_M4262_IG04: ; bbWeight=0.25, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rax+0x08], 5
- jne SHORT G_M4262_IG07
+ jne SHORT G_M4262_IG08
;; size=6 bbWeight=0.25 PerfScore 1.00
G_M4262_IG05: ; bbWeight=0.12, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M4262_IG08
- ;; size=2 bbWeight=0.12 PerfScore 0.25
-G_M4262_IG06: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ mov rdi, 0xD1FFAB1E
+ xor rdi, qword ptr [rax+0x0C]
+ mov eax, dword ptr [rax+0x12]
; gcrRegs -[rax]
+ xor eax, 0xD1FFAB1E
+ or rdi, rax
+ jne SHORT G_M4262_IG08
+ jmp SHORT G_M4262_IG09
+ ;; size=29 bbWeight=0.12 PerfScore 1.09
+G_M4262_IG06: ; bbWeight=0.25, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rax]
+ mov rdi, 0xD1FFAB1E ; <unknown class>
+ cmp qword ptr [r15], rdi
+ je SHORT G_M4262_IG03
+ ;; size=15 bbWeight=0.25 PerfScore 1.06
+G_M4262_IG07: ; bbWeight=0.12, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r15]
+ mov rsi, rax
+ ; gcrRegs +[rsi]
+ call CORINFO_HELP_CHKCASTCLASS_SPECIAL
+ ; gcrRegs -[rsi]
+ mov r15, rax
+ ; gcrRegs +[r15]
+ jmp SHORT G_M4262_IG03
+ ;; size=13 bbWeight=0.12 PerfScore 0.44
+G_M4262_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[rax rbx r15]
+ add rsp, 8
+ pop rbx
+ pop r14
+ pop r15
+ pop rbp
+ ret
+ ;; size=11 bbWeight=1 PerfScore 3.25
+G_M4262_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[rbx r15]
mov rdi, r15
; gcrRegs +[rdi]
mov rax, qword ptr [r15]
@@ -121,7 +153,7 @@ G_M4262_IG06: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {
test rbx, rbx
je SHORT G_M4262_IG11
test r15, r15
- je G_M4262_IG12
+ je SHORT G_M4262_IG10
mov ecx, dword ptr [r15+0x08]
mov rdi, r15
; gcrRegs +[rdi]
@@ -132,46 +164,21 @@ G_M4262_IG06: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {
call [System.String:IndexOf(System.String,int,int,int):int:this]
; gcrRegs -[rax rsi rdi]
test eax, eax
- jl G_M4262_IG12
- ;; size=59 bbWeight=0.50 PerfScore 8.62
-G_M4262_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[rbx r15]
- add rsp, 8
- pop rbx
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=11 bbWeight=1 PerfScore 3.25
-G_M4262_IG08: ; bbWeight=0.12, gcVars=0000000000000000 {}, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rax rbx r15]
- mov rdi, 0xD1FFAB1E
- xor rdi, qword ptr [rax+0x0C]
- mov eax, dword ptr [rax+0x12]
- ; gcrRegs -[rax]
- xor eax, 0xD1FFAB1E
- or rdi, rax
- jne SHORT G_M4262_IG07
- jmp SHORT G_M4262_IG06
- ;; size=29 bbWeight=0.12 PerfScore 1.09
-G_M4262_IG09: ; bbWeight=0.25, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rax]
- mov rdi, 0xD1FFAB1E ; <unknown class>
- cmp qword ptr [r15], rdi
- je G_M4262_IG03
- ;; size=19 bbWeight=0.25 PerfScore 1.06
-G_M4262_IG10: ; bbWeight=0.12, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r15]
- mov rsi, rax
+ jge SHORT G_M4262_IG08
+ ;; size=51 bbWeight=0.50 PerfScore 8.62
+G_M4262_IG10: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ mov rdi, rbx
+ ; gcrRegs +[rdi]
+ mov rsi, r15
; gcrRegs +[rsi]
- call CORINFO_HELP_CHKCASTCLASS_SPECIAL
- ; gcrRegs -[rsi]
- mov r15, rax
- ; gcrRegs +[r15]
- jmp G_M4262_IG03
- ;; size=16 bbWeight=0.12 PerfScore 0.44
+ call [<unknown method>]
+ ; gcrRegs -[rbx rsi rdi r15] +[rax]
+ mov rdi, rax
+ ; gcrRegs +[rdi]
+ call CORINFO_HELP_THROW
+ ; gcrRegs -[rax rdi]
+ ;; size=20 bbWeight=0 PerfScore 0.00
G_M4262_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbx r15]
mov rdi, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -195,23 +202,10 @@ G_M4262_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs +[rdi]
call CORINFO_HELP_THROW
; gcrRegs -[rbx rdi]
- ;; size=72 bbWeight=0 PerfScore 0.00
-G_M4262_IG12: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rbx r15]
- mov rdi, rbx
- ; gcrRegs +[rdi]
- mov rsi, r15
- ; gcrRegs +[rsi]
- call [<unknown method>]
- ; gcrRegs -[rbx rsi rdi r15] +[rax]
- mov rdi, rax
- ; gcrRegs +[rdi]
- call CORINFO_HELP_THROW
- ; gcrRegs -[rax rdi]
int3
- ;; size=21 bbWeight=0 PerfScore 0.00
+ ;; size=73 bbWeight=0 PerfScore 0.00
-; Total bytes of code 401, prolog size 12, PerfScore 49.47, instruction count 98, allocated bytes for code 401 (MethodHash=d71eef59) for method System.Security.Cryptography.X509Certificates.Tests.X500DistinguishedNameEncodingTests:InvalidInput(System.String,System.String) (FullOpts)
+; Total bytes of code 380, prolog size 12, PerfScore 49.22, instruction count 97, allocated bytes for code 380 (MethodHash=d71eef59) for method System.Security.Cryptography.X509Certificates.Tests.X500DistinguishedNameEncodingTests:InvalidInput(System.String,System.String) (FullOpts)
; ============================================================
Unwind Info:
+30 (+8.04%) : 177236.dasm - System.Xml.NameTableTests.CNameTableTestModule:Init(System.Object):int:this (FullOpts)
@@ -10,92 +10,93 @@
;
; V00 this [V00,T01] ( 3, 3 ) ref -> rbx this class-hnd single-def <System.Xml.NameTableTests.CNameTableTestModule>
;* V01 arg1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Object>
-;* V02 loc0 [V02,T05] ( 0, 0 ) int -> zero-ref single-def
+;* V02 loc0 [V02,T10] ( 0, 0 ) int -> zero-ref single-def
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.String>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V06 tmp2 [V06,T00] ( 6, 7.93) ref -> r15 class-hnd exact single-def "Inlining Arg" <System.String>
-; V07 tmp3 [V07,T02] ( 7, 3.71) ref -> r13 class-hnd "Inline return value spill temp" <System.String>
+; V06 tmp2 [V06,T00] ( 6, 7.99) ref -> r15 class-hnd exact single-def "Inlining Arg" <System.String>
+; V07 tmp3 [V07,T02] ( 7, 3.49) ref -> r12 class-hnd "Inline return value spill temp" <System.String>
;* V08 tmp4 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V09 tmp5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V10 tmp6 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-;* V11 tmp7 [V11,T12] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V11 tmp7 [V11,T29] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V12 tmp8 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V13 tmp9 [V13 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V14 tmp10 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V15 tmp11 [V15 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V16 tmp12 [V16,T26] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+;* V16 tmp12 [V16,T25] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V17 tmp13 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V18 tmp14 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V19 tmp15 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V20 tmp16 [V20,T08] ( 2, 0.99) int -> r15 "Inlining Arg"
-; V21 tmp17 [V21,T06] ( 2, 0.99) byref -> r12 single-def "Inlining Arg"
+; V20 tmp16 [V20,T08] ( 2, 1.06) int -> r15 "Inlining Arg"
+; V21 tmp17 [V21,T06] ( 2, 1.06) byref -> [rbp-0x30] spill-single-def "Inlining Arg"
;* V22 tmp18 [V22 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V23 tmp19 [V23 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V24 tmp20 [V24 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V25 tmp21 [V25,T04] ( 3, 1.75) ref -> rsi class-hnd "Inline return value spill temp" <System.String>
+; V25 tmp21 [V25,T05] ( 3, 1.50) ref -> rsi class-hnd "Inline return value spill temp" <System.String>
;* V26 tmp22 [V26 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V27 tmp23 [V27 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V28 tmp24 [V28 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-;* V29 tmp25 [V29,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V29 tmp25 [V29,T30] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V30 tmp26 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V31 tmp27 [V31 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V32 tmp28 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V33 tmp29 [V33 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V34 tmp30 [V34,T27] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+;* V34 tmp30 [V34,T26] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V35 tmp31 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V36 tmp32 [V36 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V37 tmp33 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V38 tmp34 [V38,T09] ( 2, 0.99) int -> r13 "Inlining Arg"
-; V39 tmp35 [V39,T07] ( 2, 0.99) byref -> r14 single-def "Inlining Arg"
+; V38 tmp34 [V38,T09] ( 2, 1.06) int -> r13 "Inlining Arg"
+; V39 tmp35 [V39,T07] ( 2, 1.06) byref -> r14 single-def "Inlining Arg"
;* V40 tmp36 [V40 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V41 tmp37 [V41 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V42 tmp38 [V42 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V43 tmp39 [V43 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP
;* V44 tmp40 [V44 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
-; V45 tmp41 [V45,T14] ( 2, 0.50) byref -> r12 "field V09._reference (fldOffset=0x0)" P-INDEP
-; V46 tmp42 [V46,T20] ( 2, 0.50) int -> r15 "field V09._length (fldOffset=0x8)" P-INDEP
+; V45 tmp41 [V45,T13] ( 2, 0.53) byref -> [rbp-0x38] spill-single-def "field V09._reference (fldOffset=0x0)" P-INDEP
+; V46 tmp42 [V46,T19] ( 2, 0.53) int -> r15 "field V09._length (fldOffset=0x8)" P-INDEP
;* V47 tmp43 [V47 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP
;* V48 tmp44 [V48 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
;* V49 tmp45 [V49 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP
;* V50 tmp46 [V50 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
-;* V51 tmp47 [V51,T24] ( 0, 0 ) byref -> zero-ref single-def "field V14._reference (fldOffset=0x0)" P-INDEP
+;* V51 tmp47 [V51,T23] ( 0, 0 ) byref -> zero-ref single-def "field V14._reference (fldOffset=0x0)" P-INDEP
;* V52 tmp48 [V52 ] ( 0, 0 ) int -> zero-ref single-def "field V14._length (fldOffset=0x8)" P-INDEP
;* V53 tmp49 [V53 ] ( 0, 0 ) byref -> zero-ref single-def "field V17._reference (fldOffset=0x0)" P-INDEP
;* V54 tmp50 [V54 ] ( 0, 0 ) int -> zero-ref single-def "field V17._length (fldOffset=0x8)" P-INDEP
-; V55 tmp51 [V55,T15] ( 2, 0.50) byref -> r12 single-def "field V18._reference (fldOffset=0x0)" P-INDEP
-; V56 tmp52 [V56,T21] ( 2, 0.50) int -> r15 single-def "field V18._length (fldOffset=0x8)" P-INDEP
+; V55 tmp51 [V55,T14] ( 2, 0.53) byref -> rax single-def "field V18._reference (fldOffset=0x0)" P-INDEP
+; V56 tmp52 [V56,T20] ( 2, 0.53) int -> r15 single-def "field V18._length (fldOffset=0x8)" P-INDEP
;* V57 tmp53 [V57 ] ( 0, 0 ) byref -> zero-ref single-def "field V19._reference (fldOffset=0x0)" P-INDEP
;* V58 tmp54 [V58 ] ( 0, 0 ) int -> zero-ref single-def "field V19._length (fldOffset=0x8)" P-INDEP
;* V59 tmp55 [V59 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP
;* V60 tmp56 [V60 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP
-; V61 tmp57 [V61,T16] ( 2, 0.50) byref -> rdx single-def "field V23._reference (fldOffset=0x0)" P-INDEP
-;* V62 tmp58 [V62,T28] ( 0, 0 ) int -> zero-ref single-def "field V23._length (fldOffset=0x8)" P-INDEP
+; V61 tmp57 [V61,T15] ( 2, 0.53) byref -> rdx single-def "field V23._reference (fldOffset=0x0)" P-INDEP
+;* V62 tmp58 [V62,T27] ( 0, 0 ) int -> zero-ref single-def "field V23._length (fldOffset=0x8)" P-INDEP
;* V63 tmp59 [V63 ] ( 0, 0 ) byref -> zero-ref "field V26._reference (fldOffset=0x0)" P-INDEP
;* V64 tmp60 [V64 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x8)" P-INDEP
-; V65 tmp61 [V65,T17] ( 2, 0.50) byref -> r14 "field V27._reference (fldOffset=0x0)" P-INDEP
-; V66 tmp62 [V66,T22] ( 2, 0.50) int -> r13 "field V27._length (fldOffset=0x8)" P-INDEP
+; V65 tmp61 [V65,T16] ( 2, 0.53) byref -> r14 "field V27._reference (fldOffset=0x0)" P-INDEP
+; V66 tmp62 [V66,T21] ( 2, 0.53) int -> r13 "field V27._length (fldOffset=0x8)" P-INDEP
;* V67 tmp63 [V67 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP
;* V68 tmp64 [V68 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP
;* V69 tmp65 [V69 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP
;* V70 tmp66 [V70 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP
-;* V71 tmp67 [V71,T25] ( 0, 0 ) byref -> zero-ref single-def "field V32._reference (fldOffset=0x0)" P-INDEP
+;* V71 tmp67 [V71,T24] ( 0, 0 ) byref -> zero-ref single-def "field V32._reference (fldOffset=0x0)" P-INDEP
;* V72 tmp68 [V72 ] ( 0, 0 ) int -> zero-ref single-def "field V32._length (fldOffset=0x8)" P-INDEP
;* V73 tmp69 [V73 ] ( 0, 0 ) byref -> zero-ref single-def "field V35._reference (fldOffset=0x0)" P-INDEP
;* V74 tmp70 [V74 ] ( 0, 0 ) int -> zero-ref single-def "field V35._length (fldOffset=0x8)" P-INDEP
-; V75 tmp71 [V75,T18] ( 2, 0.50) byref -> r14 single-def "field V36._reference (fldOffset=0x0)" P-INDEP
-; V76 tmp72 [V76,T23] ( 2, 0.50) int -> r13 single-def "field V36._length (fldOffset=0x8)" P-INDEP
+; V75 tmp71 [V75,T17] ( 2, 0.53) byref -> r14 single-def "field V36._reference (fldOffset=0x0)" P-INDEP
+; V76 tmp72 [V76,T22] ( 2, 0.53) int -> r13 single-def "field V36._length (fldOffset=0x8)" P-INDEP
;* V77 tmp73 [V77 ] ( 0, 0 ) byref -> zero-ref single-def "field V37._reference (fldOffset=0x0)" P-INDEP
;* V78 tmp74 [V78 ] ( 0, 0 ) int -> zero-ref single-def "field V37._length (fldOffset=0x8)" P-INDEP
;* V79 tmp75 [V79 ] ( 0, 0 ) byref -> zero-ref "field V40._reference (fldOffset=0x0)" P-INDEP
;* V80 tmp76 [V80 ] ( 0, 0 ) int -> zero-ref "field V40._length (fldOffset=0x8)" P-INDEP
-; V81 tmp77 [V81,T19] ( 2, 0.50) byref -> rdx single-def "field V41._reference (fldOffset=0x0)" P-INDEP
-;* V82 tmp78 [V82,T29] ( 0, 0 ) int -> zero-ref single-def "field V41._length (fldOffset=0x8)" P-INDEP
-; V83 cse0 [V83,T10] ( 2, 0.51) byref -> r13 "CSE - conservative"
-; V84 cse1 [V84,T11] ( 2, 0.51) byref -> r15 "CSE - conservative"
+; V81 tmp77 [V81,T18] ( 2, 0.53) byref -> rdx single-def "field V41._reference (fldOffset=0x0)" P-INDEP
+;* V82 tmp78 [V82,T28] ( 0, 0 ) int -> zero-ref single-def "field V41._length (fldOffset=0x8)" P-INDEP
+; V83 cse0 [V83,T11] ( 2, 0.53) byref -> r12 "CSE - conservative"
+; V84 cse1 [V84,T12] ( 2, 0.53) byref -> r15 "CSE - conservative"
; V85 cse2 [V85,T03] ( 3, 3 ) ref -> r14 "CSE - aggressive"
+; V86 cse3 [V86,T04] ( 3, 3 ) ref -> r13 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 24
G_M43592_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
@@ -104,12 +105,12 @@ G_M43592_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push r13
push r12
push rbx
- push rax
- lea rbp, [rsp+0x30]
+ sub rsp, 24
+ lea rbp, [rsp+0x40]
mov rbx, rdi
; gcrRegs +[rbx]
- ;; size=19 bbWeight=1 PerfScore 7.75
-G_M43592_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=22 bbWeight=1 PerfScore 7.00
+G_M43592_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E
; gcrRegs +[rdi]
call [XmlCoreTest.Common.FilePathUtil:GetVariableValue(System.String):System.String]
@@ -126,57 +127,57 @@ G_M43592_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs -[rax rsi rdi]
mov rdi, 0xD1FFAB1E
; gcrRegs +[rdi]
- mov rsi, 0xD1FFAB1E
+ mov r13, 0xD1FFAB1E
+ ; gcrRegs +[r13]
+ mov rsi, r13
; gcrRegs +[rsi]
call [<unknown method>]
; gcrRegs -[rsi rdi]
test r15, r15
- je SHORT G_M43592_IG05
- ;; size=72 bbWeight=1 PerfScore 12.00
-G_M43592_IG03: ; bbWeight=0.47, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+ je G_M43592_IG10
+ ;; size=79 bbWeight=1 PerfScore 12.25
+G_M43592_IG03: ; bbWeight=0.47, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
cmp dword ptr [r15+0x08], 0
- je SHORT G_M43592_IG05
- ;; size=7 bbWeight=0.47 PerfScore 1.87
-G_M43592_IG04: ; bbWeight=0.26, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+ je G_M43592_IG10
+ ;; size=11 bbWeight=0.47 PerfScore 1.87
+G_M43592_IG04: ; bbWeight=0.26, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
mov edi, 1
call [<unknown method>]
- mov r13, 0xD1FFAB1E
- ; byrRegs +[r13]
- jmp SHORT G_M43592_IG06
- ;; size=23 bbWeight=0.26 PerfScore 1.45
-G_M43592_IG05: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r15]
- ; byrRegs -[r13]
- mov r13, 0xD1FFAB1E
- ; gcrRegs +[r13]
- jmp SHORT G_M43592_IG07
- ;; size=12 bbWeight=0.50 PerfScore 1.12
-G_M43592_IG06: ; bbWeight=0.25, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref
- ; gcrRegs -[r13] +[r15]
- ; byrRegs +[r13]
- lea r12, bword ptr [r15+0x0C]
+ mov r12, 0xD1FFAB1E
; byrRegs +[r12]
+ lea rax, bword ptr [r15+0x0C]
+ ; byrRegs +[rax]
+ mov bword ptr [rbp-0x30], rax
+ ; GC ptr vars +{V21}
mov r15d, dword ptr [r15+0x08]
; gcrRegs -[r15]
mov edi, 1
call [<unknown method>]
+ ; byrRegs -[rax]
+ mov rax, bword ptr [rbp-0x30]
+ ; byrRegs +[rax]
+ mov bword ptr [rbp-0x38], rax
+ ; GC ptr vars +{V45}
mov edi, 1
+ ; GC ptr vars -{V21}
call [<unknown method>]
- mov rdx, r13
+ ; byrRegs -[rax]
+ mov rdx, r12
; byrRegs +[rdx]
- mov rdi, r12
+ mov rdi, bword ptr [rbp-0x38]
; byrRegs +[rdi]
mov esi, r15d
mov ecx, 8
+ ; GC ptr vars -{V45}
call [<unknown method>]
; gcrRegs +[rax]
- ; byrRegs -[rdx rdi r12-r13]
- mov r13, rax
- ; gcrRegs +[r13]
- ;; size=53 bbWeight=0.25 PerfScore 3.29
-G_M43592_IG07: ; bbWeight=1, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[rdx rdi r12]
+ mov r12, rax
+ ; gcrRegs +[r12]
+ ;; size=87 bbWeight=0.26 PerfScore 5.42
+G_M43592_IG05: ; bbWeight=1, gcrefRegs=7008 {rbx r12 r13 r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- mov rdi, r13
+ mov rdi, r12
; gcrRegs +[rdi]
mov rsi, r14
; gcrRegs +[rsi]
@@ -184,40 +185,28 @@ G_M43592_IG07: ; bbWeight=1, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000
; gcrRegs -[rsi rdi r14]
mov rdi, 0xD1FFAB1E
; gcrRegs +[rdi]
- mov rsi, 0xD1FFAB1E
+ mov rsi, r13
; gcrRegs +[rsi]
call [<unknown method>]
- ; gcrRegs -[rsi rdi]
- test r13, r13
- je SHORT G_M43592_IG10
- ;; size=43 bbWeight=1 PerfScore 8.25
-G_M43592_IG08: ; bbWeight=0.47, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
- cmp dword ptr [r13+0x08], 0
- je SHORT G_M43592_IG10
- ;; size=7 bbWeight=0.47 PerfScore 1.87
-G_M43592_IG09: ; bbWeight=0.26, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rsi rdi r13]
+ test r12, r12
+ je G_M43592_IG11
+ ;; size=40 bbWeight=1 PerfScore 8.25
+G_M43592_IG06: ; bbWeight=0.47, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, byref
...
+40 (+8.58%) : 146010.dasm - System.SpanTests.SpanTests:g_ParseRange|1453(System.String):System.Range (FullOpts)
@@ -20,7 +20,7 @@
;* V09 tmp3 [V09 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V10 tmp4 [V10 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Index>
; V11 tmp5 [V11 ] ( 3, 6 ) struct ( 8) [rbp-0x30] do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Range>
-; V12 tmp6 [V12,T37] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V12 tmp6 [V12,T33] ( 3, 0 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V13 tmp7 [V13 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V14 tmp8 [V14,T06] ( 2, 4 ) int -> rcx "Inlining Arg"
;* V15 tmp9 [V15 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
@@ -33,8 +33,8 @@
;* V22 tmp16 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V23 tmp17 [V23 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ushort]>
; V24 tmp18 [V24,T24] ( 2, 1.98) int -> rdi "Span.get_Item index"
-; V25 tmp19 [V25,T31] ( 2, 0.99) ubyte -> rax "Inline return value spill temp"
-; V26 tmp20 [V26,T07] ( 4, 3.97) ushort -> rdi "Inlining Arg"
+; V25 tmp19 [V25,T34] ( 2, 0 ) ubyte -> rax "Inline return value spill temp"
+; V26 tmp20 [V26,T11] ( 4, 2.98) ushort -> rdi "Inlining Arg"
;* V27 tmp21 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V28 tmp22 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V29 tmp23 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -42,8 +42,8 @@
;* V31 tmp25 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V32 tmp26 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V33 tmp27 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V34 tmp28 [V34,T33] ( 2, 0.98) ubyte -> rax "Inline return value spill temp"
-; V35 tmp29 [V35,T09] ( 4, 3.95) ushort -> rdi "Inlining Arg"
+; V34 tmp28 [V34,T35] ( 2, 0 ) ubyte -> rax "Inline return value spill temp"
+; V35 tmp29 [V35,T13] ( 4, 2.97) ushort -> rdi "Inlining Arg"
;* V36 tmp30 [V36 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V37 tmp31 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V38 tmp32 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -57,15 +57,15 @@
;* V46 tmp40 [V46 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V47 tmp41 [V47 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
; V48 tmp42 [V48,T04] ( 3, 4 ) int -> r15 "Inlining Arg"
-; V49 tmp43 [V49,T11] ( 2, 3 ) byref -> rbx single-def "Inlining Arg"
+; V49 tmp43 [V49,T07] ( 2, 3 ) byref -> rbx single-def "Inlining Arg"
;* V50 tmp44 [V50 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V51 tmp45 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V52 tmp46 [V52 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret single-def "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V53 tmp47 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V54 tmp48 [V54 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ushort]>
; V55 tmp49 [V55,T25] ( 2, 1.98) int -> rdi "Span.get_Item index"
-; V56 tmp50 [V56,T32] ( 2, 0.99) ubyte -> rax "Inline return value spill temp"
-; V57 tmp51 [V57,T08] ( 4, 3.97) ushort -> rdi "Inlining Arg"
+; V56 tmp50 [V56,T36] ( 2, 0 ) ubyte -> rax "Inline return value spill temp"
+; V57 tmp51 [V57,T12] ( 4, 2.98) ushort -> rdi "Inlining Arg"
;* V58 tmp52 [V58 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V59 tmp53 [V59 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V60 tmp54 [V60 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -73,8 +73,8 @@
;* V62 tmp56 [V62 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V63 tmp57 [V63 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V64 tmp58 [V64 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V65 tmp59 [V65,T34] ( 2, 0.98) ubyte -> rax "Inline return value spill temp"
-; V66 tmp60 [V66,T10] ( 4, 3.95) ushort -> rdi "Inlining Arg"
+; V65 tmp59 [V65,T37] ( 2, 0 ) ubyte -> rax "Inline return value spill temp"
+; V66 tmp60 [V66,T14] ( 4, 2.97) ushort -> rdi "Inlining Arg"
;* V67 tmp61 [V67 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V68 tmp62 [V68 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V69 tmp63 [V69 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -95,8 +95,8 @@
;* V84 tmp78 [V84 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP
;* V85 tmp79 [V85 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
; V86 tmp80 [V86,T20] ( 3, 2 ) int -> rax single-def "field V10._value (fldOffset=0x0)" P-INDEP
-; V87 tmp81 [V87,T12] ( 2, 3 ) int -> [rbp-0x30] do-not-enreg[] "field V11.<Start>k__BackingField (fldOffset=0x0)" P-DEP
-; V88 tmp82 [V88,T13] ( 2, 3 ) int -> [rbp-0x2C] do-not-enreg[] "field V11.<End>k__BackingField (fldOffset=0x4)" P-DEP
+; V87 tmp81 [V87,T08] ( 2, 3 ) int -> [rbp-0x30] do-not-enreg[] "field V11.<Start>k__BackingField (fldOffset=0x0)" P-DEP
+; V88 tmp82 [V88,T09] ( 2, 3 ) int -> [rbp-0x2C] do-not-enreg[] "field V11.<End>k__BackingField (fldOffset=0x4)" P-DEP
; V89 tmp83 [V89,T15] ( 5, 2.49) byref -> r13 single-def "field V15._reference (fldOffset=0x0)" P-INDEP
;* V90 tmp84 [V90,T29] ( 0, 0 ) int -> zero-ref single-def "field V15._length (fldOffset=0x8)" P-INDEP
; V91 tmp85 [V91,T21] ( 2, 2 ) byref -> r13 single-def "field V16._reference (fldOffset=0x0)" P-INDEP
@@ -133,9 +133,9 @@
;* V122 tmp116 [V122 ] ( 0, 0 ) int -> zero-ref single-def "field V40._length (fldOffset=0x8)" P-INDEP
;* V123 tmp117 [V123 ] ( 0, 0 ) byref -> zero-ref single-def "field V42._reference (fldOffset=0x0)" P-INDEP
;* V124 tmp118 [V124 ] ( 0, 0 ) int -> zero-ref single-def "field V42._length (fldOffset=0x8)" P-INDEP
-;* V125 tmp119 [V125,T35] ( 0, 0 ) int -> zero-ref single-def "field V43._value (fldOffset=0x0)" P-INDEP
+;* V125 tmp119 [V125,T31] ( 0, 0 ) int -> zero-ref single-def "field V43._value (fldOffset=0x0)" P-INDEP
; V126 tmp120 [V126,T16] ( 5, 2.49) byref -> rbx "field V44._reference (fldOffset=0x0)" P-INDEP
-; V127 tmp121 [V127,T14] ( 5, 3.00) int -> r15 "field V44._length (fldOffset=0x8)" P-INDEP
+; V127 tmp121 [V127,T10] ( 5, 3.00) int -> r15 "field V44._length (fldOffset=0x8)" P-INDEP
; V128 tmp122 [V128,T22] ( 2, 2 ) byref -> rbx single-def "field V46._reference (fldOffset=0x0)" P-INDEP
; V129 tmp123 [V129,T23] ( 2, 2 ) int -> r15 single-def "field V46._length (fldOffset=0x8)" P-INDEP
;* V130 tmp124 [V130 ] ( 0, 0 ) byref -> zero-ref single-def "field V47._reference (fldOffset=0x0)" P-INDEP
@@ -170,7 +170,7 @@
;* V159 tmp153 [V159 ] ( 0, 0 ) int -> zero-ref single-def "field V71._length (fldOffset=0x8)" P-INDEP
;* V160 tmp154 [V160 ] ( 0, 0 ) byref -> zero-ref single-def "field V73._reference (fldOffset=0x0)" P-INDEP
;* V161 tmp155 [V161 ] ( 0, 0 ) int -> zero-ref single-def "field V73._length (fldOffset=0x8)" P-INDEP
-;* V162 tmp156 [V162,T36] ( 0, 0 ) int -> zero-ref single-def "field V74._value (fldOffset=0x0)" P-INDEP
+;* V162 tmp156 [V162,T32] ( 0, 0 ) int -> zero-ref single-def "field V74._value (fldOffset=0x0)" P-INDEP
; V163 cse0 [V163,T26] ( 3, 1.50) ref -> rsi "CSE - aggressive"
; V164 cse1 [V164,T03] ( 5, 4.50) int -> r15 "CSE - moderate"
;
@@ -201,58 +201,41 @@ G_M6496_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byre
; gcrRegs -[rsi rdi]
mov r14d, eax
test r14d, r14d
- jl G_M6496_IG32
+ jl G_M6496_IG24
cmp r15d, r14d
- jb G_M6496_IG33
+ jb G_M6496_IG27
lea r13, bword ptr [rbx+0x0C]
; byrRegs +[r13]
test r14d, r14d
- je SHORT G_M6496_IG10
+ je SHORT G_M6496_IG06
;; size=61 bbWeight=1 PerfScore 10.75
G_M6496_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13}, byref, isz
movzx rdi, word ptr [r13]
cmp edi, 256
- jb SHORT G_M6496_IG05
- call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
- test eax, eax
- jne SHORT G_M6496_IG11
- ;; size=23 bbWeight=0.50 PerfScore 3.72
-G_M6496_IG04: ; bbWeight=0.49, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13}, byref, isz
- jmp SHORT G_M6496_IG06
- ;; size=2 bbWeight=0.49 PerfScore 0.98
-G_M6496_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13}, byref, isz
- mov edi, edi
- mov rax, 0xD1FFAB1E ; static handle
- test byte ptr [rdi+rax], 128
- jne SHORT G_M6496_IG11
- ;; size=18 bbWeight=0.50 PerfScore 2.23
-G_M6496_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13}, byref, isz
+ jae G_M6496_IG25
+ mov rsi, 0xD1FFAB1E ; static handle
+ test byte ptr [rdi+rsi], 128
+ jne SHORT G_M6496_IG07
+ ;; size=33 bbWeight=0.50 PerfScore 3.72
+G_M6496_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13}, byref
lea edi, [r14-0x01]
movzx rdi, word ptr [r13+2*rdi]
cmp edi, 256
- jb SHORT G_M6496_IG09
- ;; size=18 bbWeight=0.50 PerfScore 1.86
-G_M6496_IG07: ; bbWeight=0.49, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13}, byref, isz
- call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
- test eax, eax
- jne SHORT G_M6496_IG11
- ;; size=10 bbWeight=0.49 PerfScore 2.09
-G_M6496_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13}, byref, isz
- jmp SHORT G_M6496_IG10
- ;; size=2 bbWeight=0.50 PerfScore 0.99
-G_M6496_IG09: ; bbWeight=0.49, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13}, byref, isz
+ jae G_M6496_IG26
+ ;; size=22 bbWeight=0.50 PerfScore 1.86
+G_M6496_IG05: ; bbWeight=0.49, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13}, byref, isz
mov edi, edi
- mov rax, 0xD1FFAB1E ; static handle
- test byte ptr [rdi+rax], 128
- jne SHORT G_M6496_IG11
+ mov rsi, 0xD1FFAB1E ; static handle
+ test byte ptr [rdi+rsi], 128
+ jne SHORT G_M6496_IG07
;; size=18 bbWeight=0.49 PerfScore 2.21
-G_M6496_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13}, byref, isz
+G_M6496_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13}, byref, isz
mov rdi, r13
; byrRegs +[rdi]
mov esi, r14d
- jmp SHORT G_M6496_IG12
+ jmp SHORT G_M6496_IG08
;; size=8 bbWeight=0.50 PerfScore 1.24
-G_M6496_IG11: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13}, byref
+G_M6496_IG07: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13}, byref
; byrRegs -[rdi]
mov rdi, r13
; byrRegs +[rdi]
@@ -263,32 +246,32 @@ G_M6496_IG11: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13}
; byrRegs +[rdi]
mov esi, edx
;; size=17 bbWeight=0.00 PerfScore 0.02
-G_M6496_IG12: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
+G_M6496_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
; byrRegs -[rax]
test esi, esi
- je SHORT G_M6496_IG14
+ je SHORT G_M6496_IG10
;; size=4 bbWeight=1 PerfScore 1.25
-G_M6496_IG13: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
+G_M6496_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
call [System.SpanTests.SpanTests:<EnumerateLines_Battery>g__ParseIndex|145_4(System.ReadOnlySpan`1[ushort]):System.Index]
; byrRegs -[rdi]
mov r12d, eax
- jmp SHORT G_M6496_IG15
+ jmp SHORT G_M6496_IG11
;; size=11 bbWeight=0.50 PerfScore 2.62
-G_M6496_IG14: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M6496_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
xor r12d, r12d
;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M6496_IG15: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M6496_IG11: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
add r14d, 2
cmp r15d, r14d
- jb G_M6496_IG33
+ jb G_M6496_IG27
;; size=13 bbWeight=1 PerfScore 1.50
-G_M6496_IG16: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M6496_IG12: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov edi, r14d
lea rbx, bword ptr [rbx+2*rdi+0x0C]
; gcrRegs -[rbx]
; byrRegs +[rbx]
sub r15d, r14d
- jns SHORT G_M6496_IG17
+ jns SHORT G_M6496_IG13
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
mov rdi, rsi
@@ -296,54 +279,37 @@ G_M6496_IG16: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, b
call [<unknown method>]
; gcrRegs -[rsi rdi]
;; size=32 bbWeight=0.50 PerfScore 3.00
-G_M6496_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+G_M6496_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
test r15d, r15d
- je SHORT G_M6496_IG25
+ je SHORT G_M6496_IG17
;; size=5 bbWeight=1 PerfScore 1.25
-G_M6496_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+G_M6496_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
movzx rdi, word ptr [rbx]
cmp edi, 256
- jb SHORT G_M6496_IG20
- call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
- test eax, eax
- jne SHORT G_M6496_IG26
- ;; size=21 bbWeight=0.50 PerfScore 3.72
-G_M6496_IG19: ; bbWeight=0.49, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- jmp SHORT G_M6496_IG21
- ;; size=2 bbWeight=0.49 PerfScore 0.98
-G_M6496_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- mov edi, edi
- mov rax, 0xD1FFAB1E ; static handle
- test byte ptr [rdi+rax], 128
- jne SHORT G_M6496_IG26
- ;; size=18 bbWeight=0.50 PerfScore 2.23
-G_M6496_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ jae G_M6496_IG28
+ mov rsi, 0xD1FFAB1E ; static handle
+ test byte ptr [rdi+rsi], 128
+ jne SHORT G_M6496_IG18
+ ;; size=31 bbWeight=0.50 PerfScore 3.72
+G_M6496_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
lea edi, [r15-0x01]
movzx rdi, word ptr [rbx+2*rdi]
cmp edi, 256
...
+14 (+13.33%) : 74537.dasm - System.Collections.CaseInsensitiveHashCodeProvider:GetHashCode(System.Object):int:this (FullOpts)
@@ -10,42 +10,44 @@
;
; V00 this [V00,T01] ( 3, 2.50) ref -> rdi this class-hnd single-def <System.Collections.CaseInsensitiveHashCodeProvider>
; V01 arg1 [V01,T00] ( 6, 5.00) ref -> rsi class-hnd single-def <System.Object>
-; V02 loc0 [V02,T04] ( 3, 1.50) ref -> rsi class-hnd exact <System.String>
+; V02 loc0 [V02,T06] ( 3, 1.50) ref -> rsi class-hnd exact <System.String>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String>
-; V05 tmp2 [V05,T02] ( 3, 3.00) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Globalization.CompareInfo>
+; V05 tmp2 [V05,T02] ( 3, 3 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Globalization.CompareInfo>
;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V07 tmp4 [V07 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V08 tmp5 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V09 tmp6 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V10 tmp7 [V10,T06] ( 2, 2.00) int -> rsi "Inlining Arg"
-; V11 tmp8 [V11,T05] ( 2, 2.00) byref -> rdx single-def "Inlining Arg"
+; V10 tmp7 [V10,T05] ( 2, 2 ) int -> rsi "Inlining Arg"
+; V11 tmp8 [V11,T04] ( 2, 2 ) byref -> rdx single-def "Inlining Arg"
;* V12 tmp9 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp10 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp11 [V14 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V15 tmp12 [V15 ] ( 0, 0 ) byref -> zero-ref single-def "field V06._reference (fldOffset=0x0)" P-INDEP
;* V16 tmp13 [V16 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
-; V17 tmp14 [V17,T07] ( 2, 1.00) byref -> rdx single-def "field V07._reference (fldOffset=0x0)" P-INDEP
-; V18 tmp15 [V18,T09] ( 2, 1.00) int -> rcx "field V07._length (fldOffset=0x8)" P-INDEP
-; V19 tmp16 [V19,T08] ( 2, 1.00) byref -> rdx single-def "field V08._reference (fldOffset=0x0)" P-INDEP
-; V20 tmp17 [V20,T10] ( 2, 1.00) int -> rsi "field V08._length (fldOffset=0x8)" P-INDEP
+; V17 tmp14 [V17,T07] ( 2, 1 ) byref -> rdx single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+; V18 tmp15 [V18,T09] ( 2, 1 ) int -> rcx "field V07._length (fldOffset=0x8)" P-INDEP
+; V19 tmp16 [V19,T08] ( 2, 1 ) byref -> rdx single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+; V20 tmp17 [V20,T10] ( 2, 1 ) int -> rsi "field V08._length (fldOffset=0x8)" P-INDEP
;* V21 tmp18 [V21 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP
;* V22 tmp19 [V22 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V23 cse0 [V23,T03] ( 3, 2.50) long -> rax "CSE - aggressive"
+; V23 cse0 [V23,T03] ( 3, 2.50) long -> rbx "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M64002_IG01: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- mov rbp, rsp
- ;; size=4 bbWeight=1.00 PerfScore 1.25
+ push rbx
+ push rax
+ lea rbp, [rsp+0x10]
+ ;; size=8 bbWeight=1.00 PerfScore 3.50
G_M64002_IG02: ; bbWeight=1.00, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rsi rdi]
test rsi, rsi
je SHORT G_M64002_IG07
- mov rax, qword ptr [rsi]
- mov rcx, 0xD1FFAB1E ; System.String
- cmp rax, rcx
+ mov rbx, qword ptr [rsi]
+ mov rdx, 0xD1FFAB1E ; System.String
+ cmp rbx, rdx
jne SHORT G_M64002_IG05
;; size=23 bbWeight=1.00 PerfScore 4.75
G_M64002_IG03: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref
@@ -67,22 +69,26 @@ G_M64002_IG03: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000
nop
;; size=33 bbWeight=0.50 PerfScore 5.88
G_M64002_IG04: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 8
+ pop rbx
pop rbp
ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
G_M64002_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rsi]
mov rdi, rsi
; gcrRegs +[rdi]
- mov rax, qword ptr [rax+0x48]
+ mov rax, qword ptr [rbx+0x48]
call [rax+0x18]<unknown method>
; gcrRegs -[rsi rdi]
nop
;; size=11 bbWeight=0.50 PerfScore 2.75
G_M64002_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 8
+ pop rbx
pop rbp
ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
G_M64002_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov edi, 0x447
mov rsi, 0xD1FFAB1E
@@ -95,7 +101,7 @@ G_M64002_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=30 bbWeight=0 PerfScore 0.00
-; Total bytes of code 105, prolog size 4, PerfScore 16.12, instruction count 32, allocated bytes for code 105 (MethodHash=067e05fd) for method System.Collections.CaseInsensitiveHashCodeProvider:GetHashCode(System.Object):int:this (FullOpts)
+; Total bytes of code 119, prolog size 8, PerfScore 19.12, instruction count 38, allocated bytes for code 119 (MethodHash=067e05fd) for method System.Collections.CaseInsensitiveHashCodeProvider:GetHashCode(System.Object):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -103,9 +109,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x01
- CountOfUnwindCodes: 1
+ SizeOfProlog : 0x03
+ CountOfUnwindCodes: 3
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
+ CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
Details
Improvements/regressions per collection
| Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
| benchmarks.run.linux.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| benchmarks.run_pgo.linux.x64.checked.mch |
9,316 |
4,763 |
4,209 |
344 |
-86,318 |
+30,482 |
| benchmarks.run_tiered.linux.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| coreclr_tests.run.linux.x64.checked.mch |
3,596 |
1,224 |
1,504 |
868 |
-13,077 |
+32,554 |
| libraries.crossgen2.linux.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| libraries.pmi.linux.x64.checked.mch |
923 |
325 |
409 |
189 |
-2,007 |
+4,474 |
| libraries_tests.run.linux.x64.Release.mch |
29,301 |
10,078 |
14,431 |
4,792 |
-167,400 |
+613,607 |
| librariestestsnotieredcompilation.run.linux.x64.Release.mch |
1,666 |
469 |
927 |
270 |
-3,815 |
+12,077 |
| realworld.run.linux.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| smoke_tests.nativeaot.linux.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
|
44,802 |
16,859 |
21,480 |
6,463 |
-272,617 |
+693,194 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.linux.x64.checked.mch |
33,887 |
2,767 |
31,120 |
0 (0.00%) |
0 (0.00%) |
| benchmarks.run_pgo.linux.x64.checked.mch |
157,996 |
62,149 |
95,847 |
0 (0.00%) |
52 (0.03%) |
| benchmarks.run_tiered.linux.x64.checked.mch |
63,161 |
47,405 |
15,756 |
0 (0.00%) |
0 (0.00%) |
| coreclr_tests.run.linux.x64.checked.mch |
598,841 |
355,787 |
243,054 |
0 (0.00%) |
0 (0.00%) |
| libraries.crossgen2.linux.x64.checked.mch |
265,329 |
15 |
265,314 |
0 (0.00%) |
0 (0.00%) |
| libraries.pmi.linux.x64.checked.mch |
298,301 |
6 |
298,295 |
0 (0.00%) |
0 (0.00%) |
| libraries_tests.run.linux.x64.Release.mch |
758,721 |
495,503 |
263,218 |
0 (0.00%) |
43 (0.01%) |
| librariestestsnotieredcompilation.run.linux.x64.Release.mch |
305,761 |
21,933 |
283,828 |
0 (0.00%) |
0 (0.00%) |
| realworld.run.linux.x64.checked.mch |
33,267 |
49 |
33,218 |
0 (0.00%) |
0 (0.00%) |
| smoke_tests.nativeaot.linux.x64.checked.mch |
27,438 |
10 |
27,428 |
0 (0.00%) |
0 (0.00%) |
|
2,542,702 |
985,624 |
1,557,078 |
0 (0.00%) |
95 (0.00%) |
jit-analyze output
benchmarks.run_pgo.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 69699439 (overridden on cmd)
Total bytes of diff: 69643603 (overridden on cmd)
Total bytes of delta: -55836 (-0.08 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
282 : 94158.dasm (30.92 % of base)
250 : 94369.dasm (38.34 % of base)
242 : 93391.dasm (37.06 % of base)
234 : 105781.dasm (4.32 % of base)
221 : 53345.dasm (43.59 % of base)
213 : 129517.dasm (41.12 % of base)
180 : 78436.dasm (39.05 % of base)
148 : 111739.dasm (2.77 % of base)
148 : 80853.dasm (11.12 % of base)
142 : 67831.dasm (4.54 % of base)
142 : 50391.dasm (4.54 % of base)
142 : 93363.dasm (4.78 % of base)
125 : 80855.dasm (11.50 % of base)
115 : 42285.dasm (3.74 % of base)
111 : 48451.dasm (7.09 % of base)
111 : 93566.dasm (4.71 % of base)
111 : 93658.dasm (5.00 % of base)
111 : 93382.dasm (2.01 % of base)
109 : 154663.dasm (3.51 % of base)
103 : 66507.dasm (7.06 % of base)
Top file improvements (bytes):
-201 : 25758.dasm (-4.89 % of base)
-201 : 15599.dasm (-4.89 % of base)
-201 : 31627.dasm (-4.90 % of base)
-134 : 134177.dasm (-3.98 % of base)
-132 : 51482.dasm (-3.97 % of base)
-130 : 103497.dasm (-14.64 % of base)
-130 : 106115.dasm (-14.64 % of base)
-130 : 109361.dasm (-14.64 % of base)
-130 : 126089.dasm (-14.64 % of base)
-130 : 138599.dasm (-14.64 % of base)
-130 : 150059.dasm (-14.64 % of base)
-130 : 41727.dasm (-14.64 % of base)
-130 : 96645.dasm (-14.64 % of base)
-130 : 107694.dasm (-14.64 % of base)
-130 : 110190.dasm (-14.64 % of base)
-130 : 117507.dasm (-14.64 % of base)
-130 : 119676.dasm (-14.64 % of base)
-130 : 133375.dasm (-14.64 % of base)
-130 : 49515.dasm (-14.64 % of base)
-130 : 50641.dasm (-14.64 % of base)
68 total files with Code Size differences (28 improved, 40 regressed), 20 unchanged.
Top method regressions (bytes):
282 (30.92 % of base) : 94158.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
250 (38.34 % of base) : 94369.dasm - Microsoft.Cci.MetadataVisitor:Visit(System.Collections.Generic.IEnumerable`1[Microsoft.Cci.IMetadataNamedArgument]):this (Tier1)
242 (37.06 % of base) : 93391.dasm - Microsoft.Cci.MetadataVisitor:Visit(System.Collections.Generic.IEnumerable`1[Microsoft.Cci.IMetadataExpression]):this (Tier1)
234 (4.32 % of base) : 105781.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
221 (43.59 % of base) : 53345.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1)
213 (41.12 % of base) : 129517.dasm - System.Linq.Enumerable:Count[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):int (Tier1)
180 (39.05 % of base) : 78436.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1)
148 (11.12 % of base) : 80853.dasm - System.Text.RegularExpressions.RegexCache:GetOrAdd(System.String):System.Text.RegularExpressions.Regex (Tier1)
148 (2.77 % of base) : 111739.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
142 (4.78 % of base) : 93363.dasm - Microsoft.Cci.MetadataWriter:GetMemberReferenceParent(Microsoft.Cci.ITypeMemberReference):System.Reflection.Metadata.EntityHandle:this (Tier1)
142 (4.54 % of base) : 67831.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateFields(System.RuntimeType+RuntimeTypeCache+Filter):System.Reflection.RuntimeFieldInfo[]:this (Tier1)
142 (4.54 % of base) : 50391.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateFields(System.RuntimeType+RuntimeTypeCache+Filter):System.Reflection.RuntimeFieldInfo[]:this (Tier1)
125 (11.50 % of base) : 80855.dasm - System.Text.RegularExpressions.RegexCache:Get(System.Text.RegularExpressions.RegexCache+Key):System.Text.RegularExpressions.Regex (Tier1)
115 (3.74 % of base) : 42285.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong]:CreateConcatAlreadyReversed(System.Collections.Generic.IEnumerable`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (Tier1)
111 (2.01 % of base) : 93382.dasm - Microsoft.Cci.MetadataVisitor:Visit(Microsoft.Cci.ICustomAttribute):this (Tier1)
111 (5.00 % of base) : 93658.dasm - Microsoft.Cci.MetadataWriter:GetCustomAttributeTypeCodedIndex(Microsoft.Cci.IMethodReference):System.Reflection.Metadata.EntityHandle:this (Tier1)
111 (4.71 % of base) : 93566.dasm - Microsoft.Cci.MetadataWriter:GetMethodHandle(Microsoft.Cci.IMethodReference):System.Reflection.Metadata.EntityHandle:this (Tier1)
111 (7.09 % of base) : 48451.dasm - System.Text.RegularExpressions.RegexCache:GetOrAdd(System.String):System.Text.RegularExpressions.Regex (Tier1)
109 (3.51 % of base) : 154663.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong]:CreateConcatAlreadyReversed(System.Collections.Generic.IEnumerable`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (Tier1)
103 (7.06 % of base) : 66507.dasm - Utility:sscanf(System.String,System.String,System.Object[]):int (Tier1)
Top method improvements (bytes):
-201 (-4.89 % of base) : 25758.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (Tier1)
-201 (-4.89 % of base) : 15599.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (Tier1)
-201 (-4.90 % of base) : 31627.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (Tier1)
-134 (-3.98 % of base) : 134177.dasm - System.IO.Strategies.BufferedFileStreamStrategy:WriteAsync(System.ReadOnlyMemory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this (Tier1)
-132 (-3.97 % of base) : 51482.dasm - System.IO.Strategies.BufferedFileStreamStrategy:WriteAsync(System.ReadOnlyMemory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this (Tier1)
-130 (-14.64 % of base) : 103497.dasm - System.Buffer:Memmove[ushort](byref,byref,ulong) (Tier1)
-130 (-14.64 % of base) : 106115.dasm - System.Buffer:Memmove[ushort](byref,byref,ulong) (Tier1)
-130 (-14.64 % of base) : 109361.dasm - System.Buffer:Memmove[ushort](byref,byref,ulong) (Tier1)
-130 (-14.64 % of base) : 126089.dasm - System.Buffer:Memmove[ushort](byref,byref,ulong) (Tier1)
-130 (-14.64 % of base) : 138599.dasm - System.Buffer:Memmove[ushort](byref,byref,ulong) (Tier1)
-130 (-14.64 % of base) : 150059.dasm - System.Buffer:Memmove[ushort](byref,byref,ulong) (Tier1)
-130 (-14.64 % of base) : 41727.dasm - System.Buffer:Memmove[ushort](byref,byref,ulong) (Tier1)
-130 (-14.64 % of base) : 96645.dasm - System.Buffer:Memmove[ushort](byref,byref,ulong) (Tier1)
-130 (-14.64 % of base) : 107694.dasm - System.Buffer:Memmove[ushort](byref,byref,ulong) (Tier1)
-130 (-14.64 % of base) : 110190.dasm - System.Buffer:Memmove[ushort](byref,byref,ulong) (Tier1)
-130 (-14.64 % of base) : 117507.dasm - System.Buffer:Memmove[ushort](byref,byref,ulong) (Tier1)
-130 (-14.64 % of base) : 119676.dasm - System.Buffer:Memmove[ushort](byref,byref,ulong) (Tier1)
-130 (-14.64 % of base) : 133375.dasm - System.Buffer:Memmove[ushort](byref,byref,ulong) (Tier1)
-130 (-14.64 % of base) : 49515.dasm - System.Buffer:Memmove[ushort](byref,byref,ulong) (Tier1)
-130 (-14.64 % of base) : 50641.dasm - System.Buffer:Memmove[ushort](byref,byref,ulong) (Tier1)
Top method regressions (percentages):
221 (43.59 % of base) : 53345.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1)
213 (41.12 % of base) : 129517.dasm - System.Linq.Enumerable:Count[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):int (Tier1)
180 (39.05 % of base) : 78436.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1)
250 (38.34 % of base) : 94369.dasm - Microsoft.Cci.MetadataVisitor:Visit(System.Collections.Generic.IEnumerable`1[Microsoft.Cci.IMetadataNamedArgument]):this (Tier1)
242 (37.06 % of base) : 93391.dasm - Microsoft.Cci.MetadataVisitor:Visit(System.Collections.Generic.IEnumerable`1[Microsoft.Cci.IMetadataExpression]):this (Tier1)
282 (30.92 % of base) : 94158.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
25 (21.74 % of base) : 112530.dasm - System.Collections.Concurrent.ConcurrentQueue`1[System.__Canon]:Enqueue(System.__Canon):this (Tier1)
102 (17.74 % of base) : 103199.dasm - System.Collections.Generic.Dictionary`2[System.Reflection.Metadata.NamespaceDefinitionHandle,System.__Canon]:FindValue(System.Reflection.Metadata.NamespaceDefinitionHandle):byref:this (Tier1)
26 (15.38 % of base) : 131281.dasm - System.MemoryExtensions:Trim(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Tier1)
88 (13.56 % of base) : 103198.dasm - System.Collections.Generic.Dictionary`2[System.Reflection.Metadata.NamespaceDefinitionHandle,System.__Canon]:TryGetValue(System.Reflection.Metadata.NamespaceDefinitionHandle,byref):ubyte:this (Tier1)
8 (11.94 % of base) : 102462.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:IsInDocumentationComment(Microsoft.CodeAnalysis.SyntaxNode):ubyte (Tier1)
44 (11.55 % of base) : 93409.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder:MustBeWrapped(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol):ubyte (Tier1)
125 (11.50 % of base) : 80855.dasm - System.Text.RegularExpressions.RegexCache:Get(System.Text.RegularExpressions.RegexCache+Key):System.Text.RegularExpressions.Regex (Tier1)
29 (11.37 % of base) : 93411.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder:ContainerIsGeneric(Microsoft.CodeAnalysis.CSharp.Symbol):ubyte (Tier1)
148 (11.12 % of base) : 80853.dasm - System.Text.RegularExpressions.RegexCache:GetOrAdd(System.String):System.Text.RegularExpressions.Regex (Tier1)
78 (10.00 % of base) : 80856.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]:TryGetValue(System.Text.RegularExpressions.RegexCache+Key,byref):ubyte:this (Tier1)
76 (8.75 % of base) : 93131.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass1:RecordVarRead(Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol):this (Tier1)
10 (7.69 % of base) : 106576.dasm - System.Collections.Concurrent.ConcurrentQueue`1[System.__Canon]:Enqueue(System.__Canon):this (Tier1)
10 (7.69 % of base) : 119486.dasm - System.Collections.Concurrent.ConcurrentQueue`1[System.__Canon]:Enqueue(System.__Canon):this (Tier1)
10 (7.69 % of base) : 125344.dasm - System.Collections.Concurrent.ConcurrentQueue`1[System.__Canon]:Enqueue(System.__Canon):this (Tier1)
Top method improvements (percentages):
-52 (-16.35 % of base) : 62472.dasm - System.IO.Strategies.BufferedFileStreamStrategy:FlushWrite():this (Tier1)
-130 (-14.64 % of base) : 103497.dasm - System.Buffer:Memmove[ushort](byref,byref,ulong) (Tier1)
-130 (-14.64 % of base) : 106115.dasm - System.Buffer:Memmove[ushort](byref,byref,ulong) (Tier1)
-130 (-14.64 % of base) : 109361.dasm - System.Buffer:Memmove[ushort](byref,byref,ulong) (Tier1)
-130 (-14.64 % of base) : 126089.dasm - System.Buffer:Memmove[ushort](byref,byref,ulong) (Tier1)
-130 (-14.64 % of base) : 138599.dasm - System.Buffer:Memmove[ushort](byref,byref,ulong) (Tier1)
-130 (-14.64 % of base) : 150059.dasm - System.Buffer:Memmove[ushort](byref,byref,ulong) (Tier1)
-130 (-14.64 % of base) : 41727.dasm - System.Buffer:Memmove[ushort](byref,byref,ulong) (Tier1)
-130 (-14.64 % of base) : 96645.dasm - System.Buffer:Memmove[ushort](byref,byref,ulong) (Tier1)
-130 (-14.64 % of base) : 107694.dasm - System.Buffer:Memmove[ushort](byref,byref,ulong) (Tier1)
-130 (-14.64 % of base) : 110190.dasm - System.Buffer:Memmove[ushort](byref,byref,ulong) (Tier1)
-130 (-14.64 % of base) : 117507.dasm - System.Buffer:Memmove[ushort](byref,byref,ulong) (Tier1)
-130 (-14.64 % of base) : 119676.dasm - System.Buffer:Memmove[ushort](byref,byref,ulong) (Tier1)
-130 (-14.64 % of base) : 133375.dasm - System.Buffer:Memmove[ushort](byref,byref,ulong) (Tier1)
-130 (-14.64 % of base) : 49515.dasm - System.Buffer:Memmove[ushort](byref,byref,ulong) (Tier1)
-130 (-14.64 % of base) : 50641.dasm - System.Buffer:Memmove[ushort](byref,byref,ulong) (Tier1)
-130 (-14.64 % of base) : 64022.dasm - System.Buffer:Memmove[ushort](byref,byref,ulong) (Tier1)
-130 (-14.64 % of base) : 78790.dasm - System.Buffer:Memmove[ushort](byref,byref,ulong) (Tier1)
-130 (-14.64 % of base) : 79124.dasm - System.Buffer:Memmove[ushort](byref,byref,ulong) (Tier1)
-130 (-14.64 % of base) : 80514.dasm - System.Buffer:Memmove[ushort](byref,byref,ulong) (Tier1)
coreclr_tests.run.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 403413227 (overridden on cmd)
Total bytes of diff: 403432704 (overridden on cmd)
Total bytes of delta: 19477 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
1357 : 397449.dasm (38.44 % of base)
1238 : 398615.dasm (55.77 % of base)
1099 : 387990.dasm (30.50 % of base)
1033 : 392206.dasm (51.21 % of base)
757 : 236562.dasm (71.55 % of base)
675 : 388565.dasm (34.67 % of base)
673 : 398561.dasm (34.58 % of base)
642 : 397487.dasm (37.97 % of base)
593 : 388876.dasm (30.46 % of base)
581 : 389022.dasm (40.40 % of base)
574 : 397766.dasm (39.72 % of base)
537 : 388401.dasm (32.78 % of base)
490 : 236909.dasm (42.02 % of base)
456 : 397708.dasm (23.96 % of base)
344 : 245838.dasm (39.14 % of base)
216 : 386768.dasm (47.58 % of base)
214 : 361509.dasm (4.23 % of base)
213 : 384511.dasm (46.81 % of base)
213 : 385775.dasm (46.81 % of base)
213 : 386145.dasm (46.81 % of base)
Top file improvements (bytes):
-354 : 397482.dasm (-8.18 % of base)
-231 : 381377.dasm (-5.57 % of base)
-193 : 398094.dasm (-4.00 % of base)
-170 : 388573.dasm (-7.42 % of base)
-155 : 388560.dasm (-7.37 % of base)
-145 : 388414.dasm (-3.70 % of base)
-130 : 380254.dasm (-13.67 % of base)
-118 : 380270.dasm (-12.83 % of base)
-117 : 383154.dasm (-13.16 % of base)
-114 : 398512.dasm (-5.83 % of base)
-112 : 245670.dasm (-2.23 % of base)
-106 : 391873.dasm (-4.97 % of base)
-105 : 31462.dasm (-5.36 % of base)
-103 : 398526.dasm (-4.83 % of base)
-103 : 391840.dasm (-4.53 % of base)
-93 : 392071.dasm (-3.43 % of base)
-89 : 204361.dasm (-4.46 % of base)
-80 : 595132.dasm (-3.90 % of base)
-77 : 391329.dasm (-1.14 % of base)
-66 : 124262.dasm (-8.43 % of base)
80 total files with Code Size differences (35 improved, 45 regressed), 20 unchanged.
Top method regressions (bytes):
1357 (38.44 % of base) : 397449.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,byref):ubyte:this (Tier1)
1238 (55.77 % of base) : 398615.dasm - ILCompiler.DependencyAnalysisFramework.DependencyAnalyzer`2[ILCompiler.DependencyAnalysisFramework.NoLogStrategy`1[System.__Canon],System.__Canon]:GetStaticDependenciesImpl(ILCompiler.DependencyAnalysisFramework.DependencyNodeCore`1[System.__Canon]):this (Tier1)
1099 (30.50 % of base) : 387990.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,byref):ubyte:this (Tier1)
1033 (51.21 % of base) : 392206.dasm - ILCompiler.DependencyAnalysisFramework.DependencyAnalyzer`2[ILCompiler.DependencyAnalysisFramework.NoLogStrategy`1[System.__Canon],System.__Canon]:GetStaticDependenciesImpl(ILCompiler.DependencyAnalysisFramework.DependencyNodeCore`1[System.__Canon]):this (Tier1)
757 (71.55 % of base) : 236562.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
675 (34.67 % of base) : 388565.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,byref):ubyte:this (Tier1)
673 (34.58 % of base) : 398561.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,byref):ubyte:this (Tier1)
642 (37.97 % of base) : 397487.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+ArrayTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+ArrayTypeKey,byref):ubyte:this (Tier1)
593 (30.46 % of base) : 388876.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+FieldForInstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+FieldForInstantiatedTypeKey,byref):ubyte:this (Tier1)
581 (40.40 % of base) : 389022.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,byref):ubyte:this (Tier1)
574 (39.72 % of base) : 397766.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,byref):ubyte:this (Tier1)
537 (32.78 % of base) : 388401.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+ArrayTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+ArrayTypeKey,byref):ubyte:this (Tier1)
490 (42.02 % of base) : 236909.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:ToArray():System.__Canon[]:this (Tier1)
456 (23.96 % of base) : 397708.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+FieldForInstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+FieldForInstantiatedTypeKey,byref):ubyte:this (Tier1)
344 (39.14 % of base) : 245838.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:ToArray():System.__Canon[]:this (Tier1)
216 (47.58 % of base) : 386768.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
214 (4.23 % of base) : 361509.dasm - Internal.TypeSystem.Ecma.EcmaModule:CreateNameLookupCache():System.Collections.Generic.Dictionary`2[System.ValueTuple`2[System.String,System.String],System.Reflection.Metadata.EntityHandle]:this (Tier1-OSR)
213 (46.81 % of base) : 384511.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
213 (46.81 % of base) : 385775.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
213 (46.81 % of base) : 386145.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
Top method improvements (bytes):
-354 (-8.18 % of base) : 397482.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:TryAddOrGetExisting(System.__Canon,byref):System.__Canon:this (Tier1)
-231 (-5.57 % of base) : 381377.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (Tier1)
-193 (-4.00 % of base) : 398094.dasm - ILCompiler.DependencyAnalysis.NodeFactory:CreateMethodEntrypoint(ILCompiler.DependencyAnalysis.TypeAndMethod):ILCompiler.DependencyAnalysis.IMethodNode:this (Tier1)
-170 (-7.42 % of base) : 388573.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,System.__Canon]:TryAddOrGetExisting(System.__Canon,byref):System.__Canon:this (Tier1)
-155 (-7.37 % of base) : 388560.dasm - Internal.TypeSystem.InstantiatedType+<GetVirtualMethods>d__23:MoveNext():ubyte:this (Tier1)
-145 (-3.70 % of base) : 388414.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:TryAddOrGetExisting(System.__Canon,byref):System.__Canon:this (Tier1)
-130 (-13.67 % of base) : 380254.dasm - System.String:Ctor(ulong):System.String (Tier1)
-118 (-12.83 % of base) : 380270.dasm - System.Buffer:Memmove[ushort](byref,byref,ulong) (Tier1)
-117 (-13.16 % of base) : 383154.dasm - System.Buffer:Memmove[ushort](byref,byref,ulong) (Tier1)
-114 (-5.83 % of base) : 398512.dasm - Internal.IL.Stubs.InterlockedIntrinsics:EmitIL(ILCompiler.CompilationModuleGroup,Internal.TypeSystem.MethodDesc):Internal.IL.MethodIL (Tier1)
-112 (-2.23 % of base) : 245670.dasm - BinderTracingTests.BinderEventListener:OnEventWritten(System.Diagnostics.Tracing.EventWrittenEventArgs):this (Tier1)
-106 (-4.97 % of base) : 391873.dasm - Internal.IL.Stubs.RuntimeHelpersIntrinsics:EmitIL(Internal.TypeSystem.MethodDesc):Internal.IL.MethodIL (Tier1)
-105 (-5.36 % of base) : 31462.dasm - System.IO.Strategies.BufferedFileStreamStrategy:WriteAsync(System.ReadOnlyMemory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this (Tier1)
-103 (-4.53 % of base) : 391840.dasm - Internal.IL.Stubs.InterlockedIntrinsics:EmitIL(ILCompiler.CompilationModuleGroup,Internal.TypeSystem.MethodDesc):Internal.IL.MethodIL (Tier1)
-103 (-4.83 % of base) : 398526.dasm - Internal.IL.Stubs.RuntimeHelpersIntrinsics:EmitIL(Internal.TypeSystem.MethodDesc):Internal.IL.MethodIL (Tier1)
-93 (-3.43 % of base) : 392071.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,byref):ubyte:this (Tier1)
-89 (-4.46 % of base) : 204361.dasm - System.IO.Strategies.BufferedFileStreamStrategy:WriteAsync(System.ReadOnlyMemory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this (Tier1)
-80 (-3.90 % of base) : 595132.dasm - Program+TestDelegateToCanonMethods:Run() (FullOpts)
-77 (-1.14 % of base) : 391329.dasm - Internal.JitInterface.CorInfoImpl:resolveVirtualMethod(ulong):ubyte:this (Tier1)
-66 (-0.74 % of base) : 390865.dasm - Internal.JitInterface.CorInfoImpl:getCallInfo(byref,ulong,ulong,int,ulong):this (Tier1)
Top method regressions (percentages):
757 (71.55 % of base) : 236562.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
1238 (55.77 % of base) : 398615.dasm - ILCompiler.DependencyAnalysisFramework.DependencyAnalyzer`2[ILCompiler.DependencyAnalysisFramework.NoLogStrategy`1[System.__Canon],System.__Canon]:GetStaticDependenciesImpl(ILCompiler.DependencyAnalysisFramework.DependencyNodeCore`1[System.__Canon]):this (Tier1)
1033 (51.21 % of base) : 392206.dasm - ILCompiler.DependencyAnalysisFramework.DependencyAnalyzer`2[ILCompiler.DependencyAnalysisFramework.NoLogStrategy`1[System.__Canon],System.__Canon]:GetStaticDependenciesImpl(ILCompiler.DependencyAnalysisFramework.DependencyNodeCore`1[System.__Canon]):this (Tier1)
216 (47.58 % of base) : 386768.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
213 (46.81 % of base) : 384511.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
213 (46.81 % of base) : 385775.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
213 (46.81 % of base) : 386145.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
210 (46.46 % of base) : 397277.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
55 (45.83 % of base) : 296430.dasm - $:f(a,b,c):int (Tier1)
55 (45.83 % of base) : 296438.dasm - k:b(c):int:this (Tier1)
202 (44.69 % of base) : 387012.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
55 (42.64 % of base) : 296440.dasm - f:b(c):int:this (Tier1)
490 (42.02 % of base) : 236909.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:ToArray():System.__Canon[]:this (Tier1)
581 (40.40 % of base) : 389022.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,byref):ubyte:this (Tier1)
186 (40.17 % of base) : 385084.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
186 (40.17 % of base) : 385338.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
574 (39.72 % of base) : 397766.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,byref):ubyte:this (Tier1)
344 (39.14 % of base) : 245838.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:ToArray():System.__Canon[]:this (Tier1)
1357 (38.44 % of base) : 397449.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,byref):ubyte:this (Tier1)
642 (37.97 % of base) : 397487.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+ArrayTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+ArrayTypeKey,byref):ubyte:this (Tier1)
Top method improvements (percentages):
-14 (-14.14 % of base) : 398473.dasm - Internal.TypeSystem.Interop.MarshalHelpers:ShouldCheckForPendingException(Internal.TypeSystem.TargetDetails,Internal.TypeSystem.PInvokeMetadata):ubyte (Tier1)
-14 (-14.14 % of base) : 391544.dasm - Internal.TypeSystem.Interop.MarshalHelpers:ShouldCheckForPendingException(Internal.TypeSystem.TargetDetails,Internal.TypeSystem.PInvokeMetadata):ubyte (Tier1)
-130 (-13.67 % of base) : 380254.dasm - System.String:Ctor(ulong):System.String (Tier1)
-117 (-13.16 % of base) : 383154.dasm - System.Buffer:Memmove[ushort](byref,byref,ulong) (Tier1)
-118 (-12.83 % of base) : 380270.dasm - System.Buffer:Memmove[ushort](byref,byref,ulong) (Tier1)
-41 (-9.21 % of base) : 388620.dasm - Internal.TypeSystem.ArrayType:InstantiateSignature(Internal.TypeSystem.Instantiation,Internal.TypeSystem.Instantiation):Internal.TypeSystem.TypeDesc:this (Tier1)
-25 (-8.62 % of base) : 235959.dasm - System.Uri:ParseScheme(System.String,byref,byref):int (Tier1)
-66 (-8.43 % of base) : 124262.dasm - System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]:Equals(System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]):ubyte:this (Tier1)
-354 (-8.18 % of base) : 397482.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:TryAddOrGetExisting(System.__Canon,byref):System.__Canon:this (Tier1)
-34 (-8.00 % of base) : 503967.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
-23 (-7.49 % of base) : 544422.dasm - InternTest:TestEntryPoint():int (FullOpts)
-170 (-7.42 % of base) : 388573.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,System.__Canon]:TryAddOrGetExisting(System.__Canon,byref):System.__Canon:this (Tier1)
-155 (-7.37 % of base) : 388560.dasm - Internal.TypeSystem.InstantiatedType+<GetVirtualMethods>d__23:MoveNext():ubyte:this (Tier1)
-53 (-7.29 % of base) : 383155.dasm - System.Buffer:Memmove(byref,byref,ulong) (Tier1)
-49 (-7.13 % of base) : 82825.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-20 (-6.35 % of base) : 240483.dasm - System.IO.FileStream:WriteAsync(System.ReadOnlyMemory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this (Tier1)
-18 (-6.16 % of base) : 397525.dasm - Internal.TypeSystem.MethodDesc:Equals(System.Object):ubyte:this (Tier1)
-18 (-6.16 % of base) : 388625.dasm - Internal.TypeSystem.MethodDesc:Equals(System.Object):ubyte:this (Tier1)
-25 (-6.00 % of base) : 387758.dasm - System.ValueTuple`2[System.__Canon,System.__Canon]:Equals(System.ValueTuple`2[System.__Canon,System.__Canon]):ubyte:this (Tier1)
-25 (-6.00 % of base) : 397404.dasm - System.ValueTuple`2[System.__Canon,System.__Canon]:Equals(System.ValueTuple`2[System.__Canon,System.__Canon]):ubyte:this (Tier1)
libraries.pmi.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 60773002 (overridden on cmd)
Total bytes of diff: 60775469 (overridden on cmd)
Total bytes of delta: 2467 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
449 : 34645.dasm (20.88 % of base)
181 : 188991.dasm (4.31 % of base)
161 : 38207.dasm (2.23 % of base)
111 : 222387.dasm (4.33 % of base)
92 : 19949.dasm (4.29 % of base)
87 : 181221.dasm (5.80 % of base)
77 : 244695.dasm (11.56 % of base)
70 : 162682.dasm (7.80 % of base)
59 : 278856.dasm (6.67 % of base)
44 : 246248.dasm (5.26 % of base)
42 : 222426.dasm (4.21 % of base)
40 : 74166.dasm (8.62 % of base)
38 : 15703.dasm (2.52 % of base)
34 : 247999.dasm (1.36 % of base)
33 : 15766.dasm (2.12 % of base)
33 : 241948.dasm (1.93 % of base)
32 : 35977.dasm (5.40 % of base)
31 : 266148.dasm (2.95 % of base)
30 : 290345.dasm (2.26 % of base)
29 : 273823.dasm (3.33 % of base)
Top file improvements (bytes):
-69 : 125899.dasm (-0.97 % of base)
-46 : 43469.dasm (-1.93 % of base)
-35 : 106165.dasm (-7.43 % of base)
-35 : 68621.dasm (-1.68 % of base)
-34 : 68611.dasm (-7.31 % of base)
-33 : 82660.dasm (-4.03 % of base)
-32 : 228296.dasm (-2.01 % of base)
-29 : 39313.dasm (-1.11 % of base)
-25 : 288179.dasm (-3.02 % of base)
-25 : 166564.dasm (-1.64 % of base)
-25 : 288180.dasm (-3.30 % of base)
-25 : 43477.dasm (-2.07 % of base)
-25 : 44234.dasm (-0.89 % of base)
-24 : 265291.dasm (-2.29 % of base)
-20 : 146758.dasm (-1.21 % of base)
-20 : 203209.dasm (-1.21 % of base)
-18 : 44291.dasm (-0.62 % of base)
-18 : 44588.dasm (-2.47 % of base)
-17 : 138286.dasm (-4.12 % of base)
-17 : 140860.dasm (-4.90 % of base)
69 total files with Code Size differences (34 improved, 35 regressed), 20 unchanged.
Top method regressions (bytes):
449 (20.88 % of base) : 34645.dasm - System.Data.DataTable:ParseSortString(System.String):System.Data.IndexField[]:this (FullOpts)
181 (4.31 % of base) : 188991.dasm - System.Xml.Serialization.XmlSerializationReader:ReadArray(System.String,System.String):System.Array:this (FullOpts)
161 (2.23 % of base) : 38207.dasm - System.Data.Common.SqlConvert:ChangeTypeForXML(System.Object,System.Type):System.Object (FullOpts)
111 (4.33 % of base) : 222387.dasm - Newtonsoft.Json.Utilities.ConvertUtils:DecimalTryParse(ushort[],int,int,byref):int (FullOpts)
92 (4.29 % of base) : 19949.dasm - System.Enum:TryParseByName[short](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
87 (5.80 % of base) : 181221.dasm - System.Xml.Schema.TypedObject:Equals(System.Xml.Schema.TypedObject):ubyte:this (FullOpts)
77 (11.56 % of base) : 244695.dasm - System.CommandLine.EnvironmentVariablesDirective+EnvironmentVariablesDirectiveAction:SetEnvVars(System.CommandLine.ParseResult):this (FullOpts)
70 (7.80 % of base) : 162682.dasm - System.ComponentModel.PropertyTabAttribute:InitializeTabClasses():this (FullOpts)
59 (6.67 % of base) : 278856.dasm - System.Net.HeaderInfoTable:ParseValueHelper(System.String,ubyte):System.String[] (FullOpts)
44 (5.26 % of base) : 246248.dasm - System.Net.WebSockets.WebSocketHandle:ParseDeflateOptions(System.ReadOnlySpan`1[ushort],System.Net.WebSockets.WebSocketDeflateOptions):System.Net.WebSockets.WebSocketDeflateOptions (FullOpts)
42 (4.21 % of base) : 222426.dasm - Newtonsoft.Json.Utilities.DateTimeUtils:WriteDateTimeString(ushort[],int,System.DateTime,System.Nullable`1[System.TimeSpan],int,int):int (FullOpts)
40 (8.62 % of base) : 74166.dasm - Microsoft.CodeAnalysis.CSharp.ValueSetFactory+DecimalValueSetFactory:Microsoft.CodeAnalysis.CSharp.IValueSetFactory.Related(int,Microsoft.CodeAnalysis.ConstantValue):Microsoft.CodeAnalysis.CSharp.IValueSet:this (FullOpts)
38 (2.52 % of base) : 15703.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericComparisonArbArrayWithComparer(Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+GenericComparer,System.Array,System.Array):int (FullOpts)
34 (1.36 % of base) : 247999.dasm - ILCompiler.Diagnostics.PdbWriter:WriteFileChecksums():this (FullOpts)
33 (2.12 % of base) : 15766.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericEqualityArbArray(ubyte,System.Collections.IEqualityComparer,System.Array,System.Array):ubyte (FullOpts)
33 (1.93 % of base) : 241948.dasm - System.Runtime.Serialization.Formatters.Binary.PrimitiveArray:SetValue(System.String,int):this (FullOpts)
32 (5.40 % of base) : 35977.dasm - System.Data.SqlTypes.SqlChars:Read(long,ushort[],int,int):long:this (FullOpts)
31 (2.95 % of base) : 266148.dasm - System.Net.HttpWebResponse:get_CharacterSet():System.String:this (FullOpts)
30 (2.26 % of base) : 290345.dasm - Interop+cgroups:TryGetMemoryStatField(System.String,byref):ubyte (FullOpts)
29 (3.33 % of base) : 273823.dasm - System.Linq.Parallel.SortHelper`2[ubyte,System.Nullable`1[int]]:BuildKeysFromSource(byref,byref):this (FullOpts)
Top method improvements (bytes):
-69 (-0.97 % of base) : 125899.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicDeclarationComputer:ComputeDeclarationsCore(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.SyntaxNode,System.Func`3[Microsoft.CodeAnalysis.SyntaxNode,System.Nullable`1[int],ubyte],ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.DeclarationInfo],System.Nullable`1[int],System.Threading.CancellationToken) (FullOpts)
-46 (-1.93 % of base) : 43469.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetDiagnosticsWithoutFiltering(int,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):this (FullOpts)
-35 (-1.68 % of base) : 68621.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckMembersAgainstBaseType(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):this (FullOpts)
-35 (-7.43 % of base) : 106165.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:GenerateAllDeclarationErrorsImpl(System.Threading.CancellationToken):this (FullOpts)
-34 (-7.31 % of base) : 68611.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
-33 (-4.03 % of base) : 82660.dasm - Microsoft.Diagnostics.Tracing.Session.TraceEventSession:CaptureState(System.Guid,ulong,int,System.Object):this (FullOpts)
-32 (-2.01 % of base) : 228296.dasm - Internal.Cryptography.PkcsHelpers:TryGetRsaOaepEncryptionPadding(System.Nullable`1[System.ReadOnlyMemory`1[ubyte]],byref,byref):ubyte (FullOpts)
-29 (-1.11 % of base) : 39313.dasm - Microsoft.CodeAnalysis.CSharp.Binder:LookupAttributeType(Microsoft.CodeAnalysis.CSharp.LookupResult,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol,System.String,int,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],int,ubyte,byref):this (FullOpts)
-25 (-2.07 % of base) : 43477.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetDiagnosticsForSyntaxTree(int,Microsoft.CodeAnalysis.SyntaxTree,System.Nullable`1[Microsoft.CodeAnalysis.Text.TextSpan],ubyte,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Diagnostic]:this (FullOpts)
-25 (-0.89 % of base) : 44234.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:DefaultVisit(Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
-25 (-3.30 % of base) : 288180.dasm - Microsoft.Extensions.Diagnostics.Metrics.Configuration.MetricsConfigureOptions:LoadInstrumentRules(Microsoft.Extensions.Diagnostics.Metrics.MetricsOptions,Microsoft.Extensions.Configuration.IConfigurationSection,int,System.String) (FullOpts)
-25 (-3.02 % of base) : 288179.dasm - Microsoft.Extensions.Diagnostics.Metrics.Configuration.MetricsConfigureOptions:LoadMeterRules(Microsoft.Extensions.Diagnostics.Metrics.MetricsOptions,Microsoft.Extensions.Configuration.IConfigurationSection,int,System.String) (FullOpts)
-25 (-1.64 % of base) : 166564.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)
-24 (-2.29 % of base) : 265291.dasm - System.Net.Mime.SmtpDateTime:ParseValue(System.String,byref):System.DateTime (FullOpts)
-20 (-1.21 % of base) : 146758.dasm - Microsoft.CodeAnalysis.DeterministicKeyBuilder:WriteCompilation(Roslyn.Utilities.JsonWriter,Microsoft.CodeAnalysis.CompilationOptions,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxTreeKey],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.MetadataReference],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[System.String,System.String]],int,System.Threading.CancellationToken):this (FullOpts)
-20 (-1.21 % of base) : 203209.dasm - Microsoft.CodeAnalysis.DeterministicKeyBuilder:WriteCompilation(Roslyn.Utilities.JsonWriter,Microsoft.CodeAnalysis.CompilationOptions,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxTreeKey],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.MetadataReference],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[System.String,System.String]],int,System.Threading.CancellationToken):this (FullOpts)
-18 (-2.47 % of base) : 44588.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTable:ContainsNameHelper(Microsoft.CodeAnalysis.CSharp.MergedNamespaceDeclaration,System.Func`2[System.String,ubyte],int,System.Func`2[Microsoft.CodeAnalysis.CSharp.SingleTypeDeclaration,ubyte],System.Threading.CancellationToken):ubyte (FullOpts)
-18 (-0.62 % of base) : 44291.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:CompileNamedType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol):this (FullOpts)
-17 (-4.12 % of base) : 138286.dasm - System.Security.Cryptography.DSA:SignData(ubyte[],int,int,System.Security.Cryptography.HashAlgorithmName,int):ubyte[]:this (FullOpts)
-17 (-4.12 % of base) : 138422.dasm - System.Security.Cryptography.ECDsa:SignData(ubyte[],int,int,System.Security.Cryptography.HashAlgorithmName,int):ubyte[]:this (FullOpts)
Top method regressions (percentages):
449 (20.88 % of base) : 34645.dasm - System.Data.DataTable:ParseSortString(System.String):System.Data.IndexField[]:this (FullOpts)
14 (13.33 % of base) : 269802.dasm - System.Collections.CaseInsensitiveHashCodeProvider:GetHashCode(System.Object):int:this (FullOpts)
77 (11.56 % of base) : 244695.dasm - System.CommandLine.EnvironmentVariablesDirective+EnvironmentVariablesDirectiveAction:SetEnvVars(System.CommandLine.ParseResult):this (FullOpts)
40 (8.62 % of base) : 74166.dasm - Microsoft.CodeAnalysis.CSharp.ValueSetFactory+DecimalValueSetFactory:Microsoft.CodeAnalysis.CSharp.IValueSetFactory.Related(int,Microsoft.CodeAnalysis.ConstantValue):Microsoft.CodeAnalysis.CSharp.IValueSet:this (FullOpts)
70 (7.80 % of base) : 162682.dasm - System.ComponentModel.PropertyTabAttribute:InitializeTabClasses():this (FullOpts)
28 (7.45 % of base) : 15697.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:check@1006(Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+GenericComparer,System.Array,System.Array,long,long,long,long):int (FullOpts)
28 (7.18 % of base) : 15760.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:check@1478-2(ubyte,System.Collections.IEqualityComparer,System.Array,System.Array,long,long,long,long):ubyte (FullOpts)
59 (6.67 % of base) : 278856.dasm - System.Net.HeaderInfoTable:ParseValueHelper(System.String,ubyte):System.String[] (FullOpts)
13 (5.88 % of base) : 249380.dasm - System.Net.Sockets.Socket:set_Ttl(short):this (FullOpts)
87 (5.80 % of base) : 181221.dasm - System.Xml.Schema.TypedObject:Equals(System.Xml.Schema.TypedObject):ubyte:this (FullOpts)
32 (5.40 % of base) : 35977.dasm - System.Data.SqlTypes.SqlChars:Read(long,ushort[],int,int):long:this (FullOpts)
44 (5.26 % of base) : 246248.dasm - System.Net.WebSockets.WebSocketHandle:ParseDeflateOptions(System.ReadOnlySpan`1[ushort],System.Net.WebSockets.WebSocketDeflateOptions):System.Net.WebSockets.WebSocketDeflateOptions (FullOpts)
21 (4.35 % of base) : 257787.dasm - System.Formats.Asn1.AsnWriter:WriteNamedBitList(System.Enum,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (FullOpts)
111 (4.33 % of base) : 222387.dasm - Newtonsoft.Json.Utilities.ConvertUtils:DecimalTryParse(ushort[],int,int,byref):int (FullOpts)
181 (4.31 % of base) : 188991.dasm - System.Xml.Serialization.XmlSerializationReader:ReadArray(System.String,System.String):System.Array:this (FullOpts)
92 (4.29 % of base) : 19949.dasm - System.Enum:TryParseByName[short](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
16 (4.23 % of base) : 278857.dasm - System.Net.HeaderInfoTable:IsDuringExpiresAttributeParsing(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
19 (4.23 % of base) : 179294.dasm - System.Xml.XmlWellFormedWriter:WriteChars(ushort[],int,int):this (FullOpts)
16 (4.22 % of base) : 289486.dasm - PathExtensions:AppendOSExeSuffix(System.String):System.String (FullOpts)
42 (4.21 % of base) : 222426.dasm - Newtonsoft.Json.Utilities.DateTimeUtils:WriteDateTimeString(ushort[],int,System.DateTime,System.Nullable`1[System.TimeSpan],int,int):int (FullOpts)
Top method improvements (percentages):
-35 (-7.43 % of base) : 106165.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:GenerateAllDeclarationErrorsImpl(System.Threading.CancellationToken):this (FullOpts)
-34 (-7.31 % of base) : 68611.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
-17 (-4.90 % of base) : 140860.dasm - System.Security.Cryptography.X509Certificates.X509SubjectAlternativeNameExtension:.ctor(ubyte[],ubyte):this (FullOpts)
-10 (-4.18 % of base) : 109724.dasm - Microsoft.CodeAnalysis.VisualBasic.MethodCompiler:VisitNamespace(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamespaceSymbol):this (FullOpts)
-17 (-4.12 % of base) : 138286.dasm - System.Security.Cryptography.DSA:SignData(ubyte[],int,int,System.Security.Cryptography.HashAlgorithmName,int):ubyte[]:this (FullOpts)
-17 (-4.12 % of base) : 138422.dasm - System.Security.Cryptography.ECDsa:SignData(ubyte[],int,int,System.Security.Cryptography.HashAlgorithmName,int):ubyte[]:this (FullOpts)
-33 (-4.03 % of base) : 82660.dasm - Microsoft.Diagnostics.Tracing.Session.TraceEventSession:CaptureState(System.Guid,ulong,int,System.Object):this (FullOpts)
-13 (-3.89 % of base) : 140519.dasm - System.Security.Cryptography.X509Certificates.X509AuthorityKeyIdentifierExtension:.ctor(ubyte[],ubyte):this (FullOpts)
-10 (-3.88 % of base) : 44289.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:VisitNamedType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):System.Object:this (FullOpts)
-10 (-3.88 % of base) : 44286.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:VisitNamespace(Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceSymbol,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):System.Object:this (FullOpts)
-8 (-3.81 % of base) : 232100.dasm - Microsoft.Build.Execution.BuildParameters:Initialize(Microsoft.Build.Collections.PropertyDictionary`1[Microsoft.Build.Execution.ProjectPropertyInstance],Microsoft.Build.Evaluation.ProjectRootElementCacheBase,Microsoft.Build.Evaluation.ToolsetProvider):this (FullOpts)
-16 (-3.60 % of base) : 291489.dasm - Microsoft.Extensions.DependencyModel.Resolution.DotNetReferenceAssembliesPathResolver:GetDefaultDotNetReferenceAssembliesPath(Microsoft.Extensions.DependencyModel.IFileSystem):System.String (FullOpts)
-11 (-3.42 % of base) : 283649.dasm - Microsoft.Diagnostics.Tools.RuntimeClient.DiagnosticsIpc.IpcClient:.cctor() (FullOpts)
-25 (-3.30 % of base) : 288180.dasm - Microsoft.Extensions.Diagnostics.Metrics.Configuration.MetricsConfigureOptions:LoadInstrumentRules(Microsoft.Extensions.Diagnostics.Metrics.MetricsOptions,Microsoft.Extensions.Configuration.IConfigurationSection,int,System.String) (FullOpts)
-10 (-3.16 % of base) : 249398.dasm - System.Net.Sockets.Socket:Close(int):this (FullOpts)
-25 (-3.02 % of base) : 288179.dasm - Microsoft.Extensions.Diagnostics.Metrics.Configuration.MetricsConfigureOptions:LoadMeterRules(Microsoft.Extensions.Diagnostics.Metrics.MetricsOptions,Microsoft.Extensions.Configuration.IConfigurationSection,int,System.String) (FullOpts)
-11 (-2.96 % of base) : 132831.dasm - Microsoft.Build.Framework.FileClassifier:.cctor() (FullOpts)
-11 (-2.94 % of base) : 166598.dasm - System.Xml.XmlDictionaryWriter:WriteXmlnsAttribute(System.String,System.String):this (FullOpts)
-4 (-2.78 % of base) : 129276.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+DocumentationCommentCompiler:VisitProperty(Microsoft.CodeAnalysis.VisualBasic.Symbols.PropertySymbol):this (FullOpts)
-7 (-2.76 % of base) : 140277.dasm - System.Security.Cryptography.SafeEvpPKeyHandle:OpenPrivateKeyFromEngine(System.String,System.String):System.Security.Cryptography.SafeEvpPKeyHandle (FullOpts)
libraries_tests.run.linux.x64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 336651500 (overridden on cmd)
Total bytes of diff: 337097707 (overridden on cmd)
Total bytes of delta: 446207 (0.13 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
5253 : 648086.dasm (52.04 % of base)
5009 : 664949.dasm (50.61 % of base)
4753 : 648088.dasm (100.53 % of base)
4751 : 664961.dasm (96.58 % of base)
4435 : 648110.dasm (105.82 % of base)
4163 : 636975.dasm (49.62 % of base)
3487 : 682466.dasm (42.89 % of base)
2792 : 602349.dasm (72.29 % of base)
2622 : 65341.dasm (71.42 % of base)
2398 : 247181.dasm (92.02 % of base)
2277 : 41461.dasm (69.15 % of base)
2264 : 82664.dasm (68.92 % of base)
2075 : 720678.dasm (54.63 % of base)
2004 : 729029.dasm (64.67 % of base)
1963 : 273019.dasm (38.11 % of base)
1915 : 460993.dasm (29.81 % of base)
1901 : 72246.dasm (38.30 % of base)
1889 : 93822.dasm (97.22 % of base)
1816 : 704621.dasm (32.61 % of base)
1808 : 195795.dasm (37.68 % of base)
Top file improvements (bytes):
-726 : 700508.dasm (-5.26 % of base)
-666 : 61600.dasm (-4.75 % of base)
-660 : 61601.dasm (-4.59 % of base)
-564 : 422394.dasm (-10.21 % of base)
-563 : 487135.dasm (-22.24 % of base)
-530 : 487125.dasm (-20.99 % of base)
-523 : 268277.dasm (-6.42 % of base)
-518 : 94126.dasm (-4.14 % of base)
-413 : 673541.dasm (-4.23 % of base)
-409 : 673510.dasm (-4.50 % of base)
-375 : 483152.dasm (-1.76 % of base)
-350 : 573375.dasm (-3.67 % of base)
-326 : 95281.dasm (-2.13 % of base)
-325 : 136802.dasm (-4.55 % of base)
-316 : 738703.dasm (-4.42 % of base)
-314 : 64830.dasm (-9.83 % of base)
-294 : 215550.dasm (-4.12 % of base)
-294 : 417474.dasm (-4.14 % of base)
-294 : 626326.dasm (-4.14 % of base)
-292 : 138621.dasm (-4.96 % of base)
85 total files with Code Size differences (38 improved, 47 regressed), 20 unchanged.
Top method regressions (bytes):
5253 (52.04 % of base) : 648086.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.Text.Json.Serialization.Tests.Point_2D_With_ExtData]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
5009 (50.61 % of base) : 664949.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.Text.Json.Serialization.Tests.Point_2D_With_ExtData]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
4753 (100.53 % of base) : 648088.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.Text.Json.Serialization.Tests.Point_2D_With_ExtData]:ReadConstructorArgumentsWithContinuation(byref,byref,System.Text.Json.JsonSerializerOptions):ubyte:this (Tier1)
4751 (96.58 % of base) : 664961.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.Text.Json.Serialization.Tests.Point_2D_With_ExtData]:ReadConstructorArguments(byref,byref,System.Text.Json.JsonSerializerOptions):this (Tier1)
4435 (105.82 % of base) : 648110.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.Text.Json.Serialization.Tests.Person_Struct]:ReadConstructorArgumentsWithContinuation(byref,byref,System.Text.Json.JsonSerializerOptions):ubyte:this (Tier1)
4163 (49.62 % of base) : 636975.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
3487 (42.89 % of base) : 682466.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
2792 (72.29 % of base) : 602349.dasm - System.Text.DBCSCodePageEncoding:ReadBestFitTable():this (Tier1-OSR)
2622 (71.42 % of base) : 65341.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.BaseTypeAnalysis:<GetManagedKind>g__dependsOnDefinitelyManagedType|4_0(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.CSharp.Symbol],byref):System.ValueTuple`2[ubyte,ubyte] (Tier1)
2398 (92.02 % of base) : 247181.dasm - System.Collections.Generic.SegmentedArrayBuilder`1[System.ValueTuple`2[System.__Canon,System.__Canon]]:AddNonICollectionRangeInlined(System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]):this (Tier1)
2277 (69.15 % of base) : 41461.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]]],System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]],int):System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]] (Tier1)
2264 (68.92 % of base) : 82664.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]]],System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]],int):System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]] (Tier1)
2075 (54.63 % of base) : 720678.dasm - Microsoft.CodeAnalysis.Workspace:<UpdateReferencesAfterAdd>g__UpdateReferencesAfterAdd|90_1(Microsoft.CodeAnalysis.Solution):Microsoft.CodeAnalysis.Solution (Tier1)
2004 (64.67 % of base) : 729029.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]]],System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]],int):System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]] (Tier1)
1963 (38.11 % of base) : 273019.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextJsonReader:CreateLibrary(Internal.Microsoft.Extensions.DependencyModel.DependencyContextJsonReader+TargetLibrary,ubyte,System.Collections.Generic.Dictionary`2[System.String,Internal.Microsoft.Extensions.DependencyModel.DependencyContextJsonReader+LibraryStub]):Internal.Microsoft.Extensions.DependencyModel.Library:this (Tier1)
1915 (29.81 % of base) : 460993.dasm - System.Xml.XmlLoader:LoadNode(ubyte):System.Xml.XmlNode:this (Tier1)
1901 (38.30 % of base) : 72246.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextJsonReader:CreateLibrary(Internal.Microsoft.Extensions.DependencyModel.DependencyContextJsonReader+TargetLibrary,ubyte,System.Collections.Generic.Dictionary`2[System.String,Internal.Microsoft.Extensions.DependencyModel.DependencyContextJsonReader+LibraryStub]):Internal.Microsoft.Extensions.DependencyModel.Library:this (Tier1)
1889 (97.22 % of base) : 93822.dasm - System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.SyntaxToken]:UnionWith(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxToken]):this (Tier1)
1816 (32.61 % of base) : 704621.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:ComputeAbstractMembers():System.Collections.Immutable.ImmutableHashSet`1[Microsoft.CodeAnalysis.CSharp.Symbol]:this (Tier1)
1808 (37.68 % of base) : 195795.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextJsonReader:CreateLibrary(Internal.Microsoft.Extensions.DependencyModel.DependencyContextJsonReader+TargetLibrary,ubyte,System.Collections.Generic.Dictionary`2[System.String,Internal.Microsoft.Extensions.DependencyModel.DependencyContextJsonReader+LibraryStub]):Internal.Microsoft.Extensions.DependencyModel.Library:this (Tier1)
Top method improvements (bytes):
-726 (-5.26 % of base) : 700508.dasm - Microsoft.Cci.MetadataWriter:SerializeMethodBodies(System.Reflection.Metadata.BlobBuilder,Microsoft.Cci.PdbWriter,byref):int[]:this (Tier1-OSR)
-666 (-4.75 % of base) : 61600.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:<CheckModifierMismatchOnImplementingMember>g__checkMethodOverride|100_0(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (Tier1)
-660 (-4.59 % of base) : 61601.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckValidNullableMethodOverride[System.ValueTuple`2[System.__Canon,ubyte]](Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Symbols.ReportMismatchInReturnType`1[System.ValueTuple`2[System.__Canon,ubyte]],Microsoft.CodeAnalysis.CSharp.Symbols.ReportMismatchInParameterType`1[System.ValueTuple`2[System.__Canon,ubyte]],System.ValueTuple`2[System.__Canon,ubyte],ubyte):ubyte (Tier1)
-564 (-10.21 % of base) : 422394.dasm - Xunit.Sdk.ReflectionMethodInfo:GetParent(System.Reflection.MethodInfo):System.Reflection.MethodInfo (Tier1)
-563 (-22.24 % of base) : 487135.dasm - System.Xml.XmlReader:ReadToNextSibling(System.String,System.String):ubyte:this (Tier1)
-530 (-20.99 % of base) : 487125.dasm - System.Xml.XmlReader:ReadToNextSibling(System.String):ubyte:this (Tier1)
-523 (-6.42 % of base) : 268277.dasm - System.Configuration.ConfigurationElement:Unmerge(System.Configuration.ConfigurationElement,System.Configuration.ConfigurationElement,int):this (Tier1)
-518 (-4.14 % of base) : 94126.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MemberSignatureComparer:Equals(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):ubyte:this (Tier1)
-413 (-4.23 % of base) : 673541.dasm - System.Text.Json.Serialization.Tests.SimpleTestClassWithObjectArrays:Verify():this (Tier1)
-409 (-4.50 % of base) : 673510.dasm - System.Text.Json.Serialization.Tests.SimpleTestClassWithSimpleObject:Verify():this (Tier1)
-375 (-1.76 % of base) : 483152.dasm - System.Xml.XmlConvertTests.ToTypeTests:TestValid(System.Object[],System.Object[],System.String,System.String[]):int:this (Tier1)
-350 (-3.67 % of base) : 573375.dasm - System.Security.Cryptography.EccKeyFormatHelper:GetSpecifiedECCurveCore(System.Security.Cryptography.Asn1.SpecifiedECDomain):System.Security.Cryptography.ECCurve (Tier1)
-326 (-2.13 % of base) : 95281.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckValidNullableMethodOverride[System.__Canon](Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Symbols.ReportMismatchInReturnType`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.Symbols.ReportMismatchInParameterType`1[System.__Canon],System.__Canon,ubyte):ubyte (Tier1)
-325 (-4.55 % of base) : 136802.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-316 (-4.42 % of base) : 738703.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-314 (-9.83 % of base) : 64830.dasm - Microsoft.CodeAnalysis.CSharp.CSharpSyntaxWalker:VisitTrailingTrivia(Microsoft.CodeAnalysis.SyntaxToken):this (Tier1)
-294 (-4.12 % of base) : 215550.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-294 (-4.14 % of base) : 417474.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-294 (-4.14 % of base) : 626326.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-292 (-4.96 % of base) : 138621.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
Top method regressions (percentages):
4435 (105.82 % of base) : 648110.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.Text.Json.Serialization.Tests.Person_Struct]:ReadConstructorArgumentsWithContinuation(byref,byref,System.Text.Json.JsonSerializerOptions):ubyte:this (Tier1)
4753 (100.53 % of base) : 648088.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.Text.Json.Serialization.Tests.Point_2D_With_ExtData]:ReadConstructorArgumentsWithContinuation(byref,byref,System.Text.Json.JsonSerializerOptions):ubyte:this (Tier1)
1889 (97.22 % of base) : 93822.dasm - System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.SyntaxToken]:UnionWith(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxToken]):this (Tier1)
4751 (96.58 % of base) : 664961.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.Text.Json.Serialization.Tests.Point_2D_With_ExtData]:ReadConstructorArguments(byref,byref,System.Text.Json.JsonSerializerOptions):this (Tier1)
1794 (95.02 % of base) : 59096.dasm - System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.SyntaxToken]:UnionWith(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxToken]):this (Tier1)
2398 (92.02 % of base) : 247181.dasm - System.Collections.Generic.SegmentedArrayBuilder`1[System.ValueTuple`2[System.__Canon,System.__Canon]]:AddNonICollectionRangeInlined(System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]):this (Tier1)
138 (92.00 % of base) : 463176.dasm - System.Xml.XPath.XPathNavigator:MoveToRoot():this (Tier1)
492 (89.45 % of base) : 245818.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:SymmetricExceptWithSameComparer(System.__Canon[],int):this (Tier1)
602 (89.05 % of base) : 242582.dasm - System.Collections.Generic.SortedSet`1[int]:AddAllElements(System.Collections.Generic.IEnumerable`1[int]):this (Tier1)
1120 (84.91 % of base) : 608709.dasm - System.Text.Encodings.Web.TextEncoder:EncodeCore(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref,byref,ubyte):int:this (Tier1)
1630 (84.85 % of base) : 517064.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:TryGetFirst(byref):System.__Canon:this (Tier1)
367 (82.66 % of base) : 374246.dasm - System.Linq.Enumerable+EnumerablePartition`1[System.__Canon]:SkipAndCount(uint,System.Collections.Generic.IEnumerator`1[System.__Canon]):uint (Tier1)
1126 (81.89 % of base) : 608675.dasm - System.Text.Encodings.Web.TextEncoder:EncodeCore(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref,byref,ubyte):int:this (Tier1-OSR)
1403 (79.58 % of base) : 218045.dasm - System.Collections.Generic.SegmentedArrayBuilder`1[int]:AddNonICollectionRangeInlined(System.Collections.Generic.IEnumerable`1[int]):this (Tier1)
1585 (77.89 % of base) : 268466.dasm - System.Xml.XPath.XPathNodeIterator:get_Count():int:this (Tier1)
1054 (76.77 % of base) : 370361.dasm - System.Linq.Lookup`2[System.__Canon,System.__Canon]:Create(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.__Canon] (Tier1)
1308 (76.27 % of base) : 668627.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
1050 (76.25 % of base) : 571602.dasm - System.Linq.Lookup`2[System.__Canon,System.__Canon]:Create(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.__Canon] (Tier1)
1053 (76.25 % of base) : 452201.dasm - System.Linq.Lookup`2[System.__Canon,System.__Canon]:Create(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.__Canon] (Tier1)
1053 (76.25 % of base) : 287883.dasm - System.Linq.Lookup`2[System.__Canon,System.__Canon]:Create(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.__Canon] (Tier1)
Top method improvements (percentages):
-19 (-30.16 % of base) : 52939.dasm - Roslyn.Utilities.MultiDictionary`2[System.__Canon,System.ValueTuple`2[System.__Canon,int]]:get_Item(System.__Canon):Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.ValueTuple`2[System.__Canon,int]]:this (Tier1)
-19 (-30.16 % of base) : 89281.dasm - Roslyn.Utilities.MultiDictionary`2[System.__Canon,System.ValueTuple`2[System.__Canon,int]]:get_Item(System.__Canon):Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.ValueTuple`2[System.__Canon,int]]:this (Tier1)
-563 (-22.24 % of base) : 487135.dasm - System.Xml.XmlReader:ReadToNextSibling(System.String,System.String):ubyte:this (Tier1)
-530 (-20.99 % of base) : 487125.dasm - System.Xml.XmlReader:ReadToNextSibling(System.String):ubyte:this (Tier1)
-14 (-18.67 % of base) : 714592.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedGlobalMethodSymbol:get_CallingConvention():int:this (Tier1)
-58 (-17.58 % of base) : 732773.dasm - System.Diagnostics.DebuggerAttributes:IsPrimitiveType(System.Object):ubyte (Tier1)
-21 (-16.94 % of base) : 95935.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.ValueTuple`2[System.__Canon,System.__Canon]]:ItemRef(int):byref:this (Tier1)
-21 (-16.94 % of base) : 232764.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[int]:ItemRef(int):byref:this (Tier1)
-213 (-16.05 % of base) : 715373.dasm - Microsoft.CodeAnalysis.ProjectInfo:With(Microsoft.CodeAnalysis.ProjectInfo+ProjectAttributes,Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.CompilationOptions],Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.ParseOptions],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.ProjectReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.MetadataReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],Microsoft.CodeAnalysis.Optional`1[System.Type]):Microsoft.CodeAnalysis.ProjectInfo:this (Tier1)
-178 (-15.00 % of base) : 396806.dasm - System.Collections.Hashtable:ContainsKey(System.Object):ubyte:this (Tier1)
-16 (-14.04 % of base) : 699233.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:get_IsImplicitConstructor():ubyte:this (Tier1)
-29 (-13.94 % of base) : 56588.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:IsImplementableInterfaceMember(Microsoft.CodeAnalysis.CSharp.Symbol):ubyte (Tier1)
-29 (-13.55 % of base) : 694312.dasm - Microsoft.CodeAnalysis.CSharp.Binder:IsMethodOrIndexer(Microsoft.CodeAnalysis.CSharp.Symbol):ubyte (Tier1)
-56 (-13.30 % of base) : 426118.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:DecryptAndProcessSafeContents(System.ReadOnlySpan`1[ushort],byref,byref,byref,byref,byref):this (Tier1)
-56 (-13.30 % of base) : 582909.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:DecryptAndProcessSafeContents(System.ReadOnlySpan`1[ushort],byref,byref,byref,byref,byref):this (Tier1)
-57 (-13.13 % of base) : 130656.dasm - System.Dynamic.Utils.TypeExtensions:GetParametersCached(System.Reflection.MethodBase):System.Reflection.ParameterInfo[] (Tier1)
-23 (-12.99 % of base) : 62249.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (Tier1)
-23 (-12.99 % of base) : 698930.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (Tier1)
-23 (-12.99 % of base) : 95446.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (Tier1)
-39 (-12.96 % of base) : 404181.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<TKey,TValue>>.Remove(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]):ubyte:this (Tier1)
librariestestsnotieredcompilation.run.linux.x64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 132477813 (overridden on cmd)
Total bytes of diff: 132486075 (overridden on cmd)
Total bytes of delta: 8262 (0.01 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
449 : 92274.dasm (21.15 % of base)
181 : 61676.dasm (4.40 % of base)
155 : 94410.dasm (2.17 % of base)
112 : 124162.dasm (7.42 % of base)
111 : 259584.dasm (4.41 % of base)
99 : 172275.dasm (4.31 % of base)
96 : 172831.dasm (8.00 % of base)
91 : 124957.dasm (3.73 % of base)
87 : 54457.dasm (3.29 % of base)
87 : 172012.dasm (6.24 % of base)
82 : 125483.dasm (4.75 % of base)
82 : 292009.dasm (6.04 % of base)
79 : 209491.dasm (1.30 % of base)
68 : 124710.dasm (3.82 % of base)
63 : 278117.dasm (2.39 % of base)
60 : 210681.dasm (2.38 % of base)
59 : 149908.dasm (7.07 % of base)
58 : 150516.dasm (5.36 % of base)
55 : 124183.dasm (6.57 % of base)
54 : 211088.dasm (0.49 % of base)
Top file improvements (bytes):
-208 : 150405.dasm (-1.40 % of base)
-77 : 277173.dasm (-0.96 % of base)
-73 : 271625.dasm (-2.03 % of base)
-68 : 52361.dasm (-2.91 % of base)
-68 : 45660.dasm (-2.91 % of base)
-62 : 207231.dasm (-4.37 % of base)
-49 : 4517.dasm (-2.11 % of base)
-40 : 172683.dasm (-3.03 % of base)
-40 : 299437.dasm (-1.37 % of base)
-40 : 45806.dasm (-1.90 % of base)
-40 : 52438.dasm (-1.91 % of base)
-37 : 195660.dasm (-2.61 % of base)
-36 : 7132.dasm (-1.70 % of base)
-34 : 7128.dasm (-8.00 % of base)
-30 : 214708.dasm (-2.56 % of base)
-28 : 119853.dasm (-0.78 % of base)
-28 : 123921.dasm (-4.03 % of base)
-28 : 123845.dasm (-4.03 % of base)
-28 : 286027.dasm (-1.69 % of base)
-28 : 121498.dasm (-2.29 % of base)
74 total files with Code Size differences (37 improved, 37 regressed), 20 unchanged.
Top method regressions (bytes):
449 (21.15 % of base) : 92274.dasm - System.Data.DataTable:ParseSortString(System.String):System.Data.IndexField[]:this (FullOpts)
181 (4.40 % of base) : 61676.dasm - System.Xml.Serialization.XmlSerializationReader:ReadArray(System.String,System.String):System.Array:this (FullOpts)
155 (2.17 % of base) : 94410.dasm - System.Data.Common.SqlConvert:ChangeTypeForXML(System.Object,System.Type):System.Object (FullOpts)
112 (7.42 % of base) : 124162.dasm - System.IO.Tests.Directory_Move:UnixWhitespacePath():this (FullOpts)
111 (4.41 % of base) : 259584.dasm - Newtonsoft.Json.Utilities.ConvertUtils:DecimalTryParse(ushort[],int,int,byref):int (FullOpts)
99 (4.31 % of base) : 172275.dasm - System.Xml.XmlSchemaTests.TestData:.cctor() (FullOpts)
96 (8.00 % of base) : 172831.dasm - System.Xml.XmlSchemaTests.TC_SchemaSet_RemoveRecursive:v9():this (FullOpts)
91 (3.73 % of base) : 124957.dasm - System.IO.Tests.Enumeration.MatchCasingTests:MatchCase():this (FullOpts)
87 (3.29 % of base) : 54457.dasm - __OptionValidationStaticInstances.<Validators_g>FC6C8D0237F0299AAFDF6994EF736626342A9503CFB1CEAB9041E9AEC04C81065____Attributes:.cctor() (FullOpts)
87 (6.24 % of base) : 172012.dasm - System.Xml.Schema.TypedObject:Equals(System.Xml.Schema.TypedObject):ubyte:this (FullOpts)
82 (4.75 % of base) : 125483.dasm - System.IO.Tests.Enumeration.RecursionDepthTests:EnumerateDirectory_WithSpecifedRecursionDepth(int,int):this (FullOpts)
82 (6.04 % of base) : 292009.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex16551_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
79 (1.30 % of base) : 209491.dasm - System.Tests.StringTests:TrimWhiteSpaceMultipleTimes_Memory() (FullOpts)
68 (3.82 % of base) : 124710.dasm - System.IO.Tests.Enumeration.MatchTypesTests:StarDotBehavior():this (FullOpts)
63 (2.39 % of base) : 278117.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2458_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
60 (2.38 % of base) : 210681.dasm - System.Tests.StringTests:TrimWhiteSpaceMultipleTimes() (FullOpts)
59 (7.07 % of base) : 149908.dasm - System.Net.HeaderInfoTable:ParseValueHelper(System.String,ubyte):System.String[] (FullOpts)
58 (5.36 % of base) : 150516.dasm - Systen.Net.Mail.Tests.LoopbackSmtpServer+ParsedMailMessage:Parse(System.String):Systen.Net.Mail.Tests.LoopbackSmtpServer+ParsedMailMessage (FullOpts)
55 (6.57 % of base) : 124183.dasm - System.IO.Tests.Directory_Move:ToNewDirectoryButWithDifferentCasing():this (FullOpts)
54 (0.49 % of base) : 211088.dasm - System.Tests.EnumTests+<Parse_TestData>d__0:MoveNext():ubyte:this (FullOpts)
Top method improvements (bytes):
-208 (-1.40 % of base) : 150405.dasm - Systen.Net.Mail.Tests.LoopbackSmtpServer+<HandleConnectionAsync>d__62:MoveNext():this (FullOpts)
-77 (-0.96 % of base) : 277173.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4570_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-73 (-2.03 % of base) : 271625.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex461_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-68 (-2.91 % of base) : 52361.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetDiagnosticsWithoutFiltering(int,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):this (FullOpts)
-68 (-2.91 % of base) : 45660.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetDiagnosticsWithoutFiltering(int,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):this (FullOpts)
-62 (-4.37 % of base) : 207231.dasm - System.Tests.TimeZoneInfoTests:NJulianRuleTest(System.String,int,int,ubyte) (FullOpts)
-49 (-2.11 % of base) : 4517.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetDiagnosticsWithoutSeverityFiltering(int,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Predicate`1[Microsoft.CodeAnalysis.CSharp.Symbol],System.Threading.CancellationToken):this (FullOpts)
-40 (-1.90 % of base) : 45806.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckMembersAgainstBaseType(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):this (FullOpts)
-40 (-1.91 % of base) : 52438.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckMembersAgainstBaseType(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):this (FullOpts)
-40 (-1.37 % of base) : 299437.dasm - System.Threading.Tasks.Tests.ParallelForTests:TestParallelForEachConversions() (FullOpts)
-40 (-3.03 % of base) : 172683.dasm - System.Xml.XmlSchemaTests.TC_SchemaSet_Misc:v112():this (FullOpts)
-37 (-2.61 % of base) : 195660.dasm - (dynamicClass):ReadArrayOfKeyValueOfbooleancharFromJsonIsGetOnly(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,System.Runtime.Serialization.DataContracts.CollectionDataContract) (FullOpts)
-36 (-1.70 % of base) : 7132.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckMembersAgainstBaseType(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):this (FullOpts)
-34 (-8.00 % of base) : 7128.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
-30 (-2.56 % of base) : 214708.dasm - System.Security.Cryptography.Cose.Tests.CoseHeaderMapTests:SetValue_InvalidCoseHeaderValue():this (FullOpts)
-28 (-0.78 % of base) : 119853.dasm - System.Formats.Tar.Tests.TarFile_ExtractToDirectoryAsync_File_Tests+<SetsLastModifiedTimeOnExtractedDirectories>d__5:MoveNext():this (FullOpts)
-28 (-4.03 % of base) : 123921.dasm - System.IO.Tests.FileStream_Dispose+<>c__DisplayClass5_1:<NoDispose_CallsVirtualDisposeFalseArg_ThrowsDuringFlushWriteBuffer_FinalizerWontThrow>b__2():this (FullOpts)
-28 (-4.03 % of base) : 123845.dasm - System.IO.Tests.FileStream_Dispose+<>c__DisplayClass5_1:<NoDispose_CallsVirtualDisposeFalseArg_ThrowsDuringFlushWriteBuffer_FinalizerWontThrow>b__2():this (FullOpts)
-28 (-1.69 % of base) : 286027.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5933_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-28 (-2.29 % of base) : 121498.dasm - System.Text.Unicode.ParsedUnicodeData:ProcessCaseFoldingFile():System.Collections.Generic.Dictionary`2[int,int] (FullOpts)
Top method regressions (percentages):
449 (21.15 % of base) : 92274.dasm - System.Data.DataTable:ParseSortString(System.String):System.Data.IndexField[]:this (FullOpts)
14 (13.33 % of base) : 74537.dasm - System.Collections.CaseInsensitiveHashCodeProvider:GetHashCode(System.Object):int:this (FullOpts)
40 (8.58 % of base) : 146010.dasm - System.SpanTests.SpanTests:<EnumerateLines_Battery>g__ParseRange|145_3(System.String):System.Range (FullOpts)
30 (8.04 % of base) : 177236.dasm - System.Xml.NameTableTests.CNameTableTestModule:Init(System.Object):int:this (FullOpts)
96 (8.00 % of base) : 172831.dasm - System.Xml.XmlSchemaTests.TC_SchemaSet_RemoveRecursive:v9():this (FullOpts)
112 (7.42 % of base) : 124162.dasm - System.IO.Tests.Directory_Move:UnixWhitespacePath():this (FullOpts)
52 (7.23 % of base) : 210865.dasm - System.Tests.StringTests:OnlyWhiteSpaceTrim() (FullOpts)
59 (7.07 % of base) : 149908.dasm - System.Net.HeaderInfoTable:ParseValueHelper(System.String,ubyte):System.String[] (FullOpts)
20 (6.99 % of base) : 214484.dasm - System.Security.Cryptography.Cose.Tests.CoseMessageTests_Sign`1[System.__Canon]:SignWithNullContent():this (FullOpts)
26 (6.72 % of base) : 57518.dasm - Microsoft.Extensions.Primitives.StringSegmentTest:StringSegment_Compare_Lesser(Microsoft.Extensions.Primitives.StringSegment,Microsoft.Extensions.Primitives.StringSegmentComparer):this (FullOpts)
26 (6.67 % of base) : 57487.dasm - Microsoft.Extensions.Primitives.StringSegmentTest:StringSegment_Compare_Equal(Microsoft.Extensions.Primitives.StringSegment,Microsoft.Extensions.Primitives.StringSegmentComparer):this (FullOpts)
55 (6.57 % of base) : 124183.dasm - System.IO.Tests.Directory_Move:ToNewDirectoryButWithDifferentCasing():this (FullOpts)
14 (6.33 % of base) : 79958.dasm - System.ComponentModel.DataAnnotations.Tests.DeniedValuesAttributeTests:Ctor_ValuesPropertyReturnsTheSameArray(System.Object[]):this (FullOpts)
87 (6.24 % of base) : 172012.dasm - System.Xml.Schema.TypedObject:Equals(System.Xml.Schema.TypedObject):ubyte:this (FullOpts)
82 (6.04 % of base) : 292009.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex16551_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
33 (5.80 % of base) : 124182.dasm - System.IO.Tests.Directory_Move:SameDirectoryWithDifferentCasing_WithFileContent():this (FullOpts)
27 (5.68 % of base) : 28394.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object,int,int) (FullOpts)
27 (5.67 % of base) : 28392.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object,int,int) (FullOpts)
32 (5.58 % of base) : 96575.dasm - System.Data.SqlTypes.SqlChars:Read(long,ushort[],int,int):long:this (FullOpts)
45 (5.55 % of base) : 210635.dasm - System.Tests.StringTests:MakeSureNoTrimChecksGoOutOfRange() (FullOpts)
Top method improvements (percentages):
-34 (-8.00 % of base) : 7128.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
-26 (-7.16 % of base) : 57630.dasm - Microsoft.Extensions.Primitives.StringSegmentTest:StringSegment_Compare_Greater(Microsoft.Extensions.Primitives.StringSegment,Microsoft.Extensions.Primitives.StringSegmentComparer):this (FullOpts)
-21 (-5.24 % of base) : 226294.dasm - System.Security.Cryptography.X509Certificates.Tests.X500DistinguishedNameEncodingTests:InvalidInput(System.String,System.String) (FullOpts)
-17 (-4.87 % of base) : 222316.dasm - System.Security.Cryptography.X509Certificates.Tests.ExtensionsTests.SubjectAlternativeNameTests+<>c__DisplayClass8_0:<VerifyDecodeFailure>b__0():System.Object:this (FullOpts)
-17 (-4.40 % of base) : 220942.dasm - System.Security.Cryptography.X509Certificates.Tests.PfxFormatTests_SingleCert:ReadEmptyPfx(ubyte[],System.String):this (FullOpts)
-62 (-4.37 % of base) : 207231.dasm - System.Tests.TimeZoneInfoTests:NJulianRuleTest(System.String,int,int,ubyte) (FullOpts)
-12 (-4.36 % of base) : 146634.dasm - System.Net.Sockets.Socket:Close(int):this (FullOpts)
-17 (-4.12 % of base) : 214805.dasm - System.Security.Cryptography.DSA:SignData(ubyte[],int,int,System.Security.Cryptography.HashAlgorithmName,int):ubyte[]:this (FullOpts)
-28 (-4.03 % of base) : 123921.dasm - System.IO.Tests.FileStream_Dispose+<>c__DisplayClass5_1:<NoDispose_CallsVirtualDisposeFalseArg_ThrowsDuringFlushWriteBuffer_FinalizerWontThrow>b__2():this (FullOpts)
-28 (-4.03 % of base) : 123845.dasm - System.IO.Tests.FileStream_Dispose+<>c__DisplayClass5_1:<NoDispose_CallsVirtualDisposeFalseArg_ThrowsDuringFlushWriteBuffer_FinalizerWontThrow>b__2():this (FullOpts)
-10 (-3.88 % of base) : 45962.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:VisitNamedType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):System.Object:this (FullOpts)
-10 (-3.88 % of base) : 8016.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:VisitNamedType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):System.Object:this (FullOpts)
-10 (-3.88 % of base) : 52553.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:VisitNamedType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):System.Object:this (FullOpts)
-10 (-3.88 % of base) : 45957.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:VisitNamespace(Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceSymbol,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):System.Object:this (FullOpts)
-10 (-3.88 % of base) : 13139.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:VisitNamespace(Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceSymbol,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):System.Object:this (FullOpts)
-10 (-3.88 % of base) : 52548.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:VisitNamespace(Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceSymbol,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):System.Object:this (FullOpts)
-13 (-3.87 % of base) : 220538.dasm - System.Security.Cryptography.X509Certificates.Tests.ExtensionsTests.AuthorityKeyIdentifierTests+<>c__DisplayClass15_0:<DecodeInvalid>b__0():System.Object:this (FullOpts)
-22 (-3.74 % of base) : 220945.dasm - System.Security.Cryptography.X509Certificates.Tests.PfxFormatTests_SingleCert:ReadWrongPassword(ubyte[],System.String):this (FullOpts)
-22 (-3.38 % of base) : 220814.dasm - System.Security.Cryptography.X509Certificates.Tests.PfxFormatTests_Collection:ReadWrongPassword(ubyte[],System.String):this (FullOpts)
-18 (-3.35 % of base) : 713.dasm - Microsoft.DotNet.RemoteExecutor.RemoteExecutor:.cctor() (FullOpts)
osx arm64
Diffs are based on 2,262,128 contexts (921,087 MinOpts, 1,341,041 FullOpts).
MISSED contexts: base: 3 (0.00%), diff: 77 (0.00%)
Overall (+202,992 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run_pgo.osx.arm64.checked.mch |
24,713,208 |
-9,188 |
| coreclr_tests.run.osx.arm64.checked.mch |
476,227,036 |
+16,244 |
| libraries_tests.run.osx.arm64.Release.mch |
312,891,008 |
+199,048 |
| librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
162,507,756 |
-3,112 |
FullOpts (+202,992 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run_pgo.osx.arm64.checked.mch |
8,957,196 |
-9,188 |
| coreclr_tests.run.osx.arm64.checked.mch |
150,934,824 |
+16,244 |
| libraries_tests.run.osx.arm64.Release.mch |
111,510,444 |
+199,048 |
| librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
149,448,344 |
-3,112 |
Example diffs
benchmarks.run_pgo.osx.arm64.checked.mch
-48 (-6.94%) : 53113.dasm - System.Linq.Enumerable:Countushort:int (Tier1-OSR)
@@ -11,143 +11,214 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Collections.Generic.IEnumerable`1[ushort]>
-; V01 arg1 [V01,T03] ( 8,301.97) ref -> x19 class-hnd single-def <System.Func`2[ushort,ubyte]>
-; V02 loc0 [V02,T10] ( 5,198.10) int -> [fp+0xD4] do-not-enreg[Z] EH-live tier0-frame
-; V03 loc1 [V03,T00] ( 21,901.02) ref -> [fp+0xC8] do-not-enreg[H] class-hnd EH-live tier0-frame <System.Collections.Generic.IEnumerator`1[ushort]>
-; V04 loc2 [V04,T05] ( 7,299.97) ushort -> x1
+; V01 arg1 [V01,T10] ( 7, 3.04) ref -> x19 class-hnd single-def <System.Func`2[ushort,ubyte]>
+; V02 loc0 [V02,T07] ( 5,199.98) int -> [fp+0xB4] do-not-enreg[Z] EH-live tier0-frame
+; V03 loc1 [V03,T00] ( 21,901.02) ref -> [fp+0xA8] do-not-enreg[H] class-hnd EH-live tier0-frame <System.Collections.Generic.IEnumerator`1[ushort]>
+; V04 loc2 [V04,T06] ( 6,199.98) ushort -> x1
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref "guarded devirt return temp"
;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.String>
; V08 tmp3 [V08,T08] ( 4,199.98) int -> x1 "guarded devirt return temp"
;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.CharEnumerator>
-; V10 tmp5 [V10,T09] ( 4,199.98) int -> x0 "guarded devirt return temp"
+; V10 tmp5 [V10,T15] ( 2, 0 ) int -> x0 "guarded devirt return temp"
;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp" <Jil.Deserialize.InlineDeserializer`1+<>c[System.__Canon]>
-; V12 tmp7 [V12,T01] ( 5,200.00) int -> x2 "guarded devirt return temp"
+; V12 tmp7 [V12,T01] ( 5,200.00) int -> x1 "guarded devirt return temp"
;* V13 tmp8 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.CharEnumerator>
-;* V14 tmp9 [V14,T14] ( 0, 0 ) int -> zero-ref "OSR entry state var"
+;* V14 tmp9 [V14,T13] ( 0, 0 ) int -> zero-ref "OSR entry state var"
;* V15 tmp10 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.CharEnumerator>
-; V16 tmp11 [V16,T07] ( 6,299.97) int -> x23 "Inline stloc first use temp"
-; V17 tmp12 [V17,T06] ( 6,299.97) ref -> x24 class-hnd exact "Inline stloc first use temp" <System.String>
-; V18 tmp13 [V18,T02] ( 6,600.00) int -> x21 "Inline stloc first use temp"
-; V19 tmp14 [V19,T04] ( 6,300.00) int -> x22 "Inline stloc first use temp"
-; V20 PSPSym [V20,T15] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
-; V21 cse0 [V21,T11] ( 2,197.98) int -> x1 "CSE - aggressive"
-; V22 cse1 [V22,T12] ( 6, 3.04) long -> x20 hoist multi-def "CSE - aggressive"
-; V23 cse2 [V23,T13] ( 2, 2.00) int -> x1 "CSE - moderate"
+; V16 tmp11 [V16,T05] ( 6,299.97) int -> x0 "Inline stloc first use temp"
+; V17 tmp12 [V17,T04] ( 6,299.97) ref -> x11 class-hnd exact "Inline stloc first use temp" <System.String>
+; V18 tmp13 [V18,T02] ( 6,600.00) int -> x0 "Inline stloc first use temp"
+; V19 tmp14 [V19,T03] ( 6,300.00) int -> x11 "Inline stloc first use temp"
+; V20 PSPSym [V20,T14] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
+; V21 cse0 [V21,T09] ( 2,197.98) int -> x1 "CSE - aggressive"
+; V22 cse1 [V22,T11] ( 6, 3.04) long -> x20 hoist multi-def "CSE - aggressive"
+; V23 cse2 [V23,T12] ( 2, 2.00) int -> x1 "CSE - moderate"
;
; Lcl frame size = 16
G_M33418_IG01: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
+ stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
- stp x23, x24, [sp, #0x40]
mov fp, sp
- add xip1, sp, #240
+ add xip1, sp, #208
str xip1, [fp, #0x18] // [V20 PSPSym]
- ldr x19, [fp, #0xD8]
+ ldr x19, [fp, #0xB8]
; gcrRegs +[x19]
- ;; size=32 bbWeight=0.02 PerfScore 0.16
+ ;; size=24 bbWeight=0.02 PerfScore 0.12
G_M33418_IG02: ; bbWeight=0.02, gcVars=0000000000000001 {V03}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V03}
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ; gcrRegs +[x1]
- cbz x1, G_M33418_IG15
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ldr x20, [x1]
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ cbz x0, G_M33418_IG08
+ cbz x19, G_M33418_IG08
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ldr x20, [x0]
+ movz x0, #0xD1FFAB1E
+ ; gcrRegs -[x0]
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
+ cmp x20, x0
+ bne G_M33418_IG08
+ ldr x0, [x19, #0x18]
+ movz x11, #0xD1FFAB1E // code for Jil.Deserialize.InlineDeserializer`1+<>c[System.__Canon]:<BuildWithNewDelegate>b__103_0(ushort):ubyte:this
+ movk x11, #0xD1FFAB1E LSL #16
+ movk x11, #1 LSL #32
+ cmp x0, x11
+ bne G_M33418_IG08
+ b G_M33418_IG04
+ ;; size=68 bbWeight=0.02 PerfScore 0.38
+G_M33418_IG03: ; bbWeight=98.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x19]
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ ldr w0, [x0, #0x10]
+ ; gcrRegs -[x0]
+ ldr x11, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x11]
+ ldr x11, [x11, #0x08]
+ ldr w1, [x11, #0x08]
+ cmp w1, w0
+ bls G_M33418_IG20
+ add x11, x11, #12
+ ; gcrRegs -[x11]
+ ; byrRegs +[x11]
+ ldrh w1, [x11, w0, UXTW #2]
+ cmp w1, #10
+ bne G_M33418_IG04
+ ldr w0, [fp, #0xB4] // [V02 loc0]
+ adds w1, w0, #1
+ bvs G_M33418_IG16
+ str w1, [fp, #0xB4] // [V02 loc0]
+ ;; size=60 bbWeight=98.99 PerfScore 2375.76
+G_M33418_IG04: ; bbWeight=99.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x11]
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ ldr w0, [x0, #0x10]
+ ; gcrRegs -[x0]
+ add w0, w0, #1
+ ldr x11, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x11]
+ ldr x11, [x11, #0x08]
+ ldr w11, [x11, #0x08]
+ ; gcrRegs -[x11]
+ cmp w0, w11
+ bge G_M33418_IG06
+ ;; size=32 bbWeight=99.00 PerfScore 1485.00
+G_M33418_IG05: ; bbWeight=396.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr x11, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x11]
+ str w0, [x11, #0x10]
+ b G_M33418_IG03
+ ;; size=12 bbWeight=396.00 PerfScore 1584.00
+G_M33418_IG06: ; bbWeight=99.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x11]
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ str w11, [x0, #0x10]
+ mov w1, wzr
+ cbz w1, G_M33418_IG21
+ ;; size=16 bbWeight=99.00 PerfScore 445.50
+G_M33418_IG07: ; bbWeight=98.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ b G_M33418_IG03
+ ;; size=4 bbWeight=98.99 PerfScore 98.99
+G_M33418_IG08: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x19]
+ ldr x11, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x11]
+ ldr x20, [x11]
+ b G_M33418_IG11
+ ;; size=12 bbWeight=0.00 PerfScore 0.00
+G_M33418_IG09: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x11]
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ ldr x20, [x0]
+ movz x0, #0xD1FFAB1E
+ ; gcrRegs -[x0]
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
+ cmp x20, x0
+ bne G_M33418_IG19
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ ldr w0, [x0, #0x10]
+ ; gcrRegs -[x0]
+ ldr x11, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x11]
+ ldr x11, [x11, #0x08]
+ ldr w1, [x11, #0x08]
+ cmp w1, w0
+ bls G_M33418_IG20
+ add x11, x11, #12
+ ; gcrRegs -[x11]
+ ; byrRegs +[x11]
+ ldrh w1, [x11, w0, UXTW #2]
+ ldr x0, [x19, #0x18]
+ movz x11, #0xD1FFAB1E
+ ; byrRegs -[x11]
+ movk x11, #0xD1FFAB1E LSL #16
+ movk x11, #1 LSL #32
+ cmp x0, x11
+ bne G_M33418_IG18
+ cmp w1, #10
+ bne G_M33418_IG11
+ ;; size=96 bbWeight=1.00 PerfScore 33.50
+G_M33418_IG10: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ldr w0, [fp, #0xB4] // [V02 loc0]
+ adds w0, w0, #1
+ bvs G_M33418_IG16
+ str w0, [fp, #0xB4] // [V02 loc0]
+ ;; size=16 bbWeight=1.00 PerfScore 4.50
+G_M33418_IG11: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
movz x1, #0xD1FFAB1E
- ; gcrRegs -[x1]
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
cmp x20, x1
- bne G_M33418_IG15
- b G_M33418_IG05
- ;; size=40 bbWeight=0.02 PerfScore 0.24
-G_M33418_IG03: ; bbWeight=98.99, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ; gcrRegs +[x1]
- ldr w23, [x1, #0x10]
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ldr x24, [x1, #0x08]
- ; gcrRegs +[x24]
- ldr w1, [x24, #0x08]
- ; gcrRegs -[x1]
- cmp w1, w23
- bls G_M33418_IG12
- add x1, x24, #12
- ; byrRegs +[x1]
- ldrh w1, [x1, w23, UXTW #2]
- ; byrRegs -[x1]
- ldr x0, [x19, #0x18]
- movz x2, #0xD1FFAB1E // code for Jil.Deserialize.InlineDeserializer`1+<>c[System.__Canon]:<BuildWithNewDelegate>b__103_0(ushort):ubyte:this
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #1 LSL #32
- cmp x0, x2
- bne G_M33418_IG07
- cmp w1, #10
- bne G_M33418_IG05
- ;; size=68 bbWeight=98.99 PerfScore 2524.25
-G_M33418_IG04: ; bbWeight=98.99, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x24]
- ldr w1, [fp, #0xD4] // [V02 loc0]
- adds w1, w1, #1
- bvs G_M33418_IG09
- str w1, [fp, #0xD4] // [V02 loc0]
- ;; size=16 bbWeight=98.99 PerfScore 445.46
-G_M33418_IG05: ; bbWeight=99.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ; gcrRegs +[x1]
- ldr w1, [x1, #0x10]
- ; gcrRegs -[x1]
- add w21, w1, #1
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ; gcrRegs +[x1]
- ldr x1, [x1, #0x08]
- ldr w22, [x1, #0x08]
- cmp w21, w22
- bge G_M33418_IG13
- ;; size=32 bbWeight=99.00 PerfScore 1485.00
-G_M33418_IG06: ; bbWeight=396.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x1]
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ; gcrRegs +[x1]
- str w21, [x1, #0x10]
- b G_M33418_IG03
...
-48 (-6.94%) : 35510.dasm - System.Linq.Enumerable:Countushort:int (Tier1-OSR)
@@ -11,143 +11,214 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Collections.Generic.IEnumerable`1[ushort]>
-; V01 arg1 [V01,T03] ( 8,301.97) ref -> x19 class-hnd single-def <System.Func`2[ushort,ubyte]>
-; V02 loc0 [V02,T10] ( 5,198.10) int -> [fp+0xD4] do-not-enreg[Z] EH-live tier0-frame
-; V03 loc1 [V03,T00] ( 21,901.02) ref -> [fp+0xC8] do-not-enreg[H] class-hnd EH-live tier0-frame <System.Collections.Generic.IEnumerator`1[ushort]>
-; V04 loc2 [V04,T05] ( 7,299.97) ushort -> x1
+; V01 arg1 [V01,T10] ( 7, 3.04) ref -> x19 class-hnd single-def <System.Func`2[ushort,ubyte]>
+; V02 loc0 [V02,T07] ( 5,199.98) int -> [fp+0xB4] do-not-enreg[Z] EH-live tier0-frame
+; V03 loc1 [V03,T00] ( 21,901.02) ref -> [fp+0xA8] do-not-enreg[H] class-hnd EH-live tier0-frame <System.Collections.Generic.IEnumerator`1[ushort]>
+; V04 loc2 [V04,T06] ( 6,199.98) ushort -> x1
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref "guarded devirt return temp"
;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.String>
; V08 tmp3 [V08,T08] ( 4,199.98) int -> x1 "guarded devirt return temp"
;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.CharEnumerator>
-; V10 tmp5 [V10,T09] ( 4,199.98) int -> x0 "guarded devirt return temp"
+; V10 tmp5 [V10,T15] ( 2, 0 ) int -> x0 "guarded devirt return temp"
;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp" <Jil.Deserialize.InlineDeserializer`1+<>c[System.__Canon]>
-; V12 tmp7 [V12,T01] ( 5,200 ) int -> x2 "guarded devirt return temp"
+; V12 tmp7 [V12,T01] ( 5,200 ) int -> x1 "guarded devirt return temp"
;* V13 tmp8 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.CharEnumerator>
-;* V14 tmp9 [V14,T14] ( 0, 0 ) int -> zero-ref "OSR entry state var"
+;* V14 tmp9 [V14,T13] ( 0, 0 ) int -> zero-ref "OSR entry state var"
;* V15 tmp10 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.CharEnumerator>
-; V16 tmp11 [V16,T07] ( 6,299.97) int -> x23 "Inline stloc first use temp"
-; V17 tmp12 [V17,T06] ( 6,299.97) ref -> x24 class-hnd exact "Inline stloc first use temp" <System.String>
-; V18 tmp13 [V18,T02] ( 6,600 ) int -> x21 "Inline stloc first use temp"
-; V19 tmp14 [V19,T04] ( 6,300 ) int -> x22 "Inline stloc first use temp"
-; V20 PSPSym [V20,T15] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
-; V21 cse0 [V21,T11] ( 2,197.98) int -> x1 "CSE - aggressive"
-; V22 cse1 [V22,T12] ( 6, 3.04) long -> x20 hoist multi-def "CSE - aggressive"
-; V23 cse2 [V23,T13] ( 2, 2.00) int -> x1 "CSE - moderate"
+; V16 tmp11 [V16,T05] ( 6,299.97) int -> x0 "Inline stloc first use temp"
+; V17 tmp12 [V17,T04] ( 6,299.97) ref -> x11 class-hnd exact "Inline stloc first use temp" <System.String>
+; V18 tmp13 [V18,T02] ( 6,600 ) int -> x0 "Inline stloc first use temp"
+; V19 tmp14 [V19,T03] ( 6,300 ) int -> x11 "Inline stloc first use temp"
+; V20 PSPSym [V20,T14] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
+; V21 cse0 [V21,T09] ( 2,197.98) int -> x1 "CSE - aggressive"
+; V22 cse1 [V22,T11] ( 6, 3.04) long -> x20 hoist multi-def "CSE - aggressive"
+; V23 cse2 [V23,T12] ( 2, 2.00) int -> x1 "CSE - moderate"
;
; Lcl frame size = 16
G_M33418_IG01: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
+ stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
- stp x23, x24, [sp, #0x40]
mov fp, sp
- add xip1, sp, #240
+ add xip1, sp, #208
str xip1, [fp, #0x18] // [V20 PSPSym]
- ldr x19, [fp, #0xD8]
+ ldr x19, [fp, #0xB8]
; gcrRegs +[x19]
- ;; size=32 bbWeight=0.02 PerfScore 0.16
+ ;; size=24 bbWeight=0.02 PerfScore 0.12
G_M33418_IG02: ; bbWeight=0.02, gcVars=0000000000000001 {V03}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V03}
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ; gcrRegs +[x1]
- cbz x1, G_M33418_IG15
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ldr x20, [x1]
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ cbz x0, G_M33418_IG08
+ cbz x19, G_M33418_IG08
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ldr x20, [x0]
+ movz x0, #0xD1FFAB1E
+ ; gcrRegs -[x0]
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
+ cmp x20, x0
+ bne G_M33418_IG08
+ ldr x0, [x19, #0x18]
+ movz x11, #0xD1FFAB1E // code for Jil.Deserialize.InlineDeserializer`1+<>c[System.__Canon]:<BuildWithNewDelegate>b__103_0(ushort):ubyte:this
+ movk x11, #0xD1FFAB1E LSL #16
+ movk x11, #1 LSL #32
+ cmp x0, x11
+ bne G_M33418_IG08
+ b G_M33418_IG04
+ ;; size=68 bbWeight=0.02 PerfScore 0.38
+G_M33418_IG03: ; bbWeight=98.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x19]
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ ldr w0, [x0, #0x10]
+ ; gcrRegs -[x0]
+ ldr x11, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x11]
+ ldr x11, [x11, #0x08]
+ ldr w1, [x11, #0x08]
+ cmp w1, w0
+ bls G_M33418_IG20
+ add x11, x11, #12
+ ; gcrRegs -[x11]
+ ; byrRegs +[x11]
+ ldrh w1, [x11, w0, UXTW #2]
+ cmp w1, #10
+ bne G_M33418_IG04
+ ldr w0, [fp, #0xB4] // [V02 loc0]
+ adds w1, w0, #1
+ bvs G_M33418_IG16
+ str w1, [fp, #0xB4] // [V02 loc0]
+ ;; size=60 bbWeight=98.99 PerfScore 2375.76
+G_M33418_IG04: ; bbWeight=99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x11]
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ ldr w0, [x0, #0x10]
+ ; gcrRegs -[x0]
+ add w0, w0, #1
+ ldr x11, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x11]
+ ldr x11, [x11, #0x08]
+ ldr w11, [x11, #0x08]
+ ; gcrRegs -[x11]
+ cmp w0, w11
+ bge G_M33418_IG06
+ ;; size=32 bbWeight=99 PerfScore 1485.00
+G_M33418_IG05: ; bbWeight=396, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr x11, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x11]
+ str w0, [x11, #0x10]
+ b G_M33418_IG03
+ ;; size=12 bbWeight=396 PerfScore 1584.00
+G_M33418_IG06: ; bbWeight=99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x11]
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ str w11, [x0, #0x10]
+ mov w1, wzr
+ cbz w1, G_M33418_IG21
+ ;; size=16 bbWeight=99 PerfScore 445.50
+G_M33418_IG07: ; bbWeight=98.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ b G_M33418_IG03
+ ;; size=4 bbWeight=98.99 PerfScore 98.99
+G_M33418_IG08: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x19]
+ ldr x11, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x11]
+ ldr x20, [x11]
+ b G_M33418_IG11
+ ;; size=12 bbWeight=0.00 PerfScore 0.00
+G_M33418_IG09: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x11]
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ ldr x20, [x0]
+ movz x0, #0xD1FFAB1E
+ ; gcrRegs -[x0]
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
+ cmp x20, x0
+ bne G_M33418_IG19
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ ldr w0, [x0, #0x10]
+ ; gcrRegs -[x0]
+ ldr x11, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x11]
+ ldr x11, [x11, #0x08]
+ ldr w1, [x11, #0x08]
+ cmp w1, w0
+ bls G_M33418_IG20
+ add x11, x11, #12
+ ; gcrRegs -[x11]
+ ; byrRegs +[x11]
+ ldrh w1, [x11, w0, UXTW #2]
+ ldr x0, [x19, #0x18]
+ movz x11, #0xD1FFAB1E
+ ; byrRegs -[x11]
+ movk x11, #0xD1FFAB1E LSL #16
+ movk x11, #1 LSL #32
+ cmp x0, x11
+ bne G_M33418_IG18
+ cmp w1, #10
+ bne G_M33418_IG11
+ ;; size=96 bbWeight=1.00 PerfScore 33.50
+G_M33418_IG10: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ldr w0, [fp, #0xB4] // [V02 loc0]
+ adds w0, w0, #1
+ bvs G_M33418_IG16
+ str w0, [fp, #0xB4] // [V02 loc0]
+ ;; size=16 bbWeight=1.00 PerfScore 4.50
+G_M33418_IG11: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
movz x1, #0xD1FFAB1E
- ; gcrRegs -[x1]
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
cmp x20, x1
- bne G_M33418_IG15
- b G_M33418_IG05
- ;; size=40 bbWeight=0.02 PerfScore 0.24
-G_M33418_IG03: ; bbWeight=98.99, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ; gcrRegs +[x1]
- ldr w23, [x1, #0x10]
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ldr x24, [x1, #0x08]
- ; gcrRegs +[x24]
- ldr w1, [x24, #0x08]
- ; gcrRegs -[x1]
- cmp w1, w23
- bls G_M33418_IG12
- add x1, x24, #12
- ; byrRegs +[x1]
- ldrh w1, [x1, w23, UXTW #2]
- ; byrRegs -[x1]
- ldr x0, [x19, #0x18]
- movz x2, #0xD1FFAB1E // code for Jil.Deserialize.InlineDeserializer`1+<>c[System.__Canon]:<BuildWithNewDelegate>b__103_0(ushort):ubyte:this
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #1 LSL #32
- cmp x0, x2
- bne G_M33418_IG07
- cmp w1, #10
- bne G_M33418_IG05
- ;; size=68 bbWeight=98.99 PerfScore 2524.25
-G_M33418_IG04: ; bbWeight=98.99, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x24]
- ldr w1, [fp, #0xD4] // [V02 loc0]
- adds w1, w1, #1
- bvs G_M33418_IG09
- str w1, [fp, #0xD4] // [V02 loc0]
- ;; size=16 bbWeight=98.99 PerfScore 445.46
-G_M33418_IG05: ; bbWeight=99, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ; gcrRegs +[x1]
- ldr w1, [x1, #0x10]
- ; gcrRegs -[x1]
- add w21, w1, #1
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ; gcrRegs +[x1]
- ldr x1, [x1, #0x08]
- ldr w22, [x1, #0x08]
- cmp w21, w22
- bge G_M33418_IG13
- ;; size=32 bbWeight=99 PerfScore 1485.00
-G_M33418_IG06: ; bbWeight=396, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x1]
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ; gcrRegs +[x1]
- str w21, [x1, #0x10]
- b G_M33418_IG03
...
-48 (-6.94%) : 57550.dasm - System.Linq.Enumerable:Countushort:int (Tier1-OSR)
@@ -11,143 +11,214 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Collections.Generic.IEnumerable`1[ushort]>
-; V01 arg1 [V01,T03] ( 8,301.97) ref -> x19 class-hnd single-def <System.Func`2[ushort,ubyte]>
-; V02 loc0 [V02,T10] ( 5,198.09) int -> [fp+0xD4] do-not-enreg[Z] EH-live tier0-frame
-; V03 loc1 [V03,T00] ( 21,901.02) ref -> [fp+0xC8] do-not-enreg[H] class-hnd EH-live tier0-frame <System.Collections.Generic.IEnumerator`1[ushort]>
-; V04 loc2 [V04,T05] ( 7,299.97) ushort -> x1
+; V01 arg1 [V01,T10] ( 7, 3.04) ref -> x19 class-hnd single-def <System.Func`2[ushort,ubyte]>
+; V02 loc0 [V02,T07] ( 5,199.98) int -> [fp+0xB4] do-not-enreg[Z] EH-live tier0-frame
+; V03 loc1 [V03,T00] ( 21,901.02) ref -> [fp+0xA8] do-not-enreg[H] class-hnd EH-live tier0-frame <System.Collections.Generic.IEnumerator`1[ushort]>
+; V04 loc2 [V04,T06] ( 6,199.98) ushort -> x1
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref "guarded devirt return temp"
;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.String>
; V08 tmp3 [V08,T08] ( 4,199.98) int -> x1 "guarded devirt return temp"
;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.CharEnumerator>
-; V10 tmp5 [V10,T09] ( 4,199.98) int -> x0 "guarded devirt return temp"
+; V10 tmp5 [V10,T15] ( 2, 0 ) int -> x0 "guarded devirt return temp"
;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp" <Jil.Deserialize.InlineDeserializer`1+<>c[System.__Canon]>
-; V12 tmp7 [V12,T01] ( 5,200 ) int -> x2 "guarded devirt return temp"
+; V12 tmp7 [V12,T01] ( 5,200 ) int -> x1 "guarded devirt return temp"
;* V13 tmp8 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.CharEnumerator>
-;* V14 tmp9 [V14,T14] ( 0, 0 ) int -> zero-ref "OSR entry state var"
+;* V14 tmp9 [V14,T13] ( 0, 0 ) int -> zero-ref "OSR entry state var"
;* V15 tmp10 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.CharEnumerator>
-; V16 tmp11 [V16,T07] ( 6,299.97) int -> x23 "Inline stloc first use temp"
-; V17 tmp12 [V17,T06] ( 6,299.97) ref -> x24 class-hnd exact "Inline stloc first use temp" <System.String>
-; V18 tmp13 [V18,T02] ( 6,600 ) int -> x21 "Inline stloc first use temp"
-; V19 tmp14 [V19,T04] ( 6,300 ) int -> x22 "Inline stloc first use temp"
-; V20 PSPSym [V20,T15] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
-; V21 cse0 [V21,T11] ( 2,197.98) int -> x1 "CSE - aggressive"
-; V22 cse1 [V22,T12] ( 6, 3.04) long -> x20 hoist multi-def "CSE - aggressive"
-; V23 cse2 [V23,T13] ( 2, 2.00) int -> x1 "CSE - moderate"
+; V16 tmp11 [V16,T05] ( 6,299.97) int -> x0 "Inline stloc first use temp"
+; V17 tmp12 [V17,T04] ( 6,299.97) ref -> x11 class-hnd exact "Inline stloc first use temp" <System.String>
+; V18 tmp13 [V18,T02] ( 6,600 ) int -> x0 "Inline stloc first use temp"
+; V19 tmp14 [V19,T03] ( 6,300 ) int -> x11 "Inline stloc first use temp"
+; V20 PSPSym [V20,T14] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
+; V21 cse0 [V21,T09] ( 2,197.98) int -> x1 "CSE - aggressive"
+; V22 cse1 [V22,T11] ( 6, 3.04) long -> x20 hoist multi-def "CSE - aggressive"
+; V23 cse2 [V23,T12] ( 2, 2.00) int -> x1 "CSE - moderate"
;
; Lcl frame size = 16
G_M33418_IG01: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
+ stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
- stp x23, x24, [sp, #0x40]
mov fp, sp
- add xip1, sp, #240
+ add xip1, sp, #208
str xip1, [fp, #0x18] // [V20 PSPSym]
- ldr x19, [fp, #0xD8]
+ ldr x19, [fp, #0xB8]
; gcrRegs +[x19]
- ;; size=32 bbWeight=0.02 PerfScore 0.16
+ ;; size=24 bbWeight=0.02 PerfScore 0.12
G_M33418_IG02: ; bbWeight=0.02, gcVars=0000000000000001 {V03}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V03}
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ; gcrRegs +[x1]
- cbz x1, G_M33418_IG15
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ldr x20, [x1]
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ cbz x0, G_M33418_IG08
+ cbz x19, G_M33418_IG08
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ldr x20, [x0]
+ movz x0, #0xD1FFAB1E
+ ; gcrRegs -[x0]
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
+ cmp x20, x0
+ bne G_M33418_IG08
+ ldr x0, [x19, #0x18]
+ movz x11, #0xD1FFAB1E // code for Jil.Deserialize.InlineDeserializer`1+<>c[System.__Canon]:<BuildFromStringWithNewDelegate>b__104_0(ushort):ubyte:this
+ movk x11, #0xD1FFAB1E LSL #16
+ movk x11, #1 LSL #32
+ cmp x0, x11
+ bne G_M33418_IG08
+ b G_M33418_IG04
+ ;; size=68 bbWeight=0.02 PerfScore 0.38
+G_M33418_IG03: ; bbWeight=98.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x19]
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ ldr w0, [x0, #0x10]
+ ; gcrRegs -[x0]
+ ldr x11, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x11]
+ ldr x11, [x11, #0x08]
+ ldr w1, [x11, #0x08]
+ cmp w1, w0
+ bls G_M33418_IG20
+ add x11, x11, #12
+ ; gcrRegs -[x11]
+ ; byrRegs +[x11]
+ ldrh w1, [x11, w0, UXTW #2]
+ cmp w1, #10
+ bne G_M33418_IG04
+ ldr w0, [fp, #0xB4] // [V02 loc0]
+ adds w1, w0, #1
+ bvs G_M33418_IG16
+ str w1, [fp, #0xB4] // [V02 loc0]
+ ;; size=60 bbWeight=98.99 PerfScore 2375.76
+G_M33418_IG04: ; bbWeight=99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x11]
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ ldr w0, [x0, #0x10]
+ ; gcrRegs -[x0]
+ add w0, w0, #1
+ ldr x11, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x11]
+ ldr x11, [x11, #0x08]
+ ldr w11, [x11, #0x08]
+ ; gcrRegs -[x11]
+ cmp w0, w11
+ bge G_M33418_IG06
+ ;; size=32 bbWeight=99 PerfScore 1485.00
+G_M33418_IG05: ; bbWeight=396, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr x11, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x11]
+ str w0, [x11, #0x10]
+ b G_M33418_IG03
+ ;; size=12 bbWeight=396 PerfScore 1584.00
+G_M33418_IG06: ; bbWeight=99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x11]
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ str w11, [x0, #0x10]
+ mov w1, wzr
+ cbz w1, G_M33418_IG21
+ ;; size=16 bbWeight=99 PerfScore 445.50
+G_M33418_IG07: ; bbWeight=98.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ b G_M33418_IG03
+ ;; size=4 bbWeight=98.99 PerfScore 98.99
+G_M33418_IG08: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x19]
+ ldr x11, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x11]
+ ldr x20, [x11]
+ b G_M33418_IG11
+ ;; size=12 bbWeight=0.00 PerfScore 0.00
+G_M33418_IG09: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x11]
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ ldr x20, [x0]
+ movz x0, #0xD1FFAB1E
+ ; gcrRegs -[x0]
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
+ cmp x20, x0
+ bne G_M33418_IG19
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ ldr w0, [x0, #0x10]
+ ; gcrRegs -[x0]
+ ldr x11, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x11]
+ ldr x11, [x11, #0x08]
+ ldr w1, [x11, #0x08]
+ cmp w1, w0
+ bls G_M33418_IG20
+ add x11, x11, #12
+ ; gcrRegs -[x11]
+ ; byrRegs +[x11]
+ ldrh w1, [x11, w0, UXTW #2]
+ ldr x0, [x19, #0x18]
+ movz x11, #0xD1FFAB1E
+ ; byrRegs -[x11]
+ movk x11, #0xD1FFAB1E LSL #16
+ movk x11, #1 LSL #32
+ cmp x0, x11
+ bne G_M33418_IG18
+ cmp w1, #10
+ bne G_M33418_IG11
+ ;; size=96 bbWeight=1.00 PerfScore 33.50
+G_M33418_IG10: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ldr w0, [fp, #0xB4] // [V02 loc0]
+ adds w0, w0, #1
+ bvs G_M33418_IG16
+ str w0, [fp, #0xB4] // [V02 loc0]
+ ;; size=16 bbWeight=1.00 PerfScore 4.50
+G_M33418_IG11: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
movz x1, #0xD1FFAB1E
- ; gcrRegs -[x1]
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
cmp x20, x1
- bne G_M33418_IG15
- b G_M33418_IG05
- ;; size=40 bbWeight=0.02 PerfScore 0.24
-G_M33418_IG03: ; bbWeight=98.99, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ; gcrRegs +[x1]
- ldr w23, [x1, #0x10]
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ldr x24, [x1, #0x08]
- ; gcrRegs +[x24]
- ldr w1, [x24, #0x08]
- ; gcrRegs -[x1]
- cmp w1, w23
- bls G_M33418_IG12
- add x1, x24, #12
- ; byrRegs +[x1]
- ldrh w1, [x1, w23, UXTW #2]
- ; byrRegs -[x1]
- ldr x0, [x19, #0x18]
- movz x2, #0xD1FFAB1E // code for Jil.Deserialize.InlineDeserializer`1+<>c[System.__Canon]:<BuildFromStringWithNewDelegate>b__104_0(ushort):ubyte:this
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #1 LSL #32
- cmp x0, x2
- bne G_M33418_IG07
- cmp w1, #10
- bne G_M33418_IG05
- ;; size=68 bbWeight=98.99 PerfScore 2524.25
-G_M33418_IG04: ; bbWeight=98.99, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x24]
- ldr w1, [fp, #0xD4] // [V02 loc0]
- adds w1, w1, #1
- bvs G_M33418_IG09
- str w1, [fp, #0xD4] // [V02 loc0]
- ;; size=16 bbWeight=98.99 PerfScore 445.46
-G_M33418_IG05: ; bbWeight=99, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ; gcrRegs +[x1]
- ldr w1, [x1, #0x10]
- ; gcrRegs -[x1]
- add w21, w1, #1
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ; gcrRegs +[x1]
- ldr x1, [x1, #0x08]
- ldr w22, [x1, #0x08]
- cmp w21, w22
- bge G_M33418_IG13
- ;; size=32 bbWeight=99 PerfScore 1485.00
-G_M33418_IG06: ; bbWeight=396, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x1]
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ; gcrRegs +[x1]
- str w21, [x1, #0x10]
- b G_M33418_IG03
...
+12 (+7.69%) : 55090.dasm - System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
@@ -9,11 +9,11 @@
; 5 inlinees with PGO data; 10 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 5, 5 ) ref -> x0 class-hnd single-def <System.String>
-; V01 loc0 [V01,T02] ( 5, 5 ) int -> x19
+; V00 arg0 [V00,T00] ( 5, 5 ) ref -> x0 class-hnd single-def <System.String>
+; V01 loc0 [V01,T02] ( 8, 5 ) int -> x19
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T05] ( 2, 2 ) ubyte -> x0 "Inline return value spill temp"
-; V04 tmp2 [V04,T00] ( 4, 8 ) ushort -> x0 "Inlining Arg"
+; V03 tmp1 [V03,T05] ( 2, 0 ) ubyte -> x0 "Inline return value spill temp"
+; V04 tmp2 [V04,T01] ( 4, 6 ) ushort -> x0 "Inlining Arg"
;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V06 tmp4 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V07 tmp5 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -34,11 +34,11 @@
;* V22 tmp20 [V22 ] ( 0, 0 ) byref -> zero-ref "field V11._reference (fldOffset=0x0)" P-INDEP
;* V23 tmp21 [V23 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
; V24 cse0 [V24,T04] ( 2, 2 ) byref -> x21 hoist "CSE - aggressive"
-; V25 cse1 [V25,T03] ( 3, 3 ) int -> x20 "CSE - aggressive"
+; V25 cse1 [V25,T03] ( 4, 3 ) int -> x20 "CSE - aggressive"
;
; Lcl frame size = 8
-G_M44603_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M44603_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x18]
str x21, [sp, #0x28]
@@ -46,11 +46,11 @@ G_M44603_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
;; size=16 bbWeight=1 PerfScore 3.50
G_M44603_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
- cbz x0, G_M44603_IG08
+ cbz x0, G_M44603_IG07
mov w19, wzr
ldr w20, [x0, #0x08]
cmp w20, #0
- ble G_M44603_IG08
+ ble G_M44603_IG07
add x21, x0, #12
; byrRegs +[x21]
;; size=24 bbWeight=1 PerfScore 6.50
@@ -58,50 +58,56 @@ G_M44603_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, b
; gcrRegs -[x0]
ldrh w0, [x21, w19, UXTW #2]
cmp w0, #0xD1FFAB1E
- blo G_M44603_IG04
+ bhs G_M44603_IG09
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ ldrb w0, [x1, w0, UXTW #2]
+ tbnz w0, #7, G_M44603_IG06
+ ;; size=32 bbWeight=1 PerfScore 10.00
+G_M44603_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x21]
+ mov w0, wzr
+ ;; size=4 bbWeight=1 PerfScore 0.50
+G_M44603_IG05: ; bbWeight=1, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
+ ret lr
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M44603_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, gcvars, byref, isz
+ ; byrRegs +[x21]
+ add w19, w19, #1
+ cmp w20, w19
+ ble G_M44603_IG07
+ b G_M44603_IG03
+ ;; size=16 bbWeight=1 PerfScore 3.00
+G_M44603_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x21]
+ mov w0, #1
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M44603_IG08: ; bbWeight=0, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
+ ret lr
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M44603_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, gcvars, byref, isz
+ ; byrRegs +[x21]
movz x1, #0xD1FFAB1E // code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
ldr x1, [x1]
blr x1
; gcr arg pop 0
- cbnz w0, G_M44603_IG05
- b G_M44603_IG06
- ;; size=40 bbWeight=1 PerfScore 12.00
-G_M44603_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- ldrb w0, [x1, w0, UXTW #2]
- tbz w0, #7, G_M44603_IG06
- ;; size=20 bbWeight=1 PerfScore 5.50
-G_M44603_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
+ cbz w0, G_M44603_IG04
add w19, w19, #1
cmp w20, w19
- ble G_M44603_IG08
- b G_M44603_IG03
- ;; size=16 bbWeight=1 PerfScore 3.00
-G_M44603_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x21]
- mov w0, wzr
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M44603_IG07: ; bbWeight=1, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
- ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
-G_M44603_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov w0, #1
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M44603_IG09: ; bbWeight=0, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
- ret lr
- ;; size=16 bbWeight=0 PerfScore 0.00
+ bgt G_M44603_IG03
+ b G_M44603_IG07
+ ;; size=40 bbWeight=0 PerfScore 0.00
-; Total bytes of code 156, prolog size 16, PerfScore 36.00, instruction count 39, allocated bytes for code 156 (MethodHash=3ff251c4) for method System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
+; Total bytes of code 168, prolog size 16, PerfScore 28.50, instruction count 42, allocated bytes for code 168 (MethodHash=3ff251c4) for method System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
; ============================================================
Unwind Info:
@@ -112,7 +118,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 39 (0x00027) Actual length = 156 (0x00009c)
+ Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+12 (+7.69%) : 54980.dasm - System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
@@ -9,11 +9,11 @@
; 5 inlinees with PGO data; 10 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 5, 5 ) ref -> x0 class-hnd single-def <System.String>
-; V01 loc0 [V01,T02] ( 5, 5 ) int -> x19
+; V00 arg0 [V00,T00] ( 5, 5 ) ref -> x0 class-hnd single-def <System.String>
+; V01 loc0 [V01,T02] ( 8, 5 ) int -> x19
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T05] ( 2, 2 ) ubyte -> x0 "Inline return value spill temp"
-; V04 tmp2 [V04,T00] ( 4, 8 ) ushort -> x0 "Inlining Arg"
+; V03 tmp1 [V03,T05] ( 2, 0 ) ubyte -> x0 "Inline return value spill temp"
+; V04 tmp2 [V04,T01] ( 4, 6 ) ushort -> x0 "Inlining Arg"
;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V06 tmp4 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V07 tmp5 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -34,11 +34,11 @@
;* V22 tmp20 [V22 ] ( 0, 0 ) byref -> zero-ref "field V11._reference (fldOffset=0x0)" P-INDEP
;* V23 tmp21 [V23 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
; V24 cse0 [V24,T04] ( 2, 2 ) byref -> x21 hoist "CSE - aggressive"
-; V25 cse1 [V25,T03] ( 3, 3 ) int -> x20 "CSE - aggressive"
+; V25 cse1 [V25,T03] ( 4, 3 ) int -> x20 "CSE - aggressive"
;
; Lcl frame size = 8
-G_M44603_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M44603_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x18]
str x21, [sp, #0x28]
@@ -46,11 +46,11 @@ G_M44603_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
;; size=16 bbWeight=1 PerfScore 3.50
G_M44603_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
- cbz x0, G_M44603_IG08
+ cbz x0, G_M44603_IG07
mov w19, wzr
ldr w20, [x0, #0x08]
cmp w20, #0
- ble G_M44603_IG08
+ ble G_M44603_IG07
add x21, x0, #12
; byrRegs +[x21]
;; size=24 bbWeight=1 PerfScore 6.50
@@ -58,50 +58,56 @@ G_M44603_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, b
; gcrRegs -[x0]
ldrh w0, [x21, w19, UXTW #2]
cmp w0, #0xD1FFAB1E
- blo G_M44603_IG04
+ bhs G_M44603_IG09
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ ldrb w0, [x1, w0, UXTW #2]
+ tbnz w0, #7, G_M44603_IG06
+ ;; size=32 bbWeight=1 PerfScore 10.00
+G_M44603_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x21]
+ mov w0, wzr
+ ;; size=4 bbWeight=1 PerfScore 0.50
+G_M44603_IG05: ; bbWeight=1, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
+ ret lr
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M44603_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, gcvars, byref, isz
+ ; byrRegs +[x21]
+ add w19, w19, #1
+ cmp w20, w19
+ ble G_M44603_IG07
+ b G_M44603_IG03
+ ;; size=16 bbWeight=1 PerfScore 3.00
+G_M44603_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x21]
+ mov w0, #1
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M44603_IG08: ; bbWeight=0, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
+ ret lr
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M44603_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, gcvars, byref, isz
+ ; byrRegs +[x21]
movz x1, #0xD1FFAB1E // code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
ldr x1, [x1]
blr x1
; gcr arg pop 0
- cbnz w0, G_M44603_IG05
- b G_M44603_IG06
- ;; size=40 bbWeight=1 PerfScore 12.00
-G_M44603_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- ldrb w0, [x1, w0, UXTW #2]
- tbz w0, #7, G_M44603_IG06
- ;; size=20 bbWeight=1 PerfScore 5.50
-G_M44603_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
+ cbz w0, G_M44603_IG04
add w19, w19, #1
cmp w20, w19
- ble G_M44603_IG08
- b G_M44603_IG03
- ;; size=16 bbWeight=1 PerfScore 3.00
-G_M44603_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x21]
- mov w0, wzr
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M44603_IG07: ; bbWeight=1, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
- ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
-G_M44603_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov w0, #1
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M44603_IG09: ; bbWeight=0, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
- ret lr
- ;; size=16 bbWeight=0 PerfScore 0.00
+ bgt G_M44603_IG03
+ b G_M44603_IG07
+ ;; size=40 bbWeight=0 PerfScore 0.00
-; Total bytes of code 156, prolog size 16, PerfScore 36.00, instruction count 39, allocated bytes for code 156 (MethodHash=3ff251c4) for method System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
+; Total bytes of code 168, prolog size 16, PerfScore 28.50, instruction count 42, allocated bytes for code 168 (MethodHash=3ff251c4) for method System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
; ============================================================
Unwind Info:
@@ -112,7 +118,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 39 (0x00027) Actual length = 156 (0x00009c)
+ Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+28 (+8.75%) : 12214.dasm - System.Threading.PortableThreadPool:NotifyWorkItemComplete(System.Object,int):ubyte:this (Tier1)
@@ -8,9 +8,9 @@
; 4 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 6, 5 ) ref -> x20 this class-hnd single-def <System.Threading.PortableThreadPool>
-; V01 arg1 [V01,T00] ( 7, 5.50) ref -> x19 class-hnd single-def <System.Object>
-; V02 arg2 [V02,T02] ( 4, 4 ) int -> x21 single-def
+; V00 this [V00,T01] ( 8, 5 ) ref -> x20 this class-hnd single-def <System.Threading.PortableThreadPool>
+; V01 arg1 [V01,T00] ( 7, 6 ) ref -> x19 class-hnd single-def <System.Object>
+; V02 arg2 [V02,T02] ( 6, 4 ) int -> x21 single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V05 tmp2 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -18,7 +18,7 @@
;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
;* V08 tmp5 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V09 tmp6 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V10 tmp7 [V10,T04] ( 3, 2.50) int -> x0 "Inline stloc first use temp"
+; V10 tmp7 [V10,T04] ( 3, 3 ) int -> x0 "Inline stloc first use temp"
;
; Lcl frame size = 8
@@ -34,15 +34,23 @@ G_M1485_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov w21, w2
;; size=28 bbWeight=1 PerfScore 5.00
G_M1485_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M1485_IG13
+ cbz x19, G_M1485_IG09
;; size=4 bbWeight=1 PerfScore 1.00
G_M1485_IG03: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x0, x19
; gcrRegs +[x0]
- cbnz x0, G_M1485_IG10
+ cbz x0, G_M1485_IG05
;; size=8 bbWeight=1 PerfScore 1.50
-G_M1485_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M1485_IG04: ; bbWeight=0.25, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x0]
; gcrRegs -[x0]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ cmp x0, x1
+ beq G_M1485_IG06
+ ;; size=24 bbWeight=0.25 PerfScore 1.50
+G_M1485_IG05: ; bbWeight=0.38, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -54,17 +62,12 @@ G_M1485_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000
movk x2, #1 LSL #32
ldr x2, [x2]
blr x2
- ;; size=44 bbWeight=0.50 PerfScore 4.25
-G_M1485_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ;; size=44 bbWeight=0.38 PerfScore 3.19
+G_M1485_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x20]
add w0, w0, #1
- cbz w0, G_M1485_IG12
- ;; size=12 bbWeight=1 PerfScore 4.50
-G_M1485_IG06: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ cbz w0, G_M1485_IG10
str w0, [x19, #0x20]
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M1485_IG07: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x19]
str w21, [x20, #0xD1FFAB1E]
mov x0, x20
; gcrRegs +[x0]
@@ -74,10 +77,10 @@ G_M1485_IG07: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, by
movk x2, #1 LSL #32
ldr x2, [x2]
blr x2
- ; gcrRegs -[x0]
- cbnz w0, G_M1485_IG14
- ;; size=36 bbWeight=1 PerfScore 8.50
-G_M1485_IG08: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x19]
+ cbnz w0, G_M1485_IG11
+ ;; size=52 bbWeight=1 PerfScore 14.00
+G_M1485_IG07: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
mov x0, x20
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Threading.PortableThreadPool+WorkerThread:ShouldStopProcessingWorkNow(System.Threading.PortableThreadPool):ubyte
@@ -89,39 +92,14 @@ G_M1485_IG08: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, by
cmp w0, #0
cset x0, eq
;; size=32 bbWeight=1 PerfScore 7.00
-G_M1485_IG09: ; bbWeight=1, epilog, nogc, extend
+G_M1485_IG08: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=1 PerfScore 5.00
-G_M1485_IG10: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x0 x19-x20]
- ldr x0, [x0]
- ; gcrRegs -[x0]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- cmp x0, x1
- beq G_M1485_IG05
- ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M1485_IG11: ; bbWeight=0.12, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- b G_M1485_IG04
- ;; size=4 bbWeight=0.12 PerfScore 0.12
-G_M1485_IG12: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- mov x0, x19
- ; gcrRegs +[x0]
- mov w1, #1
- movz x2, #0xD1FFAB1E // code for <unknown method>
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #1 LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x0 x19]
- b G_M1485_IG07
- ;; size=32 bbWeight=0 PerfScore 0.00
-G_M1485_IG13: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x19]
+G_M1485_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x19-x20]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -135,8 +113,29 @@ G_M1485_IG13: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
blr x2
b G_M1485_IG03
;; size=48 bbWeight=0 PerfScore 0.00
-G_M1485_IG14: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
+G_M1485_IG10: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ mov x0, x19
+ ; gcrRegs +[x0]
+ mov w1, #1
+ movz x2, #0xD1FFAB1E // code for <unknown method>
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ ldr x2, [x2]
+ blr x2
+ ; gcrRegs -[x0 x19]
+ str w21, [x20, #0xD1FFAB1E]
+ mov x0, x20
+ ; gcrRegs +[x0]
+ mov w1, w21
+ movz x2, #0xD1FFAB1E // code for System.Threading.PortableThreadPool:ShouldAdjustMaxWorkersActive(int):ubyte:this
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ ldr x2, [x2]
+ blr x2
+ ; gcrRegs -[x0]
+ cbz w0, G_M1485_IG07
+ ;; size=64 bbWeight=0 PerfScore 0.00
+G_M1485_IG11: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
mov x0, x20
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -145,10 +144,10 @@ G_M1485_IG14: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, by
ldr x1, [x1]
blr x1
; gcrRegs -[x0]
- b G_M1485_IG08
+ b G_M1485_IG07
;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 320, prolog size 16, PerfScore 38.88, instruction count 80, allocated bytes for code 320 (MethodHash=8796fa32) for method System.Threading.PortableThreadPool:NotifyWorkItemComplete(System.Object,int):ubyte:this (Tier1)
+; Total bytes of code 348, prolog size 16, PerfScore 38.19, instruction count 87, allocated bytes for code 348 (MethodHash=8796fa32) for method System.Threading.PortableThreadPool:NotifyWorkItemComplete(System.Object,int):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -159,7 +158,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 80 (0x00050) Actual length = 320 (0x000140)
+ Function Length : 87 (0x00057) Actual length = 348 (0x00015c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
coreclr_tests.run.osx.arm64.checked.mch
-40 (-7.58%) : 567309.dasm - System.Enum:TryParseByValueOrNameint,uint:ubyte (Tier1)
@@ -14,11 +14,11 @@
; V02 arg2 [V02,T06] ( 3, 3 ) ubyte -> x24 single-def
; V03 arg3 [V03,T04] ( 5, 3 ) ubyte -> x22 single-def
; V04 arg4 [V04,T03] ( 5, 3 ) byref -> x21 single-def
-; V05 loc0 [V05,T02] ( 8, 7 ) ushort -> x25
+; V05 loc0 [V05,T00] ( 8, 6 ) ushort -> x25
;* V06 loc1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
-; V07 loc2 [V07,T09] ( 3, 0 ) int -> x0
+; V07 loc2 [V07,T08] ( 3, 0 ) int -> x0
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T07] ( 2, 2 ) ubyte -> x0 "Inline return value spill temp"
+; V09 tmp1 [V09,T10] ( 2, 0 ) ubyte -> x0 "Inline return value spill temp"
;* V10 tmp2 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V11 tmp3 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V12 tmp4 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -26,8 +26,8 @@
;* V14 tmp6 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V15 tmp7 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V16 tmp8 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V17 tmp9 [V17,T01] ( 9, 5 ) byref -> x20 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V18 tmp10 [V18,T00] ( 10, 6 ) int -> x19 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V17 tmp9 [V17,T01] ( 7, 3 ) byref -> x19 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V18 tmp10 [V18,T02] ( 7, 3 ) int -> x20 single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V19 tmp11 [V19 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP
;* V20 tmp12 [V20 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
;* V21 tmp13 [V21 ] ( 0, 0 ) byref -> zero-ref single-def "field V11._reference (fldOffset=0x0)" P-INDEP
@@ -40,8 +40,8 @@
;* V28 tmp20 [V28 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
;* V29 tmp21 [V29 ] ( 0, 0 ) byref -> zero-ref single-def "field V16._reference (fldOffset=0x0)" P-INDEP
;* V30 tmp22 [V30 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP
-; V31 tmp23 [V31,T08] ( 3, 0 ) ref -> x0 single-def "argument with side effect"
-; V32 tmp24 [V32,T10] ( 2, 0 ) ref -> x3 single-def "argument with side effect"
+; V31 tmp23 [V31,T07] ( 3, 0 ) ref -> x0 single-def "argument with side effect"
+; V32 tmp24 [V32,T09] ( 2, 0 ) ref -> x3 single-def "argument with side effect"
;
; Lcl frame size = 8
@@ -54,45 +54,72 @@ G_M16983_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov fp, sp
mov x23, x0
; gcrRegs +[x23]
- mov x20, x1
- ; byrRegs +[x20]
- mov w19, w2
+ mov x19, x1
+ ; byrRegs +[x19]
+ mov w20, w2
mov w24, w3
mov w22, w4
mov x21, x5
; byrRegs +[x21]
;; size=48 bbWeight=1 PerfScore 8.50
-G_M16983_IG02: ; bbWeight=1, gcrefRegs=800000 {x23}, byrefRegs=300000 {x20 x21}, byref, isz
+G_M16983_IG02: ; bbWeight=1, gcrefRegs=800000 {x23}, byrefRegs=280000 {x19 x21}, byref, isz
movz x0, #0xD1FFAB1E // code for <unknown method>
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
ldr x0, [x0]
blr x0
- cbz w19, G_M16983_IG07
- ldrh w25, [x20]
+ cbz w20, G_M16983_IG12
+ ldrh w25, [x19]
cmp w25, #0xD1FFAB1E
- blo G_M16983_IG06
+ bhs G_M16983_IG04
+ ;; size=36 bbWeight=1 PerfScore 11.00
+G_M16983_IG03: ; bbWeight=1.00, gcrefRegs=800000 {x23}, byrefRegs=280000 {x19 x21}, byref, isz
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ ldrb w1, [x1, w25, UXTW #2]
+ tbz w1, #7, G_M16983_IG06
+ b G_M16983_IG05
+ ;; size=24 bbWeight=1.00 PerfScore 6.50
+G_M16983_IG04: ; bbWeight=0, gcrefRegs=800000 {x23}, byrefRegs=280000 {x19 x21}, byref, isz
mov w0, w25
movz x1, #0xD1FFAB1E // code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
ldr x1, [x1]
blr x1
- cbnz w0, G_M16983_IG10
- ;; size=64 bbWeight=1 PerfScore 18.00
-G_M16983_IG03: ; bbWeight=1, gcrefRegs=800000 {x23}, byrefRegs=300000 {x20 x21}, byref, isz
+ cbz w0, G_M16983_IG06
+ ;; size=28 bbWeight=0 PerfScore 0.00
+G_M16983_IG05: ; bbWeight=0, gcrefRegs=800000 {x23}, byrefRegs=280000 {x19 x21}, byref, isz
+ mov x0, x19
+ ; byrRegs +[x0]
+ mov w1, w20
+ movz x2, #0xD1FFAB1E // code for System.MemoryExtensions:TrimStart(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort]
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ ldr x2, [x2]
+ blr x2
+ ; byrRegs -[x19]
+ mov x19, x0
+ ; byrRegs +[x19]
+ mov w20, w1
+ cbz w20, G_M16983_IG12
+ ldrh w25, [x19]
+ ;; size=44 bbWeight=0 PerfScore 0.00
+G_M16983_IG06: ; bbWeight=1, gcrefRegs=800000 {x23}, byrefRegs=280000 {x19 x21}, byref, isz
+ ; byrRegs -[x0]
sub w1, w25, #48
mov w2, #45
mov w4, #43
cmp w1, #9
ccmp w25, w2, z, hi
ccmp w25, w4, z, ne
- beq G_M16983_IG12
+ beq G_M16983_IG09
;; size=28 bbWeight=1 PerfScore 4.00
-G_M16983_IG04: ; bbWeight=1, gcrefRegs=800000 {x23}, byrefRegs=300000 {x20 x21}, byref
- mov x1, x20
+G_M16983_IG07: ; bbWeight=1, gcrefRegs=800000 {x23}, byrefRegs=280000 {x19 x21}, byref
+ mov x1, x19
; byrRegs +[x1]
- mov w2, w19
+ mov w2, w20
uxtb w4, w22
uxtb w3, w24
mov x0, x23
@@ -105,9 +132,9 @@ G_M16983_IG04: ; bbWeight=1, gcrefRegs=800000 {x23}, byrefRegs=300000 {x2
ldr x6, [x6]
blr x6
; gcrRegs -[x0 x23]
- ; byrRegs -[x1 x5 x20-x21]
+ ; byrRegs -[x1 x5 x19 x21]
;; size=44 bbWeight=1 PerfScore 8.50
-G_M16983_IG05: ; bbWeight=1, epilog, nogc, extend
+G_M16983_IG08: ; bbWeight=1, epilog, nogc, extend
ldr x25, [sp, #0x48]
ldp x23, x24, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
@@ -115,77 +142,9 @@ G_M16983_IG05: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x50
ret lr
;; size=24 bbWeight=1 PerfScore 7.00
-G_M16983_IG06: ; bbWeight=1.00, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=300000 {x20 x21}, gcvars, byref, isz
+G_M16983_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=280000 {x19 x21}, gcvars, byref, isz
; gcrRegs +[x23]
- ; byrRegs +[x20-x21]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
- ldrb w0, [x0, w25, UXTW #2]
- tbz w0, #7, G_M16983_IG03
- mov x0, x20
- ; byrRegs +[x0]
- mov w1, w19
- movz x2, #0xD1FFAB1E // code for System.MemoryExtensions:TrimStart(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort]
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #1 LSL #32
- ldr x2, [x2]
- blr x2
- ; byrRegs -[x20]
- mov x20, x0
- ; byrRegs +[x20]
- mov w19, w1
- cbnz w19, G_M16983_IG11
- ;; size=60 bbWeight=1.00 PerfScore 14.00
-G_M16983_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
- ; gcrRegs -[x23]
- ; byrRegs -[x0 x20]
- tst w22, #255
- beq G_M16983_IG08
- movz x0, #0xD1FFAB1E // code for System.Enum:ThrowInvalidEmptyParseArgument()
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
- ldr x0, [x0]
- blr x0
- ; byrRegs -[x21]
- brk_unix #0
- ;; size=32 bbWeight=0 PerfScore 0.00
-G_M16983_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
- ; byrRegs +[x21]
- str wzr, [x21]
- mov w0, wzr
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M16983_IG09: ; bbWeight=0, epilog, nogc, extend
- ldr x25, [sp, #0x48]
- ldp x23, x24, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x50
- ret lr
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M16983_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=300000 {x20 x21}, gcvars, byref, isz
- ; gcrRegs +[x23]
- ; byrRegs +[x20]
- mov x0, x20
- ; byrRegs +[x0]
- mov w1, w19
- movz x2, #0xD1FFAB1E // code for System.MemoryExtensions:TrimStart(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort]
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #1 LSL #32
- ldr x2, [x2]
- blr x2
- ; byrRegs -[x20]
- mov x20, x0
- ; byrRegs +[x20]
- mov w19, w1
- cbz w19, G_M16983_IG07
- ;; size=40 bbWeight=0 PerfScore 0.00
-G_M16983_IG11: ; bbWeight=0, gcrefRegs=800000 {x23}, byrefRegs=300000 {x20 x21}, byref
- ; byrRegs -[x0]
- ldrh w25, [x20]
- b G_M16983_IG03
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M16983_IG12: ; bbWeight=0, gcrefRegs=800000 {x23}, byrefRegs=300000 {x20 x21}, byref, isz
+ ; byrRegs +[x19 x21]
movz x0, #0xD1FFAB1E // code for System.Globalization.CultureInfo:get_InvariantCulture():System.Globalization.CultureInfo
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -198,10 +157,10 @@ G_M16983_IG12: ; bbWeight=0, gcrefRegs=800000 {x23}, byrefRegs=300000 {x2
blr x1
mov x3, x0
; gcrRegs +[x3]
- mov x0, x20
+ mov x0, x19
; gcrRegs -[x0]
; byrRegs +[x0]
- mov w1, w19
+ mov w1, w20
mov x4, x21
; byrRegs +[x4]
mov w2, #6
@@ -212,10 +171,10 @@ G_M16983_IG12: ; bbWeight=0, gcrefRegs=800000 {x23}, byrefRegs=300000 {x2
blr x5
; gcrRegs -[x3]
; byrRegs -[x0 x4]
- cbnz w0, G_M16983_IG14
+ cbnz w0, G_M16983_IG11
mov w0, #1
;; size=84 bbWeight=0 PerfScore 0.00
-G_M16983_IG13: ; bbWeight=0, epilog, nogc, extend
+G_M16983_IG10: ; bbWeight=0, epilog, nogc, extend
ldr x25, [sp, #0x48]
ldp x23, x24, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
@@ -223,22 +182,47 @@ G_M16983_IG13: ; bbWeight=0, epilog, nogc, extend
ldp fp, lr, [sp], #0x50
ret lr
;; size=24 bbWeight=0 PerfScore 0.00
-G_M16983_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=300000 {x20 x21}, gcvars, byref, isz
+G_M16983_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=280000 {x19 x21}, gcvars, byref, isz
cmp w0, #2
- bne G_M16983_IG04
...
-12 (-5.56%) : 469349.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature):System.Reflection.ParameterInfo
@@ -5,18 +5,18 @@
; optimized using Dynamic PGO
; fp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 2
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 2
; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 6, 5.50) ref -> x19 class-hnd single-def <System.IRuntimeMethodInfo>
+; V00 arg0 [V00,T00] ( 6, 5.12) ref -> x19 class-hnd single-def <System.IRuntimeMethodInfo>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Reflection.MemberInfo>
; V02 arg2 [V02,T03] ( 3, 3 ) ref -> x21 class-hnd single-def <System.Signature>
; V03 loc0 [V03 ] ( 1, 1 ) ref -> [fp+0x10] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Reflection.ParameterInfo>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T01] ( 3, 5 ) ref -> x0 class-hnd "spilling QMark2" <<unknown class>>
-; V06 tmp2 [V06,T06] ( 2, 1 ) int -> x0
-; V07 tmp3 [V07,T04] ( 3, 4.50) ref -> x0 class-hnd "spilling QMark2" <<unknown class>>
+; V06 tmp2 [V06,T06] ( 2, 0.75) int -> x0
+; V07 tmp3 [V07,T04] ( 3, 3.50) ref -> x0 class-hnd "spilling QMark2" <<unknown class>>
;* V08 tmp4 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V09 tmp5 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V10 cse0 [V10,T05] ( 3, 3 ) ref -> x1 "CSE - aggressive"
@@ -39,51 +39,38 @@ G_M25265_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M25265_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
mov x0, x19
; gcrRegs +[x0]
- cbnz x0, G_M25265_IG08
+ cbz x0, G_M25265_IG04
;; size=8 bbWeight=1 PerfScore 1.50
-G_M25265_IG03: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M25265_IG03: ; bbWeight=0.50, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x0]
; gcrRegs -[x0]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ cmp x0, x1
+ beq G_M25265_IG08
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M25265_IG04: ; bbWeight=0.75, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
mov x0, x19
; gcrRegs +[x0]
- cbnz x0, G_M25265_IG06
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M25265_IG04: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+ cbz x0, G_M25265_IG06
+ ;; size=8 bbWeight=0.75 PerfScore 1.12
+G_M25265_IG05: ; bbWeight=0.25, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x0]
; gcrRegs -[x0]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ cmp x0, x1
+ bne G_M25265_IG07
+ ;; size=24 bbWeight=0.25 PerfScore 1.50
+G_M25265_IG06: ; bbWeight=0.38, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
cmp x19, #0
cset x0, ne
tst w0, #255
- bne G_M25265_IG11
- ;; size=16 bbWeight=0.50 PerfScore 1.25
-G_M25265_IG05: ; bbWeight=0.44, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
- b G_M25265_IG10
- ;; size=4 bbWeight=0.44 PerfScore 0.44
-G_M25265_IG06: ; bbWeight=0.25, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0]
- ldr x0, [x0]
- ; gcrRegs -[x0]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- cmp x0, x1
- beq G_M25265_IG04
- ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M25265_IG07: ; bbWeight=0.12, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
- b G_M25265_IG10
- ;; size=4 bbWeight=0.12 PerfScore 0.12
-G_M25265_IG08: ; bbWeight=0.50, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0]
- ldr x0, [x0]
- ; gcrRegs -[x0]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- cmp x0, x1
- bne G_M25265_IG03
- ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M25265_IG09: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
- b G_M25265_IG11
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M25265_IG10: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+ bne G_M25265_IG08
+ ;; size=16 bbWeight=0.38 PerfScore 0.94
+G_M25265_IG07: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
@@ -96,7 +83,7 @@ G_M25265_IG10: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
blr x2
; gcrRegs -[x0]
;; size=36 bbWeight=1 PerfScore 7.50
-G_M25265_IG11: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M25265_IG08: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
add x3, fp, #16 // [V03 loc0]
mov x0, x19
; gcrRegs +[x0]
@@ -112,14 +99,14 @@ G_M25265_IG11: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
blr x5
; gcrRegs -[x1-x2 x19-x21]
;; size=40 bbWeight=1 PerfScore 8.00
-G_M25265_IG12: ; bbWeight=1, epilog, nogc, extend
+G_M25265_IG09: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 216, prolog size 20, PerfScore 36.81, instruction count 54, allocated bytes for code 216 (MethodHash=500f9d4e) for method System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature):System.Reflection.ParameterInfo[] (Tier1)
+; Total bytes of code 204, prolog size 20, PerfScore 34.56, instruction count 51, allocated bytes for code 204 (MethodHash=500f9d4e) for method System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature):System.Reflection.ParameterInfo[] (Tier1)
; ============================================================
Unwind Info:
@@ -130,7 +117,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 54 (0x00036) Actual length = 216 (0x0000d8)
+ Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-5.56%) : 496087.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature):System.Reflection.ParameterInfo
@@ -5,21 +5,21 @@
; optimized using Dynamic PGO
; fp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 3
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 3
; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 6, 6 ) ref -> x19 class-hnd single-def <System.IRuntimeMethodInfo>
+; V00 arg0 [V00,T00] ( 6, 5.75) ref -> x19 class-hnd single-def <System.IRuntimeMethodInfo>
; V01 arg1 [V01,T03] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Reflection.MemberInfo>
; V02 arg2 [V02,T04] ( 3, 3 ) ref -> x21 class-hnd single-def <System.Signature>
; V03 loc0 [V03 ] ( 1, 1 ) ref -> [fp+0x10] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Reflection.ParameterInfo>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T01] ( 3, 5 ) ref -> x0 class-hnd "spilling QMark2" <<unknown class>>
-; V06 tmp2 [V06,T05] ( 2, 2 ) int -> x0
+; V06 tmp2 [V06,T06] ( 2, 1.50) int -> x0
; V07 tmp3 [V07,T02] ( 3, 5 ) ref -> x0 class-hnd "spilling QMark2" <<unknown class>>
;* V08 tmp4 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V09 tmp5 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V10 cse0 [V10,T06] ( 3, 3 ) ref -> x1 "CSE - aggressive"
+; V10 cse0 [V10,T05] ( 3, 3 ) ref -> x1 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -39,51 +39,38 @@ G_M25265_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M25265_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
mov x0, x19
; gcrRegs +[x0]
- cbnz x0, G_M25265_IG08
+ cbz x0, G_M25265_IG04
;; size=8 bbWeight=1 PerfScore 1.50
-G_M25265_IG03: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M25265_IG03: ; bbWeight=0.50, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x0]
; gcrRegs -[x0]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ cmp x0, x1
+ beq G_M25265_IG08
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M25265_IG04: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
mov x0, x19
; gcrRegs +[x0]
- cbnz x0, G_M25265_IG06
+ cbz x0, G_M25265_IG06
;; size=8 bbWeight=1 PerfScore 1.50
-G_M25265_IG04: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M25265_IG05: ; bbWeight=0.50, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x0]
; gcrRegs -[x0]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ cmp x0, x1
+ bne G_M25265_IG07
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M25265_IG06: ; bbWeight=0.75, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
cmp x19, #0
cset x0, ne
tst w0, #255
- bne G_M25265_IG11
- ;; size=16 bbWeight=1 PerfScore 2.50
-G_M25265_IG05: ; bbWeight=0.88, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
- b G_M25265_IG10
- ;; size=4 bbWeight=0.88 PerfScore 0.88
-G_M25265_IG06: ; bbWeight=0.50, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0]
- ldr x0, [x0]
- ; gcrRegs -[x0]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- cmp x0, x1
- beq G_M25265_IG04
- ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M25265_IG07: ; bbWeight=0.25, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
- b G_M25265_IG10
- ;; size=4 bbWeight=0.25 PerfScore 0.25
-G_M25265_IG08: ; bbWeight=0.50, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0]
- ldr x0, [x0]
- ; gcrRegs -[x0]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- cmp x0, x1
- bne G_M25265_IG03
- ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M25265_IG09: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
- b G_M25265_IG11
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M25265_IG10: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+ bne G_M25265_IG08
+ ;; size=16 bbWeight=0.75 PerfScore 1.88
+G_M25265_IG07: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
@@ -96,7 +83,7 @@ G_M25265_IG10: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
blr x2
; gcrRegs -[x0]
;; size=36 bbWeight=1 PerfScore 7.50
-G_M25265_IG11: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M25265_IG08: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
add x3, fp, #16 // [V03 loc0]
mov x0, x19
; gcrRegs +[x0]
@@ -112,14 +99,14 @@ G_M25265_IG11: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
blr x5
; gcrRegs -[x1-x2 x19-x21]
;; size=40 bbWeight=1 PerfScore 8.00
-G_M25265_IG12: ; bbWeight=1, epilog, nogc, extend
+G_M25265_IG09: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 216, prolog size 20, PerfScore 40.12, instruction count 54, allocated bytes for code 216 (MethodHash=500f9d4e) for method System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature):System.Reflection.ParameterInfo[] (Tier1)
+; Total bytes of code 204, prolog size 20, PerfScore 37.38, instruction count 51, allocated bytes for code 204 (MethodHash=500f9d4e) for method System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature):System.Reflection.ParameterInfo[] (Tier1)
; ============================================================
Unwind Info:
@@ -130,7 +117,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 54 (0x00036) Actual length = 216 (0x0000d8)
+ Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+12 (+7.50%) : 444820.dasm - System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
@@ -10,10 +10,10 @@
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 5, 4.67) ref -> x19 class-hnd single-def <System.String>
-; V01 loc0 [V01,T02] ( 5, 4.67) int -> x20
+; V01 loc0 [V01,T01] ( 8, 4.67) int -> x20
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T04] ( 2, 1.33) ubyte -> x0 "Inline return value spill temp"
-; V04 tmp2 [V04,T01] ( 4, 5.33) ushort -> x0 "Inlining Arg"
+; V03 tmp1 [V03,T04] ( 2, 0 ) ubyte -> x0 "Inline return value spill temp"
+; V04 tmp2 [V04,T02] ( 4, 4.00) ushort -> x0 "Inlining Arg"
;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V06 tmp4 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V07 tmp5 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -33,11 +33,11 @@
;* V21 tmp19 [V21 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
;* V22 tmp20 [V22 ] ( 0, 0 ) byref -> zero-ref "field V11._reference (fldOffset=0x0)" P-INDEP
;* V23 tmp21 [V23 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
-; V24 cse0 [V24,T03] ( 3, 3 ) int -> x21 "CSE - aggressive"
+; V24 cse0 [V24,T03] ( 4, 3 ) int -> x21 "CSE - aggressive"
;
; Lcl frame size = 8
-G_M44603_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M44603_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x18]
str x21, [sp, #0x28]
@@ -46,11 +46,11 @@ G_M44603_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
; gcrRegs +[x19]
;; size=20 bbWeight=1 PerfScore 4.00
G_M44603_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M44603_IG09
+ cbz x19, G_M44603_IG08
mov w20, wzr
ldr w21, [x19, #0x08]
cmp w21, #0
- ble G_M44603_IG09
+ ble G_M44603_IG08
;; size=20 bbWeight=1 PerfScore 6.00
G_M44603_IG03: ; bbWeight=0.67, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
add x0, x19, #12
@@ -58,52 +58,58 @@ G_M44603_IG03: ; bbWeight=0.67, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
ldrh w0, [x0, w20, UXTW #2]
; byrRegs -[x0]
cmp w0, #0xD1FFAB1E
- blo G_M44603_IG04
+ bhs G_M44603_IG10
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ ldrb w0, [x1, w0, UXTW #2]
+ tbnz w0, #7, G_M44603_IG06
+ ;; size=36 bbWeight=0.67 PerfScore 7.00
+G_M44603_IG04: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19]
+ mov w0, wzr
+ ;; size=4 bbWeight=0.67 PerfScore 0.33
+G_M44603_IG05: ; bbWeight=0.67, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
+ ret lr
+ ;; size=16 bbWeight=0.67 PerfScore 3.33
+G_M44603_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x19]
+ add w20, w20, #1
+ cmp w21, w20
+ ble G_M44603_IG08
+ ;; size=12 bbWeight=1 PerfScore 2.00
+G_M44603_IG07: ; bbWeight=0.67, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ b G_M44603_IG03
+ ;; size=4 bbWeight=0.67 PerfScore 0.67
+G_M44603_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19]
+ mov w0, #1
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M44603_IG09: ; bbWeight=0, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
+ ret lr
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M44603_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x19]
movz x1, #0xD1FFAB1E // code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
ldr x1, [x1]
blr x1
; gcr arg pop 0
- cbnz w0, G_M44603_IG05
- b G_M44603_IG07
- ;; size=44 bbWeight=0.67 PerfScore 8.33
-G_M44603_IG04: ; bbWeight=0.67, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- ldrb w0, [x1, w0, UXTW #2]
- tbz w0, #7, G_M44603_IG07
- ;; size=20 bbWeight=0.67 PerfScore 3.67
-G_M44603_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ cbz w0, G_M44603_IG04
add w20, w20, #1
cmp w21, w20
- ble G_M44603_IG09
- ;; size=12 bbWeight=1 PerfScore 2.00
-G_M44603_IG06: ; bbWeight=0.67, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- b G_M44603_IG03
- ;; size=4 bbWeight=0.67 PerfScore 0.67
-G_M44603_IG07: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- mov w0, wzr
- ;; size=4 bbWeight=0.67 PerfScore 0.33
-G_M44603_IG08: ; bbWeight=0.67, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
- ret lr
- ;; size=16 bbWeight=0.67 PerfScore 3.33
-G_M44603_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov w0, #1
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M44603_IG10: ; bbWeight=0, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
- ret lr
- ;; size=16 bbWeight=0 PerfScore 0.00
+ bgt G_M44603_IG03
+ b G_M44603_IG08
+ ;; size=40 bbWeight=0 PerfScore 0.00
-; Total bytes of code 160, prolog size 20, PerfScore 28.33, instruction count 40, allocated bytes for code 160 (MethodHash=3ff251c4) for method System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
+; Total bytes of code 172, prolog size 20, PerfScore 23.33, instruction count 43, allocated bytes for code 172 (MethodHash=3ff251c4) for method System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
; ============================================================
Unwind Info:
@@ -114,7 +120,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
+ Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+12 (+7.69%) : 314467.dasm - System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
@@ -9,11 +9,11 @@
; 4 inlinees with PGO data; 10 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 5, 5 ) ref -> x0 class-hnd single-def <System.String>
-; V01 loc0 [V01,T02] ( 5, 5 ) int -> x19
+; V00 arg0 [V00,T00] ( 5, 5 ) ref -> x0 class-hnd single-def <System.String>
+; V01 loc0 [V01,T02] ( 8, 5 ) int -> x19
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T05] ( 2, 2 ) ubyte -> x0 "Inline return value spill temp"
-; V04 tmp2 [V04,T00] ( 4, 8 ) ushort -> x0 "Inlining Arg"
+; V03 tmp1 [V03,T05] ( 2, 0 ) ubyte -> x0 "Inline return value spill temp"
+; V04 tmp2 [V04,T01] ( 4, 6 ) ushort -> x0 "Inlining Arg"
;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V06 tmp4 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V07 tmp5 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -34,11 +34,11 @@
;* V22 tmp20 [V22 ] ( 0, 0 ) byref -> zero-ref "field V11._reference (fldOffset=0x0)" P-INDEP
;* V23 tmp21 [V23 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
; V24 cse0 [V24,T04] ( 2, 2 ) byref -> x21 hoist "CSE - aggressive"
-; V25 cse1 [V25,T03] ( 3, 3 ) int -> x20 "CSE - aggressive"
+; V25 cse1 [V25,T03] ( 4, 3 ) int -> x20 "CSE - aggressive"
;
; Lcl frame size = 8
-G_M44603_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M44603_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x18]
str x21, [sp, #0x28]
@@ -46,11 +46,11 @@ G_M44603_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
;; size=16 bbWeight=1 PerfScore 3.50
G_M44603_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
- cbz x0, G_M44603_IG08
+ cbz x0, G_M44603_IG07
mov w19, wzr
ldr w20, [x0, #0x08]
cmp w20, #0
- ble G_M44603_IG08
+ ble G_M44603_IG07
add x21, x0, #12
; byrRegs +[x21]
;; size=24 bbWeight=1 PerfScore 6.50
@@ -58,50 +58,56 @@ G_M44603_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, b
; gcrRegs -[x0]
ldrh w0, [x21, w19, UXTW #2]
cmp w0, #0xD1FFAB1E
- blo G_M44603_IG04
+ bhs G_M44603_IG09
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ ldrb w0, [x1, w0, UXTW #2]
+ tbnz w0, #7, G_M44603_IG06
+ ;; size=32 bbWeight=1 PerfScore 10.00
+G_M44603_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x21]
+ mov w0, wzr
+ ;; size=4 bbWeight=1 PerfScore 0.50
+G_M44603_IG05: ; bbWeight=1, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
+ ret lr
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M44603_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, gcvars, byref, isz
+ ; byrRegs +[x21]
+ add w19, w19, #1
+ cmp w20, w19
+ ble G_M44603_IG07
+ b G_M44603_IG03
+ ;; size=16 bbWeight=1 PerfScore 3.00
+G_M44603_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x21]
+ mov w0, #1
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M44603_IG08: ; bbWeight=0, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
+ ret lr
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M44603_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, gcvars, byref, isz
+ ; byrRegs +[x21]
movz x1, #0xD1FFAB1E // code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
ldr x1, [x1]
blr x1
; gcr arg pop 0
- cbnz w0, G_M44603_IG05
- b G_M44603_IG06
- ;; size=40 bbWeight=1 PerfScore 12.00
-G_M44603_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- ldrb w0, [x1, w0, UXTW #2]
- tbz w0, #7, G_M44603_IG06
- ;; size=20 bbWeight=1 PerfScore 5.50
-G_M44603_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
+ cbz w0, G_M44603_IG04
add w19, w19, #1
cmp w20, w19
- ble G_M44603_IG08
- b G_M44603_IG03
- ;; size=16 bbWeight=1 PerfScore 3.00
-G_M44603_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x21]
- mov w0, wzr
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M44603_IG07: ; bbWeight=1, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
- ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
-G_M44603_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov w0, #1
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M44603_IG09: ; bbWeight=0, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
- ret lr
- ;; size=16 bbWeight=0 PerfScore 0.00
+ bgt G_M44603_IG03
+ b G_M44603_IG07
+ ;; size=40 bbWeight=0 PerfScore 0.00
-; Total bytes of code 156, prolog size 16, PerfScore 36.00, instruction count 39, allocated bytes for code 156 (MethodHash=3ff251c4) for method System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
+; Total bytes of code 168, prolog size 16, PerfScore 28.50, instruction count 42, allocated bytes for code 168 (MethodHash=3ff251c4) for method System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
; ============================================================
Unwind Info:
@@ -112,7 +118,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 39 (0x00027) Actual length = 156 (0x00009c)
+ Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+12 (+12.00%) : 564270.dasm - Internal.TypeSystem.TypeSystemContext+SignatureVariableHashtable:CompareKeyToValue(uint,Internal.TypeSystem.SignatureVariable):ubyte:this (Tier1)
@@ -11,60 +11,64 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Internal.TypeSystem.TypeSystemContext+SignatureVariableHashtable>
; V01 arg1 [V01,T01] ( 3, 3 ) int -> x20 single-def
-; V02 arg2 [V02,T00] ( 6, 5 ) ref -> x19 class-hnd single-def <Internal.TypeSystem.SignatureVariable>
+; V02 arg2 [V02,T00] ( 7, 4.26) ref -> x19 class-hnd single-def <Internal.TypeSystem.SignatureVariable>
;* 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,T04] ( 3, 2 ) int -> x0
-; V06 tmp2 [V06,T03] ( 2, 2 ) int -> x0 "guarded devirt return temp"
+; V05 tmp1 [V05,T02] ( 3, 2 ) int -> x21
+; V06 tmp2 [V06,T03] ( 2, 0.26) int -> x0 "guarded devirt return temp"
;* V07 tmp3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.SignatureTypeVariable>
-; V08 cse0 [V08,T02] ( 3, 3 ) long -> x1 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M7735_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x30]!
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
mov fp, sp
mov w20, w1
mov x19, x2
; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=24 bbWeight=1 PerfScore 4.50
G_M7735_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x19]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
- cmp x1, x0
- beq G_M7735_IG03
+ ldr x0, [x19]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ cmp x0, x1
+ bne G_M7735_IG06
+ ;; size=24 bbWeight=1 PerfScore 6.00
+G_M7735_IG03: ; bbWeight=0.90, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ldr w21, [x19, #0x24]
+ ;; size=4 bbWeight=0.90 PerfScore 2.70
+G_M7735_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19]
+ cmp w20, w21
+ cset x0, eq
+ ;; size=8 bbWeight=1 PerfScore 1.00
+G_M7735_IG05: ; bbWeight=1, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
+ ret lr
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M7735_IG06: ; bbWeight=0.13, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x19]
mov x0, x19
; gcrRegs +[x0]
+ ldr x1, [x19]
ldr x1, [x1, #0x60]
ldr x1, [x1, #0x30]
blr x1
; gcrRegs -[x0]
- cbnz w0, G_M7735_IG06
- ;; size=44 bbWeight=1 PerfScore 14.50
-G_M7735_IG03: ; bbWeight=0.90, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ cbz w0, G_M7735_IG03
+ ;; size=24 bbWeight=0.13 PerfScore 1.49
+G_M7735_IG07: ; bbWeight=0.10, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr w0, [x19, #0x24]
- ;; size=4 bbWeight=0.90 PerfScore 2.70
-G_M7735_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- cmp w20, w0
- cset x0, eq
- ;; size=8 bbWeight=1 PerfScore 1.00
-G_M7735_IG05: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M7735_IG06: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x19]
- ldr w0, [x19, #0x24]
- orr w0, w0, #0xD1FFAB1E
+ orr w21, w0, #0xD1FFAB1E
b G_M7735_IG04
;; size=12 bbWeight=0.10 PerfScore 0.45
-; Total bytes of code 100, prolog size 12, PerfScore 25.15, instruction count 25, allocated bytes for code 100 (MethodHash=0d53e1c8) for method Internal.TypeSystem.TypeSystemContext+SignatureVariableHashtable:CompareKeyToValue(uint,Internal.TypeSystem.SignatureVariable):ubyte:this (Tier1)
+; Total bytes of code 112, prolog size 16, PerfScore 21.15, instruction count 28, allocated bytes for code 112 (MethodHash=0d53e1c8) for method Internal.TypeSystem.TypeSystemContext+SignatureVariableHashtable:CompareKeyToValue(uint,Internal.TypeSystem.SignatureVariable):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -75,7 +79,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -83,10 +87,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
libraries_tests.run.osx.arm64.Release.mch
-8 (-11.76%) : 598698.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass1:ShouldNotSchedule(Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol):this (Tier1)
@@ -11,7 +11,7 @@
;
; V00 this [V00,T01] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass1>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol>
-; V02 loc0 [V02,T04] ( 2, 1.00) ref -> x0 ld-addr-op class-hnd <Microsoft.CodeAnalysis.CSharp.CodeGen.LocalDefUseInfo>
+; V02 loc0 [V02,T04] ( 2, 1.08) ref -> x0 ld-addr-op class-hnd <Microsoft.CodeAnalysis.CSharp.CodeGen.LocalDefUseInfo>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V05 tmp2 [V05,T00] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>>
@@ -41,21 +41,16 @@ G_M27646_IG03: ; bbWeight=0.54, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, b
ldr x0, [x0]
; gcrRegs +[x0]
; byrRegs -[x0]
- b G_M27646_IG05
- ;; size=8 bbWeight=0.54 PerfScore 2.17
+ mov w1, #1
+ strb w1, [x0, #0x1C]
+ ;; size=12 bbWeight=0.54 PerfScore 2.44
G_M27646_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x0]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-G_M27646_IG05: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x0]
- mov w1, #1
- strb w1, [x0, #0x1C]
- b G_M27646_IG04
- ;; size=12 bbWeight=0.46 PerfScore 1.16
-; Total bytes of code 68, prolog size 8, PerfScore 19.32, instruction count 17, allocated bytes for code 68 (MethodHash=1f449401) for method Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass1:ShouldNotSchedule(Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol):this (Tier1)
+; Total bytes of code 60, prolog size 8, PerfScore 18.44, instruction count 15, allocated bytes for code 60 (MethodHash=1f449401) for method Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass1:ShouldNotSchedule(Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol):this (Tier1)
; ============================================================
Unwind Info:
@@ -66,7 +61,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-10.91%) : 589651.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System._Canon]:getHasAnyApplicableMember():ubyte:this (Tier1)
@@ -5,7 +5,7 @@
; optimized using Dynamic PGO
; fp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 114560
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 114560
; 1 inlinees with PGO data; 6 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
@@ -19,7 +19,7 @@
;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]>
;* V09 tmp5 [V09 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V10 tmp6 [V10,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V10 tmp6 [V10,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V11 tmp7 [V11,T08] ( 3, 3 ) ubyte -> x0 "Inline stloc first use temp"
;* V12 tmp8 [V12 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V13 tmp9 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]>
@@ -29,16 +29,16 @@
;* V17 tmp13 [V17 ] ( 0, 0 ) ubyte -> zero-ref "V03.[004..005)"
;* V18 cse0 [V18,T12] ( 0, 0 ) long -> zero-ref hoist "CSE - aggressive"
; V19 cse1 [V19,T07] ( 3, 3 ) ref -> x0 "CSE - aggressive"
-; V20 cse2 [V20,T06] ( 2, 2 ) long -> x22 "CSE - aggressive"
-; V21 rat0 [V21,T04] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
+; V20 cse2 [V20,T06] ( 1, 1 ) long -> x22 "CSE - aggressive"
+;* V21 rat0 [V21,T04] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V22 rat1 [V22,T05] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V23 rat2 [V23,T01] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
-;* V24 rat3 [V24,T11] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V23 rat2 [V23,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+;* V24 rat3 [V24,T10] ( 0, 0 ) long -> zero-ref "runtime lookup"
;* V25 rat4 [V25,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 96
-G_M864_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M864_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x90]!
stp x19, x20, [sp, #0x70]
stp x21, x22, [sp, #0x80]
@@ -52,7 +52,7 @@ G_M864_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n
mov x19, x0
; gcrRegs +[x19]
;; size=44 bbWeight=1 PerfScore 9.00
-G_M864_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M864_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:GetEnumerator():Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1+Enumerator[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:this
@@ -65,16 +65,15 @@ G_M864_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byre
; gcrRegs +[x20]
mov w21, w1
ldr x22, [x19]
- mov x0, x22
+ ;; size=40 bbWeight=1 PerfScore 15.50
+G_M864_IG03: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x40]
- cbz x0, G_M864_IG05
- b G_M864_IG05
- ;; size=64 bbWeight=1 PerfScore 27.00
-G_M864_IG03: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
+ add w21, w21, #1
+ ldr x0, [x20, #0x08]
; gcrRegs +[x0]
+ ldr w8, [x0, #0x10]
+ cmp w21, w8
+ bge G_M864_IG05
add x8, fp, #24 // [V02 loc1]
mov w1, w21
movz x2, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:get_Item(int):Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]:this
@@ -88,35 +87,27 @@ G_M864_IG03: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000
sub w0, w0, #22
cmp w1, #1
ccmp w0, #1, z, hi
- bhi G_M864_IG05
+ bhi G_M864_IG03
mov w0, #1
- ;; size=56 bbWeight=1 PerfScore 12.00
+ ;; size=76 bbWeight=1 PerfScore 20.00
G_M864_IG04: ; bbWeight=1, epilog, nogc, extend
ldp x21, x22, [sp, #0x80]
ldp x19, x20, [sp, #0x70]
ldp fp, lr, [sp], #0x90
ret lr
;; size=16 bbWeight=1 PerfScore 4.00
-G_M864_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
- add w21, w21, #1
- ldr x0, [x20, #0x08]
- ; gcrRegs +[x0]
- ldr w8, [x0, #0x10]
- cmp w21, w8
- blt G_M864_IG03
- ;; size=20 bbWeight=1 PerfScore 8.00
-G_M864_IG06: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0 x20]
+G_M864_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x20]
mov w0, wzr
;; size=4 bbWeight=0 PerfScore 0.00
-G_M864_IG07: ; bbWeight=0, epilog, nogc, extend
+G_M864_IG06: ; bbWeight=0, epilog, nogc, extend
ldp x21, x22, [sp, #0x80]
ldp x19, x20, [sp, #0x70]
ldp fp, lr, [sp], #0x90
ret lr
;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 220, prolog size 40, PerfScore 60.00, instruction count 55, allocated bytes for code 220 (MethodHash=caadfc9f) for method Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (Tier1)
+; Total bytes of code 196, prolog size 40, PerfScore 48.50, instruction count 49, allocated bytes for code 196 (MethodHash=caadfc9f) for method Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -127,7 +118,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 55 (0x00037) Actual length = 220 (0x0000dc)
+ Function Length : 49 (0x00031) Actual length = 196 (0x0000c4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-9.62%) : 66188.dasm - System.Collections.Immutable.ImmutableList1+Node[System.ValueTuple2[System.Canon,System.Canon]]:ItemRef(int):byref:this (Tier1)
@@ -5,76 +5,57 @@
; optimized using Dynamic PGO
; fp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 1785
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1785
; 2 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 7, 5 ) ref -> x0 this class-hnd single-def <System.Collections.Immutable.ImmutableList`1+Node[System.ValueTuple`2[System.__Canon,System.__Canon]]>
+; V00 this [V00,T01] ( 7, 5.00) ref -> x0 this class-hnd single-def <System.Collections.Immutable.ImmutableList`1+Node[System.ValueTuple`2[System.__Canon,System.__Canon]]>
; V01 arg1 [V01,T00] ( 8, 6.15) int -> x1 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T03] ( 2, 2 ) int -> x2
;* V04 tmp2 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V05 tmp3 [V05,T04] ( 2, 1.54) byref -> x0 single-def "Inline return value spill temp"
; V06 tmp4 [V06,T05] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V07 cse0 [V07,T02] ( 4, 3.08) int -> x19 "CSE - aggressive"
+; V07 cse0 [V07,T02] ( 4, 3.08) int -> x2 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M39338_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M39338_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
- tbnz w1, #31, G_M39338_IG11
+ tbnz w1, #31, G_M39338_IG10
ldr w2, [x0, #0x18]
cmp w1, w2
cset x2, lt
tst w2, #255
- beq G_M39338_IG11
+ beq G_M39338_IG10
ldr x2, [x0, #0x08]
; gcrRegs +[x2]
- ldr w19, [x2, #0x18]
- cmp w1, w19
- blt G_M39338_IG05
+ ldr w2, [x2, #0x18]
+ ; gcrRegs -[x2]
+ cmp w1, w2
+ blt G_M39338_IG08
;; size=40 bbWeight=1 PerfScore 14.00
G_M39338_IG03: ; bbWeight=0.92, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2]
- cmp w1, w19
- ble G_M39338_IG07
+ cmp w1, w2
+ bgt G_M39338_IG06
;; size=8 bbWeight=0.92 PerfScore 1.38
-G_M39338_IG04: ; bbWeight=0.15, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- b G_M39338_IG09
- ;; size=4 bbWeight=0.15 PerfScore 0.15
-G_M39338_IG05: ; bbWeight=0.08, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- ldr x0, [x0, #0x08]
- movz x2, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableList`1+Node[System.ValueTuple`2[System.__Canon,System.__Canon]]:ItemRefUnchecked(int):byref:this
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #1 LSL #32
- ldr x2, [x2]
- ldr wzr, [x0]
- ;; size=24 bbWeight=0.08 PerfScore 0.81
-G_M39338_IG06: ; bbWeight=0.08, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
- br x2
- ; gcr arg pop 0
- ;; size=12 bbWeight=0.08 PerfScore 0.31
-G_M39338_IG07: ; bbWeight=0.77, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+G_M39338_IG04: ; bbWeight=0.77, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
add x0, x0, #32
; gcrRegs -[x0]
; byrRegs +[x0]
;; size=4 bbWeight=0.77 PerfScore 0.38
-G_M39338_IG08: ; bbWeight=0.77, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+G_M39338_IG05: ; bbWeight=0.77, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.77 PerfScore 3.07
-G_M39338_IG09: ; bbWeight=0.15, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=8 bbWeight=0.77 PerfScore 1.54
+G_M39338_IG06: ; bbWeight=0.15, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0]
; byrRegs -[x0]
- sub w1, w1, w19
+ sub w1, w1, w2
sub w1, w1, #1
ldr x0, [x0, #0x10]
movz x2, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableList`1+Node[System.ValueTuple`2[System.__Canon,System.__Canon]]:ItemRefUnchecked(int):byref:this
@@ -83,13 +64,25 @@ G_M39338_IG09: ; bbWeight=0.15, gcVars=0000000000000000 {}, gcrefRegs=000
ldr x2, [x2]
ldr wzr, [x0]
;; size=32 bbWeight=0.15 PerfScore 1.78
-G_M39338_IG10: ; bbWeight=0.15, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+G_M39338_IG07: ; bbWeight=0.15, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
br x2
; gcr arg pop 0
- ;; size=12 bbWeight=0.15 PerfScore 0.62
-G_M39338_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=8 bbWeight=0.15 PerfScore 0.31
+G_M39338_IG08: ; bbWeight=0.08, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+ ldr x0, [x0, #0x08]
+ movz x2, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableList`1+Node[System.ValueTuple`2[System.__Canon,System.__Canon]]:ItemRefUnchecked(int):byref:this
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ ldr x2, [x2]
+ ldr wzr, [x0]
+ ;; size=24 bbWeight=0.08 PerfScore 0.81
+G_M39338_IG09: ; bbWeight=0.08, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ br x2
+ ; gcr arg pop 0
+ ;; size=8 bbWeight=0.08 PerfScore 0.15
+G_M39338_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
@@ -109,18 +102,18 @@ G_M39338_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=48 bbWeight=0 PerfScore 0.00
-; Total bytes of code 208, prolog size 12, PerfScore 25.01, instruction count 52, allocated bytes for code 208 (MethodHash=b59a6655) for method System.Collections.Immutable.ImmutableList`1+Node[System.ValueTuple`2[System.__Canon,System.__Canon]]:ItemRef(int):byref:this (Tier1)
+; Total bytes of code 188, prolog size 8, PerfScore 21.86, instruction count 47, allocated bytes for code 188 (MethodHash=b59a6655) for method System.Collections.Immutable.ImmutableList`1+Node[System.ValueTuple`2[System.__Canon,System.__Canon]]:ItemRef(int):byref:this (Tier1)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 3
E bit : 0
X bit : 0
Vers : 0
- Function Length : 52 (0x00034) Actual length = 208 (0x0000d0)
+ Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -134,10 +127,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end
E4 end
+32 (+17.02%) : 598542.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol:Microsoft.Cci.IFieldDefinition.get_IsReadOnly():ubyte:this (Tier1)
@@ -9,82 +9,85 @@
; 1 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 7, 5.01) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol>
+; V00 this [V00,T00] ( 11, 5 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling ret_expr" <Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol>
;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling ret_expr" <Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol>
-; V04 tmp3 [V04,T02] ( 2, 2 ) int -> x0 "guarded devirt return temp"
+; V04 tmp3 [V04,T02] ( 2, 0 ) int -> x0 "guarded devirt return temp"
;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberFieldSymbolFromDeclarator>
-; V06 tmp5 [V06,T03] ( 2, 0.03) int -> x0 "guarded devirt return temp"
+; V06 tmp5 [V06,T01] ( 2, 0 ) int -> x0 "guarded devirt return temp"
;* V07 tmp6 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedFieldSymbol>
-; V08 cse0 [V08,T01] ( 5, 3.03) long -> x20 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
-G_M6913_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M6913_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
- stp x19, x20, [sp, #0x10]
+ str x19, [sp, #0x18]
mov fp, sp
mov x19, x0
; gcrRegs +[x19]
;; size=16 bbWeight=1 PerfScore 3.00
G_M6913_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x20, [x19]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
- cmp x20, x0
- bne G_M6913_IG03
+ ldr x0, [x19]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ cmp x0, x1
+ bne G_M6913_IG07
ldr w0, [x19, #0x60]
- tbnz w0, #10, G_M6913_IG04
- b G_M6913_IG06
- ;; size=36 bbWeight=1 PerfScore 11.00
-G_M6913_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- mov x0, x19
- ; gcrRegs +[x0]
- ldr x1, [x20, #0xB8]
- ldr x1, [x1, #0x38]
- blr x1
- ; gcrRegs -[x0]
- cbz w0, G_M6913_IG06
- ;; size=20 bbWeight=1 PerfScore 8.50
-G_M6913_IG04: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- mov w0, #1
- ;; size=4 bbWeight=0.99 PerfScore 0.49
-G_M6913_IG05: ; bbWeight=0.99, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=0.99 PerfScore 2.96
-G_M6913_IG06: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x19]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
- cmp x20, x0
- beq G_M6913_IG07
- mov x0, x19
- ; gcrRegs +[x0]
- ldr x1, [x20, #0xC0]
- ldr x1, [x1, #0x30]
- blr x1
- ; gcrRegs -[x0]
- cbnz w0, G_M6913_IG09
- ;; size=40 bbWeight=0.01 PerfScore 0.16
-G_M6913_IG07: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ tbnz w0, #10, G_M6913_IG05
+ ldr x0, [x19]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ cmp x0, x1
+ bne G_M6913_IG08
+ ;; size=56 bbWeight=1 PerfScore 16.00
+G_M6913_IG03: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
mov w0, wzr
;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M6913_IG08: ; bbWeight=0.01, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
+G_M6913_IG04: ; bbWeight=0.01, epilog, nogc, extend
+ ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
- ;; size=12 bbWeight=0.01 PerfScore 0.04
-G_M6913_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=12 bbWeight=0.01 PerfScore 0.06
+G_M6913_IG05: ; bbWeight=0.99, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.99 PerfScore 0.49
+G_M6913_IG06: ; bbWeight=0.99, epilog, nogc, extend
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.99 PerfScore 3.94
+G_M6913_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19]
mov x0, x19
; gcrRegs +[x0]
+ ldr x1, [x19]
+ ldr x1, [x1, #0xB8]
+ ldr x1, [x1, #0x38]
+ blr x1
+ ; gcrRegs -[x0]
+ cbnz w0, G_M6913_IG05
+ ldr x0, [x19]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ cmp x0, x1
+ beq G_M6913_IG03
+ ;; size=48 bbWeight=0 PerfScore 0.00
+G_M6913_IG08: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ mov x0, x19
+ ; gcrRegs +[x0]
+ ldr x1, [x19]
+ ldr x1, [x1, #0xC0]
+ ldr x1, [x1, #0x30]
+ blr x1
+ ; gcrRegs -[x0]
+ cbz w0, G_M6913_IG03
+ mov x0, x19
+ ; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol:get_IsMetadataConstant():ubyte:this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
@@ -93,14 +96,14 @@ G_M6913_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {
; gcrRegs -[x0 x19]
cmp w0, #0
cset x0, eq
- ;; size=32 bbWeight=0 PerfScore 0.00
-G_M6913_IG10: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
+ ;; size=56 bbWeight=0 PerfScore 0.00
+G_M6913_IG09: ; bbWeight=0, epilog, nogc, extend
+ ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 188, prolog size 12, PerfScore 26.16, instruction count 47, allocated bytes for code 188 (MethodHash=073fe4fe) for method Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol:Microsoft.Cci.IFieldDefinition.get_IsReadOnly():ubyte:this (Tier1)
+; Total bytes of code 220, prolog size 12, PerfScore 23.50, instruction count 55, allocated bytes for code 220 (MethodHash=073fe4fe) for method Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol:Microsoft.Cci.IFieldDefinition.get_IsReadOnly():ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -111,7 +114,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
+ Function Length : 55 (0x00037) Actual length = 220 (0x0000dc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -125,7 +128,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
+28 (+17.07%) : 597870.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:NoTriviaBetween(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):ubyte (Tier1)
@@ -9,16 +9,15 @@
; 2 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 4, 4 ) ref -> x0 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V01 arg1 [V01,T00] ( 6, 4 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V00 arg0 [V00,T01] ( 5, 3 ) ref -> x0 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V01 arg1 [V01,T00] ( 7, 4 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 2, 2 ) int -> x0 "guarded devirt return temp"
+; V03 tmp1 [V03,T04] ( 2, 0 ) int -> x0 "guarded devirt return temp"
;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V05 tmp3 [V05,T05] ( 4, 2.32) int -> x1 "guarded devirt return temp"
+; V05 tmp3 [V05,T03] ( 4, 2.32) int -> x1 "guarded devirt return temp"
;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+SyntaxTokenWithTrivia>
;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
; V08 tmp6 [V08,T02] ( 3, 3 ) ref -> x0 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
-; V09 cse0 [V09,T04] ( 3, 3 ) long -> x1 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -36,25 +35,21 @@ G_M766_IG02: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, b
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
cmp x1, x2
- beq G_M766_IG03
- ldr x1, [x1, #0x58]
- ldr x1, [x1, #0x10]
- blr x1
- ; gcrRegs -[x0]
- cbnz w0, G_M766_IG07
- ;; size=40 bbWeight=1 PerfScore 14.00
-G_M766_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ bne G_M766_IG09
ldr x0, [x19]
+ ; gcrRegs -[x0]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
cmp x0, x1
- bne G_M766_IG09
+ bne G_M766_IG10
+ ;; size=48 bbWeight=1 PerfScore 12.00
+G_M766_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, #0x10]
; gcrRegs +[x0]
cbz x0, G_M766_IG06
ldr w1, [x0, #0x08]
- ;; size=36 bbWeight=1 PerfScore 13.00
+ ;; size=12 bbWeight=1 PerfScore 7.00
G_M766_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19]
cmp w1, #0
@@ -77,8 +72,22 @@ G_M766_IG08: ; bbWeight=0, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0 PerfScore 0.00
-G_M766_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x19]
+G_M766_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x0 x19]
+ ldr x1, [x0]
+ ldr x1, [x1, #0x58]
+ ldr x1, [x1, #0x10]
+ blr x1
+ ; gcrRegs -[x0]
+ cbnz w0, G_M766_IG07
+ ldr x0, [x19]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ cmp x0, x1
+ beq G_M766_IG03
+ ;; size=44 bbWeight=0 PerfScore 0.00
+G_M766_IG10: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x19
; gcrRegs +[x0]
ldr x1, [x19]
@@ -90,7 +99,7 @@ G_M766_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x
b G_M766_IG04
;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 164, prolog size 12, PerfScore 35.47, instruction count 41, allocated bytes for code 164 (MethodHash=fc09fd01) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:NoTriviaBetween(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):ubyte (Tier1)
+; Total bytes of code 192, prolog size 12, PerfScore 27.47, instruction count 48, allocated bytes for code 192 (MethodHash=fc09fd01) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:NoTriviaBetween(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):ubyte (Tier1)
; ============================================================
Unwind Info:
@@ -101,7 +110,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+28 (+25.00%) : 83934.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.Canon,System.Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (Tier1)
@@ -5,25 +5,25 @@
; optimized using Dynamic PGO
; fp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 231872
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 231872
; 1 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 4, 4 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
+; V00 this [V00,T00] ( 5, 5 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T03] ( 3, 3 ) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.MetadataReference>
-; V02 loc0 [V02,T05] ( 3, 3 ) int -> x0 ld-addr-op
+; V02 loc0 [V02,T05] ( 3, 3 ) int -> x1 ld-addr-op
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
;* V04 loc2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-;* V07 tmp2 [V07,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V07 tmp2 [V07,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V08 tmp3 [V08,T01] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.MetadataReference,int]>
; V09 tmp4 [V09,T06] ( 3, 3 ) byref -> x0 single-def "Inline stloc first use temp"
;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V11 tmp6 [V11,T07] ( 3, 3 ) ref -> x1 single-def "field V04.array (fldOffset=0x0)" P-INDEP
-;* V12 rat0 [V12,T04] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V13 rat1 [V13,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V14 rat2 [V14,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V11 tmp6 [V11,T07] ( 3, 3 ) ref -> x2 single-def "field V04.array (fldOffset=0x0)" P-INDEP
+; V12 rat0 [V12,T04] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
+;* V13 rat1 [V13,T08] ( 0, 0 ) long -> zero-ref "runtime lookup"
+; V14 rat2 [V14,T02] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -31,9 +31,10 @@ G_M43979_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x20]!
str x19, [sp, #0x18]
mov fp, sp
+ str x0, [fp, #0x10]
mov x19, x0
; gcrRegs +[x19]
- ;; size=16 bbWeight=1 PerfScore 3.00
+ ;; size=20 bbWeight=1 PerfScore 4.00
G_M43979_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
ldr x0, [x19, #0x20]
@@ -47,40 +48,51 @@ G_M43979_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {},
; gcrRegs -[x0-x1]
; byrRegs +[x0]
cbz x0, G_M43979_IG04
- ldr w0, [x0]
+ ldr w1, [x0]
+ ldr x2, [x19, #0x80]
+ ; gcrRegs +[x2]
+ ldr x0, [x19]
; byrRegs -[x0]
- ldr x1, [x19, #0x80]
- ; gcrRegs +[x1]
- ldr w2, [x1, #0x08]
- cmp w0, w2
- bhs G_M43979_IG06
- add x1, x1, #16
- ; gcrRegs -[x1]
- ; byrRegs +[x1]
- ldr x0, [x1, w0, UXTW #3]
- ; gcrRegs +[x0]
- ;; size=60 bbWeight=1 PerfScore 26.50
-G_M43979_IG03: ; bbWeight=1, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=1 PerfScore 4.00
-G_M43979_IG04: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0]
- ; byrRegs -[x1]
+ ldr x0, [x0, #0x38]
+ ldr x0, [x0]
+ ldr x0, [x0, #0xD1FFAB1E]
+ cbnz x0, G_M43979_IG06
+ ;; size=60 bbWeight=1 PerfScore 31.50
+G_M43979_IG03: ; bbWeight=0.20, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref
+ b G_M43979_IG06
+ ;; size=4 bbWeight=0.20 PerfScore 0.20
+G_M43979_IG04: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x2]
mov x0, xzr
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M43979_IG05: ; bbWeight=1, epilog, nogc, extend
+ ;; size=4 bbWeight=0.00 PerfScore 0.00
+G_M43979_IG05: ; bbWeight=0.00, epilog, nogc, extend
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.00 PerfScore 0.01
+G_M43979_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x2]
+ ldr w0, [x2, #0x08]
+ cmp w1, w0
+ bhs G_M43979_IG08
+ add x0, x2, #16
+ ; byrRegs +[x0]
+ ldr x0, [x0, w1, UXTW #3]
+ ; gcrRegs +[x0]
+ ; byrRegs -[x0]
+ ;; size=20 bbWeight=1 PerfScore 8.00
+G_M43979_IG07: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-G_M43979_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M43979_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0 x2]
bl CORINFO_HELP_RNGCHKFAIL
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 112, prolog size 12, PerfScore 38.00, instruction count 28, allocated bytes for code 112 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (Tier1)
+; Total bytes of code 140, prolog size 16, PerfScore 47.71, instruction count 35, allocated bytes for code 140 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (Tier1)
; ============================================================
Unwind Info:
@@ -91,7 +103,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
librariestestsnotieredcompilation.run.osx.arm64.Release.mch
-20 (-7.35%) : 183699.dasm - System.Tests.OperatingSystemTests+<>cDisplayClass31_0:b0(int,int,int,int):ubyte:this (FullOpts)
@@ -15,84 +15,73 @@
; V04 arg4 [V04,T05] ( 3, 2.50) int -> x4 single-def
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V07 tmp2 [V07,T00] ( 7, 8.00) ref -> x19 class-hnd exact single-def "Inlining Arg" <System.String>
+; V07 tmp2 [V07,T00] ( 7, 8.00) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String>
; V08 tmp3 [V08,T08] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp"
;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
;* V10 tmp5 [V10,T09] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
; V12 tmp7 [V12,T07] ( 3, 2 ) int -> x0 "spilling unroll qmark"
-; V13 cse0 [V13,T06] ( 3, 2.50) int -> x0 "CSE - aggressive"
+; V13 cse0 [V13,T06] ( 3, 2.50) int -> x5 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M46778_IG01: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=12 bbWeight=1.00 PerfScore 2.50
+ ;; size=8 bbWeight=1.00 PerfScore 1.50
G_M46778_IG02: ; bbWeight=1.00, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
- ldr x19, [x0, #0x08]
- ; gcrRegs +[x19]
- cbz x19, G_M46778_IG14
- ldr w0, [x19, #0x08]
- ; gcrRegs -[x0]
- cmp w0, #3
- beq G_M46778_IG05
+ ldr x0, [x0, #0x08]
+ cbz x0, G_M46778_IG12
+ ldr w5, [x0, #0x08]
+ cmp w5, #3
+ bne G_M46778_IG04
;; size=20 bbWeight=1.00 PerfScore 8.50
-G_M46778_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cmp w0, #5
- bne G_M46778_IG08
- ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M46778_IG04: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- b G_M46778_IG07
- ;; size=4 bbWeight=0.25 PerfScore 0.25
-G_M46778_IG05: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr w5, [x19, #0x0C]
- orr w5, w5, #0xD1FFAB1E
- movz w6, #111
- movk w6, #115 LSL #16
- eor w5, w5, w6
- ldr w6, [x19, #0x0E]
+G_M46778_IG03: ; bbWeight=0.25, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ldr w6, [x0, #0x0C]
orr w6, w6, #0xD1FFAB1E
- movz w7, #115
- movk w7, #120 LSL #16
+ movz w7, #111
+ movk w7, #115 LSL #16
eor w6, w6, w7
- orr w5, w5, w6
- cbnz w5, G_M46778_IG03
+ ldr w7, [x0, #0x0E]
+ orr w7, w7, #0xD1FFAB1E
+ movz w8, #115
+ movk w8, #120 LSL #16
+ eor w7, w7, w8
+ orr w6, w6, w7
+ cbz w6, G_M46778_IG08
;; size=48 bbWeight=0.25 PerfScore 2.88
-G_M46778_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- b G_M46778_IG10
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M46778_IG07: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x19]
- ldr x0, [x19, #0x0C]
- orr x0, x0, #0xD1FFAB1E
- movz x5, #109
- movk x5, #97 LSL #16
- movk x5, #99 LSL #32
- movk x5, #111 LSL #48
- eor x0, x0, x5
- ldr w5, [x19, #0x12]
- orr w5, w5, #0xD1FFAB1E
+G_M46778_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ cmp w5, #5
+ bne G_M46778_IG06
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
+G_M46778_IG05: ; bbWeight=0.25, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ldr x5, [x0, #0x0C]
+ orr x5, x5, #0xD1FFAB1E
+ movz x6, #109
+ movk x6, #97 LSL #16
+ movk x6, #99 LSL #32
+ movk x6, #111 LSL #48
+ eor x5, x5, x6
+ ldr w0, [x0, #0x12]
+ ; gcrRegs -[x0]
+ orr w0, w0, #0xD1FFAB1E
movz w6, #111
movk w6, #115 LSL #16
- eor w5, w5, w6
- mov w5, w5
- orr x0, x0, x5
+ eor w0, w0, w6
+ mov w0, w0
+ orr x0, x5, x0
cmp x0, #0
cset x0, eq
- b G_M46778_IG09
+ b G_M46778_IG07
;; size=68 bbWeight=0.25 PerfScore 3.50
-G_M46778_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
+G_M46778_IG06: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, wzr
;; size=4 bbWeight=0.25 PerfScore 0.12
-G_M46778_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cbz w0, G_M46778_IG12
+G_M46778_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cbz w0, G_M46778_IG10
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M46778_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46778_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, w1
mov w1, w2
mov w2, w3
@@ -102,21 +91,19 @@ G_M46778_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
movk x4, #1 LSL #32
ldr x4, [x4]
;; size=32 bbWeight=0.50 PerfScore 3.25
-G_M46778_IG11: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+G_M46778_IG09: ; bbWeight=0.50, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
br x4
; gcr arg pop 0
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M46778_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M46778_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M46778_IG13: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+G_M46778_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M46778_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M46778_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
@@ -133,18 +120,18 @@ G_M46778_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=40 bbWeight=0 PerfScore 0.00
-; Total bytes of code 272, prolog size 12, PerfScore 27.00, instruction count 68, allocated bytes for code 272 (MethodHash=28314945) for method System.Tests.OperatingSystemTests+<>c__DisplayClass31_0:<TestIsOSVersionAtLeast>b__0(int,int,int,int):ubyte:this (FullOpts)
+; Total bytes of code 252, prolog size 8, PerfScore 23.25, instruction count 63, allocated bytes for code 252 (MethodHash=28314945) for method System.Tests.OperatingSystemTests+<>c__DisplayClass31_0:<TestIsOSVersionAtLeast>b__0(int,int,int,int):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 68 (0x00044) Actual length = 272 (0x000110)
+ Function Length : 63 (0x0003f) Actual length = 252 (0x0000fc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -155,10 +142,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end
E4 end
-12 (-3.70%) : 221818.dasm - System.Security.Cryptography.X509Certificates.Tests.ExtensionsTests.AuthorityKeyIdentifierTests+<>cDisplayClass15_0:b1():System.Object:this (FullOpts)
@@ -31,8 +31,8 @@
;* V20 tmp19 [V20 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
; V21 tmp20 [V21 ] ( 2, 3 ) byref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V11._reference (fldOffset=0x0)" P-DEP
; V22 tmp21 [V22 ] ( 2, 3 ) int -> [fp+0x20] do-not-enreg[X] addr-exposed "field V11._length (fldOffset=0x8)" P-DEP
-; V23 tmp22 [V23,T08] ( 3, 1.50) byref -> registers "field V14._reference (fldOffset=0x0)" P-INDEP
-; V24 tmp23 [V24,T10] ( 3, 1.50) int -> registers "field V14._length (fldOffset=0x8)" P-INDEP
+; V23 tmp22 [V23,T08] ( 3, 1.50) byref -> x2 "field V14._reference (fldOffset=0x0)" P-INDEP
+; V24 tmp23 [V24,T10] ( 3, 1.50) int -> x0 "field V14._length (fldOffset=0x8)" P-INDEP
; V25 tmp24 [V25,T12] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
;
; Lcl frame size = 24
@@ -132,11 +132,10 @@ G_M46829_IG09: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, b
G_M46829_IG10: ; bbWeight=0.44, gcrefRegs=200002 {x1 x21}, byrefRegs=0000 {}, byref
add x2, x1, #16
; byrRegs +[x2]
- ldr w1, [x1, #0x08]
- ; gcrRegs -[x1]
- sxtw w0, w1
- ;; size=12 bbWeight=0.44 PerfScore 1.78
+ ldr w0, [x1, #0x08]
+ ;; size=8 bbWeight=0.44 PerfScore 1.56
G_M46829_IG11: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0004 {x2}, byref
+ ; gcrRegs -[x1]
mov x1, x2
; byrRegs +[x1]
mov w2, w0
@@ -161,17 +160,14 @@ G_M46829_IG12: ; bbWeight=1, epilog, nogc, extend
;; size=16 bbWeight=1 PerfScore 5.00
G_M46829_IG13: ; bbWeight=0.06, gcVars=0000000000000000 {}, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
- mov x1, xzr
- ; byrRegs +[x1]
- mov w2, wzr
- mov w0, w2
- mov x2, x1
+ mov x2, xzr
; byrRegs +[x2]
+ mov w0, wzr
b G_M46829_IG11
- ;; size=20 bbWeight=0.06 PerfScore 0.17
+ ;; size=12 bbWeight=0.06 PerfScore 0.11
G_M46829_IG14: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x21] +[x19]
- ; byrRegs -[x1-x2]
+ ; byrRegs -[x2]
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -190,7 +186,7 @@ G_M46829_IG14: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
brk_unix #0
;; size=52 bbWeight=0 PerfScore 0.00
-; Total bytes of code 324, prolog size 20, PerfScore 58.73, instruction count 81, allocated bytes for code 324 (MethodHash=b70f4912) for method System.Security.Cryptography.X509Certificates.Tests.ExtensionsTests.AuthorityKeyIdentifierTests+<>c__DisplayClass15_0:<DecodeInvalid>b__1():System.Object:this (FullOpts)
+; Total bytes of code 312, prolog size 20, PerfScore 58.45, instruction count 78, allocated bytes for code 312 (MethodHash=b70f4912) for method System.Security.Cryptography.X509Certificates.Tests.ExtensionsTests.AuthorityKeyIdentifierTests+<>c__DisplayClass15_0:<DecodeInvalid>b__1():System.Object:this (FullOpts)
; ============================================================
Unwind Info:
@@ -201,7 +197,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 81 (0x00051) Actual length = 324 (0x000144)
+ Function Length : 78 (0x0004e) Actual length = 312 (0x000138)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-8 (-3.70%) : 11052.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceParameterSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Predicate`1[Microsoft.CodeAnalysis.CSharp.Symbol],System.Threading.CancellationToken):this (FullOpts)
@@ -18,7 +18,7 @@
;* V07 tmp3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
; V08 tmp4 [V08 ] ( 3, 5 ) struct ( 8) [fp+0x18] do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.SpinWait>
; V09 tmp5 [V09 ] ( 4, 10.38) struct ( 8) [fp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <System.Threading.CancellationToken>
-;* V10 tmp6 [V10,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V10 tmp6 [V10,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V11 tmp7 [V11,T06] ( 2, 2.77) ref -> x0 class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource>
;* V12 tmp8 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V13 tmp9 [V13,T01] ( 3, 26 ) byref -> x20 single-def "Inlining Arg"
@@ -28,7 +28,7 @@
;* V17 tmp13 [V17 ] ( 0, 0 ) ref -> zero-ref "field V06.array (fldOffset=0x0)" P-INDEP
; V18 tmp14 [V18 ] ( 3, 5 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V08._count (fldOffset=0x0)" P-DEP
; V19 tmp15 [V19 ] ( 4, 5.19) ref -> [fp+0x10] do-not-enreg[X] addr-exposed "field V09._source (fldOffset=0x0)" P-DEP
-; V20 tmp16 [V20,T08] ( 2, 1 ) ref -> x0 single-def "Field obj"
+; V20 tmp16 [V20,T07] ( 2, 1 ) ref -> x0 single-def "Field obj"
;
; Lcl frame size = 16
@@ -45,7 +45,7 @@ G_M61615_IG02: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {},
add x20, x0, #48
; byrRegs +[x20]
ldapr w1, [x20]
- tbnz w1, #0, G_M61615_IG06
+ tbnz w1, #0, G_M61615_IG07
;; size=12 bbWeight=1 PerfScore 4.50
G_M61615_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=100000 {x20}, byref, isz
ldr x1, [x0]
@@ -58,19 +58,26 @@ G_M61615_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=10000
str wzr, [fp, #0x18] // [V08 tmp4]
ldapr w0, [x20]
; gcrRegs -[x0]
- tbnz w0, #0, G_M61615_IG06
+ tbnz w0, #0, G_M61615_IG07
str wzr, [fp, #0x18] // [V08 tmp4]
ldapr w0, [x20]
- tbnz w0, #0, G_M61615_IG06
+ tbnz w0, #0, G_M61615_IG07
;; size=48 bbWeight=0.50 PerfScore 12.00
G_M61615_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
; gcrRegs -[x19]
ldr x0, [fp, #0x10] // [V19 tmp15]
; gcrRegs +[x0]
- cbnz x0, G_M61615_IG07
+ cbz x0, G_M61615_IG06
;; size=8 bbWeight=4 PerfScore 12.00
-G_M61615_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
+G_M61615_IG05: ; bbWeight=0.69, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
; gcrRegs -[x0]
+ ldr x0, [fp, #0x10] // [V19 tmp15]
+ ; gcrRegs +[x0]
+ ldapur w0, [x0, #0x20]
+ ; gcrRegs -[x0]
+ cbnz w0, G_M61615_IG10
+ ;; size=12 bbWeight=0.69 PerfScore 4.15
+G_M61615_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
add x0, fp, #24 // [V08 tmp4]
mov w1, #20
movz x2, #0xD1FFAB1E // code for <unknown method>
@@ -82,36 +89,25 @@ G_M61615_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, b
ldapr w0, [x20]
tbz w0, #0, G_M61615_IG04
;; size=36 bbWeight=4 PerfScore 42.00
-G_M61615_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref
- b G_M61615_IG08
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M61615_IG07: ; bbWeight=0.69, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
- ldr x0, [fp, #0x10] // [V19 tmp15]
- ; gcrRegs +[x0]
- ldapur w0, [x0, #0x20]
- ; gcrRegs -[x0]
- cbnz w0, G_M61615_IG11
- b G_M61615_IG05
- ;; size=16 bbWeight=0.69 PerfScore 4.84
-G_M61615_IG08: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
+G_M61615_IG07: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
ldr w0, [x20]
orr w1, w0, #0xD1FFAB1E
cmp w1, w0
- beq G_M61615_IG10
+ beq G_M61615_IG09
;; size=16 bbWeight=8 PerfScore 40.00
-G_M61615_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
+G_M61615_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
mov w2, w0
casal w2, w1, [x20]
cmp w2, w0
- bne G_M61615_IG08
+ bne G_M61615_IG07
;; size=16 bbWeight=4 PerfScore 20.00
-G_M61615_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M61615_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x20]
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=1 PerfScore 3.00
-G_M61615_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M61615_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
add x0, fp, #16 // [V09 tmp5]
movz x1, #0xD1FFAB1E // code for System.Threading.CancellationToken:ThrowOperationCanceledException():this
movk x1, #0xD1FFAB1E LSL #16
@@ -122,7 +118,7 @@ G_M61615_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 216, prolog size 20, PerfScore 143.34, instruction count 54, allocated bytes for code 216 (MethodHash=63730f50) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceParameterSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Predicate`1[Microsoft.CodeAnalysis.CSharp.Symbol],System.Threading.CancellationToken):this (FullOpts)
+; Total bytes of code 208, prolog size 20, PerfScore 141.65, instruction count 52, allocated bytes for code 208 (MethodHash=63730f50) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceParameterSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Predicate`1[Microsoft.CodeAnalysis.CSharp.Symbol],System.Threading.CancellationToken):this (FullOpts)
; ============================================================
Unwind Info:
@@ -133,7 +129,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 54 (0x00036) Actual length = 216 (0x0000d8)
+ Function Length : 52 (0x00034) Actual length = 208 (0x0000d0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+8 (+4.65%) : 121009.dasm - System.Net.SocketAddress:set_Size(int):this (FullOpts)
@@ -33,23 +33,33 @@ G_M2431_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
ldr w20, [x1, #0x08]
cmp w19, w20
- blt G_M2431_IG04
+ bge G_M2431_IG05
;; size=16 bbWeight=1 PerfScore 7.50
-G_M2431_IG03: ; bbWeight=0.09, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M2431_IG03: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1]
+ tbz w19, #31, G_M2431_IG07
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M2431_IG04: ; bbWeight=0.41, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ b G_M2431_IG10
+ ;; size=4 bbWeight=0.41 PerfScore 0.41
+G_M2431_IG05: ; bbWeight=0.09, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x0]
cmp w19, w20
- bgt G_M2431_IG06
+ bgt G_M2431_IG09
;; size=8 bbWeight=0.09 PerfScore 0.14
-G_M2431_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- tbnz w19, #31, G_M2431_IG07
+G_M2431_IG06: ; bbWeight=0.08, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ b G_M2431_IG03
+ ;; size=4 bbWeight=0.08 PerfScore 0.08
+G_M2431_IG07: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
str w19, [x0, #0x10]
- ;; size=8 bbWeight=1 PerfScore 2.00
-G_M2431_IG05: ; bbWeight=1, epilog, nogc, extend
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M2431_IG08: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 3.00
-G_M2431_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M2431_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
@@ -70,7 +80,7 @@ G_M2431_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
; gcrRegs -[x2]
brk_unix #0
;; size=56 bbWeight=0 PerfScore 0.00
-G_M2431_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M2431_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -91,7 +101,7 @@ G_M2431_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=56 bbWeight=0 PerfScore 0.00
-; Total bytes of code 172, prolog size 12, PerfScore 15.64, instruction count 43, allocated bytes for code 172 (MethodHash=f3e5f680) for method System.Net.SocketAddress:set_Size(int):this (FullOpts)
+; Total bytes of code 180, prolog size 12, PerfScore 16.13, instruction count 45, allocated bytes for code 180 (MethodHash=f3e5f680) for method System.Net.SocketAddress:set_Size(int):this (FullOpts)
; ============================================================
Unwind Info:
@@ -102,7 +112,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
+ Function Length : 45 (0x0002d) Actual length = 180 (0x0000b4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+4.82%) : 149318.dasm - System.Net.Sockets.Socket:set_Ttl(short):this (FullOpts)
@@ -17,34 +17,31 @@
; V06 tmp4 [V06,T07] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
; V07 tmp5 [V07,T08] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
; V08 tmp6 [V08,T09] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V09 cse0 [V09,T04] ( 3, 2.50) int -> x20 "CSE - aggressive"
+; V09 cse0 [V09,T04] ( 3, 2.50) int -> x21 "CSE - aggressive"
; V10 cse1 [V10,T03] ( 6, 4 ) int -> x19 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M64601_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x30]!
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=16 bbWeight=1 PerfScore 3.50
G_M64601_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
sxth w19, w1
- tbnz w19, #31, G_M64601_IG10
+ tbnz w19, #31, G_M64601_IG12
sxtw w20, w19
cmp w20, #255
- blt G_M64601_IG04
+ bge G_M64601_IG06
;; size=20 bbWeight=1 PerfScore 3.50
-G_M64601_IG03: ; bbWeight=0.09, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- cmp w20, #255
- bgt G_M64601_IG11
- ;; size=8 bbWeight=0.09 PerfScore 0.14
-G_M64601_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ldr w20, [x0, #0x50]
- cmp w20, #2
- bne G_M64601_IG07
+G_M64601_IG03: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ldr w21, [x0, #0x50]
+ cmp w21, #2
+ bne G_M64601_IG08
;; size=12 bbWeight=1 PerfScore 4.50
-G_M64601_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M64601_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
mov w3, w19
mov w1, wzr
mov w2, #4
@@ -55,15 +52,23 @@ G_M64601_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
blr x4
; gcrRegs -[x0]
;; size=32 bbWeight=0.50 PerfScore 3.50
-G_M64601_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+G_M64601_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M64601_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M64601_IG06: ; bbWeight=0.09, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x0]
- cmp w20, #23
- bne G_M64601_IG09
+ cmp w20, #255
+ bgt G_M64601_IG10
+ ;; size=8 bbWeight=0.09 PerfScore 0.14
+G_M64601_IG07: ; bbWeight=0.08, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ b G_M64601_IG03
+ ;; size=4 bbWeight=0.08 PerfScore 0.08
+G_M64601_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ cmp w21, #23
+ bne G_M64601_IG11
mov w3, w19
mov w1, #41
mov w2, #4
@@ -74,12 +79,33 @@ G_M64601_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
blr x4
; gcrRegs -[x0]
;; size=40 bbWeight=0.50 PerfScore 4.25
-G_M64601_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+G_M64601_IG09: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M64601_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M64601_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, #0xD1FFAB1E
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ bl CORINFO_HELP_STRCNS
+ ; gcrRegs +[x0]
+ mov x2, x0
+ ; gcrRegs +[x2]
+ mov w0, w20
+ ; gcrRegs -[x0]
+ mov w1, #255
+ movz x3, #0xD1FFAB1E // code for System.ArgumentOutOfRangeException:ThrowGreater[int](int,int,System.String)
+ movk x3, #0xD1FFAB1E LSL #16
+ movk x3, #1 LSL #32
+ ldr x3, [x3]
+ blr x3
+ ; gcrRegs -[x2]
+ brk_unix #0
+ ;; size=56 bbWeight=0 PerfScore 0.00
+G_M64601_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -108,7 +134,7 @@ G_M64601_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
bl CORINFO_HELP_THROW
; gcrRegs -[x0 x19]
;; size=76 bbWeight=0 PerfScore 0.00
-G_M64601_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M64601_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -127,28 +153,8 @@ G_M64601_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
brk_unix #0
;; size=52 bbWeight=0 PerfScore 0.00
-G_M64601_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov w0, #0xD1FFAB1E
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- bl CORINFO_HELP_STRCNS
- ; gcrRegs +[x0]
- mov x2, x0
- ; gcrRegs +[x2]
- mov w0, w20
- ; gcrRegs -[x0]
- mov w1, #255
- movz x3, #0xD1FFAB1E // code for System.ArgumentOutOfRangeException:ThrowGreater[int](int,int,System.String)
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #1 LSL #32
- ldr x3, [x3]
- blr x3
- ; gcrRegs -[x2]
- brk_unix #0
- ;; size=56 bbWeight=0 PerfScore 0.00
-; Total bytes of code 332, prolog size 12, PerfScore 21.39, instruction count 83, allocated bytes for code 332 (MethodHash=240903a6) for method System.Net.Sockets.Socket:set_Ttl(short):this (FullOpts)
+; Total bytes of code 348, prolog size 16, PerfScore 24.47, instruction count 87, allocated bytes for code 348 (MethodHash=240903a6) for method System.Net.Sockets.Socket:set_Ttl(short):this (FullOpts)
; ============================================================
Unwind Info:
@@ -159,7 +165,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 83 (0x00053) Actual length = 332 (0x00014c)
+ Function Length : 87 (0x00057) Actual length = 348 (0x00015c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -170,10 +176,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
+12 (+7.32%) : 70529.dasm - System.Collections.CaseInsensitiveHashCodeProvider:GetHashCode(System.Object):int:this (FullOpts)
@@ -10,43 +10,44 @@
;
; V00 this [V00,T01] ( 3, 2.50) ref -> x0 this class-hnd single-def <System.Collections.CaseInsensitiveHashCodeProvider>
; V01 arg1 [V01,T00] ( 6, 5.00) ref -> x1 class-hnd single-def <System.Object>
-; V02 loc0 [V02,T04] ( 3, 1.50) ref -> x1 class-hnd exact <System.String>
+; V02 loc0 [V02,T06] ( 3, 1.50) ref -> x1 class-hnd exact <System.String>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String>
-; V05 tmp2 [V05,T02] ( 3, 3.00) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Globalization.CompareInfo>
+; V05 tmp2 [V05,T02] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Globalization.CompareInfo>
;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V07 tmp4 [V07 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V08 tmp5 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V09 tmp6 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V10 tmp7 [V10,T06] ( 2, 2.00) int -> x1 "Inlining Arg"
-; V11 tmp8 [V11,T05] ( 2, 2.00) byref -> x2 single-def "Inlining Arg"
+; V10 tmp7 [V10,T05] ( 2, 2 ) int -> x1 "Inlining Arg"
+; V11 tmp8 [V11,T04] ( 2, 2 ) byref -> x2 single-def "Inlining Arg"
;* V12 tmp9 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp10 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp11 [V14 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V15 tmp12 [V15 ] ( 0, 0 ) byref -> zero-ref single-def "field V06._reference (fldOffset=0x0)" P-INDEP
;* V16 tmp13 [V16 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
-; V17 tmp14 [V17,T07] ( 2, 1.00) byref -> x2 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
-; V18 tmp15 [V18,T09] ( 2, 1.00) int -> x3 "field V07._length (fldOffset=0x8)" P-INDEP
-; V19 tmp16 [V19,T08] ( 2, 1.00) byref -> x2 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
-; V20 tmp17 [V20,T10] ( 2, 1.00) int -> x1 "field V08._length (fldOffset=0x8)" P-INDEP
+; V17 tmp14 [V17,T07] ( 2, 1 ) byref -> x2 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+; V18 tmp15 [V18,T09] ( 2, 1 ) int -> x3 "field V07._length (fldOffset=0x8)" P-INDEP
+; V19 tmp16 [V19,T08] ( 2, 1 ) byref -> x2 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+; V20 tmp17 [V20,T10] ( 2, 1 ) int -> x1 "field V08._length (fldOffset=0x8)" P-INDEP
;* V21 tmp18 [V21 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP
;* V22 tmp19 [V22 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V23 cse0 [V23,T03] ( 3, 2.50) long -> x2 "CSE - aggressive"
+; V23 cse0 [V23,T03] ( 3, 2.50) long -> x19 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M64002_IG01: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=1.00 PerfScore 1.50
+ ;; size=12 bbWeight=1.00 PerfScore 2.50
G_M64002_IG02: ; bbWeight=1.00, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0-x1]
cbz x1, G_M64002_IG07
- ldr x2, [x1]
- movz x3, #0xD1FFAB1E
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #1 LSL #32
- cmp x2, x3
+ ldr x19, [x1]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ cmp x19, x2
bne G_M64002_IG05
;; size=28 bbWeight=1.00 PerfScore 7.00
G_M64002_IG03: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
@@ -71,23 +72,25 @@ G_M64002_IG03: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}
; byrRegs -[x1]
;; size=52 bbWeight=0.50 PerfScore 8.50
G_M64002_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M64002_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x1]
mov x0, x1
; gcrRegs +[x0]
- ldr x1, [x2, #0x48]
+ ldr x1, [x19, #0x48]
; gcrRegs -[x1]
ldr x1, [x1, #0x18]
blr x1
; gcrRegs -[x0]
;; size=16 bbWeight=0.50 PerfScore 3.75
G_M64002_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M64002_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
@@ -104,18 +107,18 @@ G_M64002_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=44 bbWeight=0 PerfScore 0.00
-; Total bytes of code 164, prolog size 8, PerfScore 22.75, instruction count 41, allocated bytes for code 164 (MethodHash=067e05fd) for method System.Collections.CaseInsensitiveHashCodeProvider:GetHashCode(System.Object):int:this (FullOpts)
+; Total bytes of code 176, prolog size 12, PerfScore 25.75, instruction count 44, allocated bytes for code 176 (MethodHash=067e05fd) for method System.Collections.CaseInsensitiveHashCodeProvider:GetHashCode(System.Object):int:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -126,7 +129,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
Details
Improvements/regressions per collection
| Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
| benchmarks.run.osx.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| benchmarks.run_pgo.osx.arm64.checked.mch |
1,807 |
1,092 |
273 |
442 |
-12,440 |
+3,252 |
| benchmarks.run_tiered.osx.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| coreclr_tests.run.osx.arm64.checked.mch |
2,836 |
887 |
1,012 |
937 |
-8,024 |
+24,268 |
| libraries.crossgen2.osx.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| libraries.pmi.osx.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| libraries_tests.run.osx.arm64.Release.mch |
16,600 |
4,704 |
6,425 |
5,471 |
-68,088 |
+267,136 |
| librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
1,659 |
768 |
252 |
639 |
-5,344 |
+2,232 |
| realworld.run.osx.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
|
22,902 |
7,451 |
7,962 |
7,489 |
-93,896 |
+296,888 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.osx.arm64.checked.mch |
24,934 |
4 |
24,930 |
0 (0.00%) |
0 (0.00%) |
| benchmarks.run_pgo.osx.arm64.checked.mch |
66,000 |
46,501 |
19,499 |
0 (0.00%) |
40 (0.06%) |
| benchmarks.run_tiered.osx.arm64.checked.mch |
48,267 |
37,461 |
10,806 |
0 (0.00%) |
0 (0.00%) |
| coreclr_tests.run.osx.arm64.checked.mch |
577,166 |
353,821 |
223,345 |
3 (0.00%) |
3 (0.00%) |
| libraries.crossgen2.osx.arm64.checked.mch |
265,075 |
15 |
265,060 |
0 (0.00%) |
0 (0.00%) |
| libraries.pmi.osx.arm64.checked.mch |
317,741 |
18 |
317,723 |
0 (0.00%) |
0 (0.00%) |
| libraries_tests.run.osx.arm64.Release.mch |
629,239 |
461,646 |
167,593 |
0 (0.00%) |
34 (0.01%) |
| librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
302,101 |
21,618 |
280,483 |
0 (0.00%) |
0 (0.00%) |
| realworld.run.osx.arm64.checked.mch |
31,605 |
3 |
31,602 |
0 (0.00%) |
0 (0.00%) |
|
2,262,128 |
921,087 |
1,341,041 |
3 (0.00%) |
77 (0.00%) |
jit-analyze output
benchmarks.run_pgo.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 24713208 (overridden on cmd)
Total bytes of diff: 24704020 (overridden on cmd)
Total bytes of delta: -9188 (-0.04 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
348 : 63678.dasm (49.15 % of base)
256 : 59836.dasm (37.87 % of base)
40 : 34847.dasm (2.16 % of base)
40 : 36290.dasm (2.16 % of base)
40 : 59432.dasm (2.65 % of base)
32 : 32791.dasm (3.94 % of base)
32 : 35455.dasm (3.94 % of base)
32 : 36086.dasm (3.94 % of base)
32 : 48596.dasm (3.94 % of base)
32 : 51194.dasm (3.94 % of base)
32 : 53015.dasm (3.94 % of base)
32 : 53975.dasm (3.94 % of base)
32 : 55462.dasm (3.94 % of base)
32 : 56546.dasm (3.94 % of base)
32 : 56949.dasm (3.94 % of base)
32 : 58920.dasm (3.94 % of base)
32 : 60556.dasm (3.94 % of base)
32 : 62044.dasm (3.94 % of base)
32 : 62812.dasm (3.94 % of base)
32 : 64816.dasm (3.94 % of base)
Top file improvements (bytes):
-48 : 24051.dasm (-6.94 % of base)
-48 : 26644.dasm (-6.94 % of base)
-48 : 35319.dasm (-6.94 % of base)
-48 : 35510.dasm (-6.94 % of base)
-48 : 52516.dasm (-6.94 % of base)
-48 : 53113.dasm (-6.94 % of base)
-48 : 57550.dasm (-6.94 % of base)
-48 : 59243.dasm (-6.94 % of base)
-48 : 59759.dasm (-1.16 % of base)
-48 : 62267.dasm (-6.94 % of base)
-48 : 63652.dasm (-6.94 % of base)
-48 : 65515.dasm (-2.20 % of base)
-36 : 34852.dasm (-0.81 % of base)
-36 : 36295.dasm (-0.70 % of base)
-32 : 64541.dasm (-2.26 % of base)
-32 : 65504.dasm (-2.37 % of base)
-28 : 50802.dasm (-0.61 % of base)
-28 : 63867.dasm (-1.27 % of base)
-24 : 27485.dasm (-2.97 % of base)
-24 : 9901.dasm (-3.00 % of base)
77 total files with Code Size differences (30 improved, 47 regressed), 20 unchanged.
Top method regressions (bytes):
348 (49.15 % of base) : 63678.dasm - System.Collections.Generic.SegmentedArrayBuilder`1[System.__Canon]:AddNonICollectionRangeInlined(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
256 (37.87 % of base) : 59836.dasm - System.Linq.Enumerable:Count[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):int (Tier1)
40 (2.65 % of base) : 59432.dasm - System.Text.RegularExpressions.RegexCache:Get(System.Text.RegularExpressions.RegexCache+Key):System.Text.RegularExpressions.Regex (Tier1)
40 (2.16 % of base) : 34847.dasm - Utility:sscanf(System.String,System.String,System.Object[]):int (Tier1)
40 (2.16 % of base) : 36290.dasm - Utility:sscanf(System.String,System.String,System.Object[]):int (Tier1)
32 (3.94 % of base) : 32791.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(ulong,int,byref,byref):ulong (Tier1)
32 (3.94 % of base) : 35455.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(ulong,int,byref,byref):ulong (Tier1)
32 (3.94 % of base) : 36086.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(ulong,int,byref,byref):ulong (Tier1)
32 (3.94 % of base) : 48596.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(ulong,int,byref,byref):ulong (Tier1)
32 (3.94 % of base) : 51194.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(ulong,int,byref,byref):ulong (Tier1)
32 (3.94 % of base) : 53015.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(ulong,int,byref,byref):ulong (Tier1)
32 (3.94 % of base) : 53975.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(ulong,int,byref,byref):ulong (Tier1)
32 (3.94 % of base) : 55462.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(ulong,int,byref,byref):ulong (Tier1)
32 (3.94 % of base) : 56546.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(ulong,int,byref,byref):ulong (Tier1)
32 (3.94 % of base) : 56949.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(ulong,int,byref,byref):ulong (Tier1)
32 (3.94 % of base) : 58920.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(ulong,int,byref,byref):ulong (Tier1)
32 (3.94 % of base) : 60556.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(ulong,int,byref,byref):ulong (Tier1)
32 (3.94 % of base) : 62044.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(ulong,int,byref,byref):ulong (Tier1)
32 (3.94 % of base) : 62812.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(ulong,int,byref,byref):ulong (Tier1)
32 (3.94 % of base) : 64816.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(ulong,int,byref,byref):ulong (Tier1)
Top method improvements (bytes):
-48 (-6.94 % of base) : 24051.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 26644.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 35319.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 35510.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 52516.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 53113.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 57550.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 59243.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 62267.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 63652.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-2.20 % of base) : 65515.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon,System.Decimal](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.Decimal],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.Decimal] (Tier1)
-48 (-1.16 % of base) : 59759.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)
-36 (-0.70 % of base) : 36295.dasm - Neural:read_data_file():this (Tier1)
-36 (-0.81 % of base) : 34852.dasm - NeuralJagged:read_data_file():this (Tier1)
-32 (-2.26 % of base) : 64541.dasm - System.Linq.Enumerable:<AggregateByIterator>g__PopulateDictionary|74_0[System.__Canon,System.__Canon,System.Decimal](System.Collections.Generic.IEnumerator`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Decimal,System.Func`3[System.Decimal,System.__Canon,System.Decimal],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.Decimal] (Tier1)
-32 (-2.37 % of base) : 65504.dasm - System.Linq.Enumerable:Aggregate[System.__Canon,System.Decimal](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Decimal,System.Func`3[System.Decimal,System.__Canon,System.Decimal]):System.Decimal (Tier1)
-28 (-0.61 % of base) : 50802.dasm - Microsoft.Extensions.Configuration.ConfigurationProvider:GetChildKeys(System.Collections.Generic.IEnumerable`1[System.String],System.String):System.Collections.Generic.IEnumerable`1[System.String]:this (Tier1)
-28 (-1.27 % of base) : 63867.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon,int](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,int],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,int] (Tier1)
-24 (-2.97 % of base) : 27485.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-24 (-3.00 % of base) : 9901.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
Top method regressions (percentages):
348 (49.15 % of base) : 63678.dasm - System.Collections.Generic.SegmentedArrayBuilder`1[System.__Canon]:AddNonICollectionRangeInlined(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
256 (37.87 % of base) : 59836.dasm - System.Linq.Enumerable:Count[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):int (Tier1)
28 (8.75 % of base) : 12214.dasm - System.Threading.PortableThreadPool:NotifyWorkItemComplete(System.Object,int):ubyte:this (Tier1)
12 (7.69 % of base) : 27538.dasm - System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
12 (7.69 % of base) : 28386.dasm - System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
12 (7.69 % of base) : 53321.dasm - System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
12 (7.69 % of base) : 54980.dasm - System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
12 (7.69 % of base) : 55090.dasm - System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
12 (5.77 % of base) : 31620.dasm - Interop+AppleCrypto:SecKeychainItemCopyKeychain(long):System.Security.Cryptography.Apple.SafeKeychainHandle (Tier1)
16 (5.06 % of base) : 55407.dasm - System.Collections.Generic.GenericEqualityComparer`1[System.Text.RegularExpressions.RegexCache+Key]:Equals(System.Text.RegularExpressions.RegexCache+Key,System.Text.RegularExpressions.RegexCache+Key):ubyte:this (Tier1)
12 (4.62 % of base) : 58468.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
32 (3.94 % of base) : 32791.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(ulong,int,byref,byref):ulong (Tier1)
32 (3.94 % of base) : 35455.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(ulong,int,byref,byref):ulong (Tier1)
32 (3.94 % of base) : 36086.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(ulong,int,byref,byref):ulong (Tier1)
32 (3.94 % of base) : 48596.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(ulong,int,byref,byref):ulong (Tier1)
32 (3.94 % of base) : 51194.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(ulong,int,byref,byref):ulong (Tier1)
32 (3.94 % of base) : 53015.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(ulong,int,byref,byref):ulong (Tier1)
32 (3.94 % of base) : 53975.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(ulong,int,byref,byref):ulong (Tier1)
32 (3.94 % of base) : 55462.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(ulong,int,byref,byref):ulong (Tier1)
32 (3.94 % of base) : 56546.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(ulong,int,byref,byref):ulong (Tier1)
Top method improvements (percentages):
-48 (-6.94 % of base) : 24051.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 26644.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 35319.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 35510.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 52516.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 53113.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 57550.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 59243.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 62267.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 63652.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-12 (-4.92 % of base) : 25309.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:GetCanSeek():ubyte:this (Tier1)
-12 (-4.92 % of base) : 29146.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:GetCanSeek():ubyte:this (Tier1)
-12 (-4.92 % of base) : 30261.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:GetCanSeek():ubyte:this (Tier1)
-12 (-4.92 % of base) : 31725.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:GetCanSeek():ubyte:this (Tier1)
-12 (-4.92 % of base) : 33513.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:GetCanSeek():ubyte:this (Tier1)
-12 (-4.92 % of base) : 33889.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:GetCanSeek():ubyte:this (Tier1)
-12 (-4.92 % of base) : 37601.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:GetCanSeek():ubyte:this (Tier1)
-12 (-4.92 % of base) : 48253.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:GetCanSeek():ubyte:this (Tier1)
-12 (-4.92 % of base) : 61029.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:GetCanSeek():ubyte:this (Tier1)
-12 (-4.92 % of base) : 64613.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:GetCanSeek():ubyte:this (Tier1)
coreclr_tests.run.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 476227036 (overridden on cmd)
Total bytes of diff: 476243280 (overridden on cmd)
Total bytes of delta: 16244 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
1284 : 570465.dasm (36.27 % of base)
1124 : 564256.dasm (31.22 % of base)
920 : 570807.dasm (35.55 % of base)
908 : 565274.dasm (34.66 % of base)
908 : 568646.dasm (39.14 % of base)
904 : 565839.dasm (61.08 % of base)
868 : 571035.dasm (63.45 % of base)
836 : 565838.dasm (73.59 % of base)
816 : 568162.dasm (73.38 % of base)
764 : 571672.dasm (36.87 % of base)
684 : 571034.dasm (70.08 % of base)
668 : 571532.dasm (71.37 % of base)
644 : 570540.dasm (32.66 % of base)
632 : 564780.dasm (31.16 % of base)
532 : 563998.dasm (32.84 % of base)
516 : 570589.dasm (26.06 % of base)
512 : 564635.dasm (25.60 % of base)
364 : 570600.dasm (26.53 % of base)
348 : 469655.dasm (35.22 % of base)
344 : 564668.dasm (25.07 % of base)
Top file improvements (bytes):
-104 : 564660.dasm (-2.42 % of base)
-88 : 570639.dasm (-3.59 % of base)
-76 : 568690.dasm (-2.03 % of base)
-68 : 570519.dasm (-1.60 % of base)
-56 : 308752.dasm (-5.53 % of base)
-56 : 308859.dasm (-6.03 % of base)
-56 : 308886.dasm (-6.01 % of base)
-56 : 308887.dasm (-6.01 % of base)
-56 : 308889.dasm (-6.01 % of base)
-56 : 308857.dasm (-6.03 % of base)
-56 : 308855.dasm (-6.03 % of base)
-56 : 308860.dasm (-6.03 % of base)
-56 : 308888.dasm (-6.01 % of base)
-56 : 308858.dasm (-6.03 % of base)
-52 : 570853.dasm (-2.52 % of base)
-52 : 308759.dasm (-5.70 % of base)
-52 : 565160.dasm (-2.25 % of base)
-52 : 571473.dasm (-1.18 % of base)
-52 : 576698.dasm (-5.75 % of base)
-52 : 576708.dasm (-5.73 % of base)
71 total files with Code Size differences (30 improved, 41 regressed), 20 unchanged.
Top method regressions (bytes):
1284 (36.27 % of base) : 570465.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,byref):ubyte:this (Tier1)
1124 (31.22 % of base) : 564256.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,byref):ubyte:this (Tier1)
920 (35.55 % of base) : 570807.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,byref):ubyte:this (Tier1)
908 (34.66 % of base) : 565274.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,byref):ubyte:this (Tier1)
908 (39.14 % of base) : 568646.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,byref):ubyte:this (Tier1)
904 (61.08 % of base) : 565839.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryAddOrGetExisting(System.__Canon,byref):System.__Canon:this (Tier1-OSR)
868 (63.45 % of base) : 571035.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryAddOrGetExisting(System.__Canon,byref):System.__Canon:this (Tier1-OSR)
836 (73.59 % of base) : 565838.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,byref):ubyte:this (Tier1-OSR)
816 (73.38 % of base) : 568162.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,byref):ubyte:this (Tier1-OSR)
764 (36.87 % of base) : 571672.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,byref):ubyte:this (Tier1)
684 (70.08 % of base) : 571034.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,byref):ubyte:this (Tier1-OSR)
668 (71.37 % of base) : 571532.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,byref):ubyte:this (Tier1-OSR)
644 (32.66 % of base) : 570540.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,byref):ubyte:this (Tier1)
632 (31.16 % of base) : 564780.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,byref):ubyte:this (Tier1)
532 (32.84 % of base) : 563998.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[System.__Canon,System.__Canon]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
516 (26.06 % of base) : 570589.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+ArrayTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+ArrayTypeKey,byref):ubyte:this (Tier1)
512 (25.60 % of base) : 564635.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+ArrayTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+ArrayTypeKey,byref):ubyte:this (Tier1)
364 (26.53 % of base) : 570600.dasm - Internal.TypeSystem.TypeSystemConstraintsHelpers:VerifyGenericParamConstraint(Internal.TypeSystem.InstantiationContext,Internal.TypeSystem.GenericParameterDesc,Internal.TypeSystem.InstantiationContext,Internal.TypeSystem.TypeDesc):ubyte (Tier1)
348 (35.22 % of base) : 469655.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:ToArray():System.__Canon[]:this (Tier1)
344 (25.07 % of base) : 564668.dasm - Internal.TypeSystem.TypeSystemConstraintsHelpers:VerifyGenericParamConstraint(Internal.TypeSystem.InstantiationContext,Internal.TypeSystem.GenericParameterDesc,Internal.TypeSystem.InstantiationContext,Internal.TypeSystem.TypeDesc):ubyte (Tier1)
Top method improvements (bytes):
-104 (-2.42 % of base) : 564660.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:TryAddOrGetExisting(System.__Canon,byref):System.__Canon:this (Tier1)
-88 (-3.59 % of base) : 570639.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,System.__Canon]:TryAddOrGetExisting(System.__Canon,byref):System.__Canon:this (Tier1)
-76 (-2.03 % of base) : 568690.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryAddOrGetExisting(System.__Canon,byref):System.__Canon:this (Tier1)
-68 (-1.60 % of base) : 570519.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:TryAddOrGetExisting(System.__Canon,byref):System.__Canon:this (Tier1)
-56 (-5.53 % of base) : 308752.dasm - Gen`1[System.Guid]:ThreadPoolTest[double]() (FullOpts)
-56 (-6.01 % of base) : 308886.dasm - GenDouble:ThreadPoolTest[System.__Canon]() (FullOpts)
-56 (-6.03 % of base) : 308857.dasm - GenDouble:ThreadPoolTest[System.__Canon]() (FullOpts)
-56 (-6.01 % of base) : 308889.dasm - GenGuid:ThreadPoolTest[System.__Canon]() (FullOpts)
-56 (-6.03 % of base) : 308860.dasm - GenGuid:ThreadPoolTest[System.__Canon]() (FullOpts)
-56 (-6.03 % of base) : 308855.dasm - GenInt:ThreadPoolTest[System.__Canon]() (FullOpts)
-56 (-6.03 % of base) : 308859.dasm - GenObject:ThreadPoolTest[System.__Canon]() (FullOpts)
-56 (-6.01 % of base) : 308888.dasm - GenObject:ThreadPoolTest[System.__Canon]() (FullOpts)
-56 (-6.01 % of base) : 308887.dasm - GenString:ThreadPoolTest[System.__Canon]() (FullOpts)
-56 (-6.03 % of base) : 308858.dasm - GenString:ThreadPoolTest[System.__Canon]() (FullOpts)
-52 (-5.70 % of base) : 308759.dasm - Gen`1[System.__Canon]:ThreadPoolTest() (FullOpts)
-52 (-5.68 % of base) : 308765.dasm - Gen`1[System.__Canon]:ThreadPoolTest() (FullOpts)
-52 (-5.75 % of base) : 576698.dasm - Gen`1[System.__Canon]:ThreadPoolTest() (Tier1)
-52 (-5.73 % of base) : 576708.dasm - Gen`1[System.__Canon]:ThreadPoolTest() (Tier1)
-52 (-1.18 % of base) : 571473.dasm - Internal.JitInterface.CorInfoImpl:getFieldInfo(byref,ulong,int,ulong):this (Tier1)
-52 (-2.25 % of base) : 565160.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+FieldForInstantiatedTypeKey,System.__Canon]:TryAddOrGetExisting(System.__Canon,byref):System.__Canon:this (Tier1)
Top method regressions (percentages):
836 (73.59 % of base) : 565838.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,byref):ubyte:this (Tier1-OSR)
816 (73.38 % of base) : 568162.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,byref):ubyte:this (Tier1-OSR)
668 (71.37 % of base) : 571532.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,byref):ubyte:this (Tier1-OSR)
684 (70.08 % of base) : 571034.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,byref):ubyte:this (Tier1-OSR)
868 (63.45 % of base) : 571035.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryAddOrGetExisting(System.__Canon,byref):System.__Canon:this (Tier1-OSR)
904 (61.08 % of base) : 565839.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryAddOrGetExisting(System.__Canon,byref):System.__Canon:this (Tier1-OSR)
88 (53.66 % of base) : 505561.dasm - k:b(c):int:this (Tier1)
84 (50.00 % of base) : 505544.dasm - $:f(a,b,c):int (Tier1)
88 (48.89 % of base) : 505557.dasm - f:b(c):int:this (Tier1)
252 (44.06 % of base) : 563889.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
252 (44.06 % of base) : 570428.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
908 (39.14 % of base) : 568646.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,byref):ubyte:this (Tier1)
764 (36.87 % of base) : 571672.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,byref):ubyte:this (Tier1)
1284 (36.27 % of base) : 570465.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,byref):ubyte:this (Tier1)
920 (35.55 % of base) : 570807.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,byref):ubyte:this (Tier1)
348 (35.22 % of base) : 469655.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:ToArray():System.__Canon[]:this (Tier1)
908 (34.66 % of base) : 565274.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,byref):ubyte:this (Tier1)
532 (32.84 % of base) : 563998.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[System.__Canon,System.__Canon]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
644 (32.66 % of base) : 570540.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,byref):ubyte:this (Tier1)
1124 (31.22 % of base) : 564256.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,byref):ubyte:this (Tier1)
Top method improvements (percentages):
-40 (-7.58 % of base) : 567309.dasm - System.Enum:TryParseByValueOrName[int,uint](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (Tier1)
-56 (-6.03 % of base) : 308857.dasm - GenDouble:ThreadPoolTest[System.__Canon]() (FullOpts)
-56 (-6.03 % of base) : 308860.dasm - GenGuid:ThreadPoolTest[System.__Canon]() (FullOpts)
-56 (-6.03 % of base) : 308855.dasm - GenInt:ThreadPoolTest[System.__Canon]() (FullOpts)
-56 (-6.03 % of base) : 308859.dasm - GenObject:ThreadPoolTest[System.__Canon]() (FullOpts)
-56 (-6.03 % of base) : 308858.dasm - GenString:ThreadPoolTest[System.__Canon]() (FullOpts)
-56 (-6.01 % of base) : 308886.dasm - GenDouble:ThreadPoolTest[System.__Canon]() (FullOpts)
-56 (-6.01 % of base) : 308889.dasm - GenGuid:ThreadPoolTest[System.__Canon]() (FullOpts)
-56 (-6.01 % of base) : 308888.dasm - GenObject:ThreadPoolTest[System.__Canon]() (FullOpts)
-56 (-6.01 % of base) : 308887.dasm - GenString:ThreadPoolTest[System.__Canon]() (FullOpts)
-52 (-5.75 % of base) : 576698.dasm - Gen`1[System.__Canon]:ThreadPoolTest() (Tier1)
-52 (-5.73 % of base) : 576708.dasm - Gen`1[System.__Canon]:ThreadPoolTest() (Tier1)
-52 (-5.70 % of base) : 308759.dasm - Gen`1[System.__Canon]:ThreadPoolTest() (FullOpts)
-52 (-5.68 % of base) : 308765.dasm - Gen`1[System.__Canon]:ThreadPoolTest() (FullOpts)
-12 (-5.56 % of base) : 392760.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature):System.Reflection.ParameterInfo[] (Tier1)
-12 (-5.56 % of base) : 469349.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature):System.Reflection.ParameterInfo[] (Tier1)
-12 (-5.56 % of base) : 496087.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature):System.Reflection.ParameterInfo[] (Tier1)
-56 (-5.53 % of base) : 308752.dasm - Gen`1[System.Guid]:ThreadPoolTest[double]() (FullOpts)
-16 (-5.19 % of base) : 307053.dasm - Microsoft.Build.Execution.BuildParameters:Initialize(Microsoft.Build.Collections.PropertyDictionary`1[Microsoft.Build.Execution.ProjectPropertyInstance],Microsoft.Build.Evaluation.ProjectRootElementCacheBase,Microsoft.Build.Evaluation.ToolsetProvider):this (FullOpts)
-24 (-4.44 % of base) : 309184.dasm - Microsoft.Diagnostics.Tools.RuntimeClient.EventPipeClient:.cctor() (FullOpts)
libraries_tests.run.osx.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 312891008 (overridden on cmd)
Total bytes of diff: 313090056 (overridden on cmd)
Total bytes of delta: 199048 (0.06 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
4584 : 525109.dasm (49.00 % of base)
3660 : 525112.dasm (91.96 % of base)
3500 : 556039.dasm (43.66 % of base)
3084 : 556915.dasm (92.22 % of base)
2724 : 486936.dasm (73.46 % of base)
2144 : 591426.dasm (30.49 % of base)
2092 : 57822.dasm (65.05 % of base)
2084 : 81460.dasm (65.12 % of base)
1984 : 600303.dasm (64.08 % of base)
1740 : 64351.dasm (53.70 % of base)
1728 : 297394.dasm (120.67 % of base)
1728 : 63818.dasm (49.15 % of base)
1712 : 88072.dasm (48.86 % of base)
1688 : 63104.dasm (83.90 % of base)
1608 : 88840.dasm (81.38 % of base)
1548 : 239785.dasm (74.85 % of base)
1548 : 616380.dasm (74.71 % of base)
1548 : 527280.dasm (58.90 % of base)
1536 : 168033.dasm (73.99 % of base)
1536 : 305863.dasm (73.85 % of base)
Top file improvements (bytes):
-6284 : 54158.dasm (-44.37 % of base)
-536 : 62062.dasm (-4.25 % of base)
-516 : 62061.dasm (-4.00 % of base)
-416 : 90084.dasm (-3.00 % of base)
-340 : 525744.dasm (-3.58 % of base)
-224 : 576222.dasm (-2.85 % of base)
-220 : 100507.dasm (-2.64 % of base)
-200 : 330496.dasm (-3.63 % of base)
-188 : 526749.dasm (-3.50 % of base)
-184 : 586642.dasm (-1.12 % of base)
-184 : 414068.dasm (-1.39 % of base)
-176 : 274436.dasm (-2.12 % of base)
-176 : 450857.dasm (-1.18 % of base)
-176 : 556899.dasm (-2.24 % of base)
-172 : 165124.dasm (-1.42 % of base)
-164 : 557166.dasm (-2.20 % of base)
-156 : 50457.dasm (-2.13 % of base)
-156 : 64462.dasm (-3.26 % of base)
-156 : 57105.dasm (-2.55 % of base)
-156 : 365741.dasm (-2.55 % of base)
84 total files with Code Size differences (42 improved, 42 regressed), 20 unchanged.
Top method regressions (bytes):
4584 (49.00 % of base) : 525109.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
3660 (91.96 % of base) : 525112.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]]:ReadConstructorArgumentsWithContinuation(byref,byref,System.Text.Json.JsonSerializerOptions):ubyte:this (Tier1)
3500 (43.66 % of base) : 556039.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
3084 (92.22 % of base) : 556915.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]]:ReadConstructorArgumentsWithContinuation(byref,byref,System.Text.Json.JsonSerializerOptions):ubyte:this (Tier1)
2724 (73.46 % of base) : 486936.dasm - System.Text.DBCSCodePageEncoding:ReadBestFitTable():this (Tier1-OSR)
2144 (30.49 % of base) : 591426.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:ComputeAbstractMembers():System.Collections.Immutable.ImmutableHashSet`1[Microsoft.CodeAnalysis.CSharp.Symbol]:this (Tier1)
2092 (65.05 % of base) : 57822.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]]],System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]],int):System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]] (Tier1)
2084 (65.12 % of base) : 81460.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]]],System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]],int):System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]] (Tier1)
1984 (64.08 % of base) : 600303.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]]],System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]],int):System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]] (Tier1)
1740 (53.70 % of base) : 64351.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.BaseTypeAnalysis:<GetManagedKind>g__dependsOnDefinitelyManagedType|4_0(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.CSharp.Symbol],byref):System.ValueTuple`2[ubyte,ubyte] (Tier1)
1728 (49.15 % of base) : 63818.dasm - Microsoft.Interop.TypePositionInfo:GetByValueContentsMarshalKind(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.AttributeData],Microsoft.CodeAnalysis.Compilation):System.ValueTuple`3[int,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.Location] (Tier1)
1728 (120.67 % of base) : 297394.dasm - System.Linq.Parallel.StopAndGoSpoolingTask`2[System.Decimal,int]:SpoolingWork():this (Tier1)
1712 (48.86 % of base) : 88072.dasm - Microsoft.Interop.TypePositionInfo:GetByValueContentsMarshalKind(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.AttributeData],Microsoft.CodeAnalysis.Compilation):System.ValueTuple`3[int,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.Location] (Tier1)
1688 (83.90 % of base) : 63104.dasm - System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.SyntaxToken]:UnionWith(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxToken]):this (Tier1)
1608 (81.38 % of base) : 88840.dasm - System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.SyntaxToken]:UnionWith(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxToken]):this (Tier1)
1548 (74.85 % of base) : 239785.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
1548 (74.71 % of base) : 616380.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
1548 (58.90 % of base) : 527280.dasm - System.Text.Json.Serialization.Converters.DictionaryDefaultConverter`3[System.Text.Json.Serialization.Tests.GenericStructIDictionaryWrapper`2[System.__Canon,System.__Canon],System.__Canon,System.__Canon]:OnWriteResume(System.Text.Json.Utf8JsonWriter,System.Text.Json.Serialization.Tests.GenericStructIDictionaryWrapper`2[System.__Canon,System.__Canon],System.Text.Json.JsonSerializerOptions,byref):ubyte:this (Tier1)
1536 (73.99 % of base) : 168033.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
1536 (73.85 % of base) : 305863.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
Top method improvements (bytes):
-6284 (-44.37 % of base) : 54158.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (Tier1)
-536 (-4.25 % of base) : 62062.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckValidNullableMethodOverride[System.ValueTuple`2[System.__Canon,ubyte]](Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Symbols.ReportMismatchInReturnType`1[System.ValueTuple`2[System.__Canon,ubyte]],Microsoft.CodeAnalysis.CSharp.Symbols.ReportMismatchInParameterType`1[System.ValueTuple`2[System.__Canon,ubyte]],System.ValueTuple`2[System.__Canon,ubyte],ubyte):ubyte (Tier1)
-516 (-4.00 % of base) : 62061.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:<CheckModifierMismatchOnImplementingMember>g__checkMethodOverride|100_0(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (Tier1)
-416 (-3.00 % of base) : 90084.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckValidNullableMethodOverride[System.__Canon](Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Symbols.ReportMismatchInReturnType`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.Symbols.ReportMismatchInParameterType`1[System.__Canon],System.__Canon,ubyte):ubyte (Tier1)
-340 (-3.58 % of base) : 525744.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
-224 (-2.85 % of base) : 576222.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-220 (-2.64 % of base) : 100507.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-200 (-3.63 % of base) : 330496.dasm - System.Net.Mail.MailWriter:WriteHeaders(System.Collections.Specialized.NameValueCollection,ubyte):this (Tier1)
-188 (-3.50 % of base) : 526749.dasm - System.Number:TryParseNumber[ubyte](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (Tier1)
-184 (-1.12 % of base) : 586642.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (Tier1)
-184 (-1.39 % of base) : 414068.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
-176 (-1.18 % of base) : 450857.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
-176 (-2.12 % of base) : 274436.dasm - System.IO.Compression.Tests.zip_UpdateTests:Update_Comment_EntryName_Encoding_Internal(System.String,System.String,System.String,System.Text.Encoding,System.String,System.String) (Tier1)
-176 (-2.24 % of base) : 556899.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Collections.Generic.KeyValuePair`2[int,int]]]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
-172 (-1.42 % of base) : 165124.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
-164 (-2.20 % of base) : 557166.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<ReadGenericIListOfIList>d__410:MoveNext():this (Tier1)
-156 (-2.13 % of base) : 50457.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetRuntimeMember(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol],byref,Microsoft.CodeAnalysis.RuntimeMembers.SignatureComparer`5[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.CSharp.Symbol (Tier1)
-156 (-3.26 % of base) : 64462.dasm - Microsoft.CodeAnalysis.CSharp.RefSafetyAnalysis:GetValEscape(Microsoft.CodeAnalysis.CSharp.BoundExpression,uint):uint:this (Tier1)
-156 (-2.55 % of base) : 57105.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-156 (-2.55 % of base) : 365741.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
Top method regressions (percentages):
1728 (120.67 % of base) : 297394.dasm - System.Linq.Parallel.StopAndGoSpoolingTask`2[System.Decimal,int]:SpoolingWork():this (Tier1)
3084 (92.22 % of base) : 556915.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]]:ReadConstructorArgumentsWithContinuation(byref,byref,System.Text.Json.JsonSerializerOptions):ubyte:this (Tier1)
3660 (91.96 % of base) : 525112.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]]:ReadConstructorArgumentsWithContinuation(byref,byref,System.Text.Json.JsonSerializerOptions):ubyte:this (Tier1)
1236 (84.89 % of base) : 491292.dasm - System.Text.Encodings.Web.TextEncoder:EncodeCore(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref,byref,ubyte):int:this (Tier1-OSR)
1688 (83.90 % of base) : 63104.dasm - System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.SyntaxToken]:UnionWith(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxToken]):this (Tier1)
1608 (81.38 % of base) : 88840.dasm - System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.SyntaxToken]:UnionWith(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxToken]):this (Tier1)
160 (78.43 % of base) : 376117.dasm - System.Xml.XPath.XPathNavigator:MoveToRoot():this (Tier1)
380 (76.00 % of base) : 201799.dasm - System.Collections.Generic.SortedSet`1[int]:SymmetricExceptWithSameComparer(int[],int):this (Tier1)
1548 (74.85 % of base) : 239785.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
1548 (74.71 % of base) : 616380.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
1536 (73.99 % of base) : 168033.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
1532 (73.94 % of base) : 614831.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
1536 (73.85 % of base) : 305863.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
1528 (73.60 % of base) : 466305.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
1524 (73.55 % of base) : 313070.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
2724 (73.46 % of base) : 486936.dasm - System.Text.DBCSCodePageEncoding:ReadBestFitTable():this (Tier1-OSR)
840 (72.41 % of base) : 383890.dasm - System.Xml.Xsl.Qil.QilCloneVisitor:VisitChildren(System.Xml.Xsl.Qil.QilNode):System.Xml.Xsl.Qil.QilNode:this (Tier1)
900 (71.88 % of base) : 383718.dasm - System.Xml.Xsl.Qil.QilReplaceVisitor:VisitChildren(System.Xml.Xsl.Qil.QilNode):System.Xml.Xsl.Qil.QilNode:this (Tier1)
592 (68.52 % of base) : 201582.dasm - System.Collections.Generic.SortedSet`1[int]:AddAllElements(System.Collections.Generic.IEnumerable`1[int]):this (Tier1)
204 (67.11 % of base) : 307969.dasm - System.Linq.Enumerable+EnumerablePartition`1[int]:SkipAndCount(uint,System.Collections.Generic.IEnumerator`1[int]):uint (Tier1)
Top method improvements (percentages):
-6284 (-44.37 % of base) : 54158.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (Tier1)
-124 (-12.70 % of base) : 81069.dasm - Microsoft.CodeAnalysis.ProjectInfo:With(Microsoft.CodeAnalysis.ProjectInfo+ProjectAttributes,Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.CompilationOptions],Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.ParseOptions],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.ProjectReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.MetadataReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],Microsoft.CodeAnalysis.Optional`1[System.Type]):Microsoft.CodeAnalysis.ProjectInfo:this (Tier1)
-124 (-12.65 % of base) : 55832.dasm - Microsoft.CodeAnalysis.ProjectInfo:With(Microsoft.CodeAnalysis.ProjectInfo+ProjectAttributes,Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.CompilationOptions],Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.ParseOptions],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.ProjectReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.MetadataReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],Microsoft.CodeAnalysis.Optional`1[System.Type]):Microsoft.CodeAnalysis.ProjectInfo:this (Tier1)
-120 (-12.45 % of base) : 152824.dasm - Microsoft.CodeAnalysis.ProjectInfo:With(Microsoft.CodeAnalysis.ProjectInfo+ProjectAttributes,Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.CompilationOptions],Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.ParseOptions],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.ProjectReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.MetadataReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],Microsoft.CodeAnalysis.Optional`1[System.Type]):Microsoft.CodeAnalysis.ProjectInfo:this (Tier1)
-8 (-11.76 % of base) : 598698.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass1:ShouldNotSchedule(Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol):this (Tier1)
-24 (-10.91 % of base) : 589651.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (Tier1)
-20 (-9.62 % of base) : 66188.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.ValueTuple`2[System.__Canon,System.__Canon]]:ItemRef(int):byref:this (Tier1)
-20 (-9.62 % of base) : 89580.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.ValueTuple`2[System.__Canon,System.__Canon]]:ItemRef(int):byref:this (Tier1)
-32 (-8.25 % of base) : 394823.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<TKey,TValue>>.Remove(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]):ubyte:this (Tier1)
-32 (-8.25 % of base) : 332180.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<TKey,TValue>>.Remove(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]):ubyte:this (Tier1)
-32 (-8.25 % of base) : 334453.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<TKey,TValue>>.Remove(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]):ubyte:this (Tier1)
-12 (-7.69 % of base) : 590117.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:get_IsImplicitConstructor():ubyte:this (Tier1)
-4 (-7.69 % of base) : 524733.dasm - System.Text.Json.Utf8JsonReader:get_CurrentDepth():int:this (Tier1)
-12 (-7.32 % of base) : 557152.dasm - System.Threading.Tasks.TaskExceptionHolder:GetCancellationExceptionDispatchInfo():System.Runtime.ExceptionServices.ExceptionDispatchInfo:this (Tier1)
-16 (-7.02 % of base) : 101168.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.SymbolStore:InsertChildNoGrow(Microsoft.CSharp.RuntimeBinder.Semantics.Symbol) (Tier1)
-8 (-6.90 % of base) : 600361.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedGlobalMethodSymbol:get_CallingConvention():int:this (Tier1)
-28 (-6.73 % of base) : 280072.dasm - System.TimeZoneInfo:CompareAdjustmentRuleToDateTime(System.TimeZoneInfo+AdjustmentRule,System.TimeZoneInfo+AdjustmentRule,System.DateTime,System.DateTime,ubyte):int:this (Tier1)
-28 (-6.73 % of base) : 341059.dasm - System.TimeZoneInfo:CompareAdjustmentRuleToDateTime(System.TimeZoneInfo+AdjustmentRule,System.TimeZoneInfo+AdjustmentRule,System.DateTime,System.DateTime,ubyte):int:this (Tier1)
-28 (-6.73 % of base) : 474613.dasm - System.TimeZoneInfo:CompareAdjustmentRuleToDateTime(System.TimeZoneInfo+AdjustmentRule,System.TimeZoneInfo+AdjustmentRule,System.DateTime,System.DateTime,ubyte):int:this (Tier1)
-20 (-6.33 % of base) : 586598.dasm - Microsoft.CodeAnalysis.CSharp.Binder:IsMethodOrIndexer(Microsoft.CodeAnalysis.CSharp.Symbol):ubyte (Tier1)
librariestestsnotieredcompilation.run.osx.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 162507756 (overridden on cmd)
Total bytes of diff: 162504644 (overridden on cmd)
Total bytes of delta: -3112 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
48 : 168695.dasm (2.42 % of base)
48 : 271110.dasm (1.22 % of base)
44 : 168095.dasm (1.77 % of base)
44 : 210648.dasm (1.13 % of base)
40 : 209236.dasm (0.33 % of base)
40 : 161359.dasm (0.89 % of base)
32 : 127557.dasm (1.92 % of base)
28 : 210660.dasm (2.55 % of base)
28 : 38806.dasm (1.74 % of base)
24 : 147814.dasm (1.77 % of base)
24 : 205728.dasm (0.31 % of base)
24 : 2419.dasm (0.98 % of base)
24 : 286563.dasm (1.60 % of base)
24 : 89859.dasm (0.95 % of base)
20 : 120932.dasm (1.26 % of base)
20 : 206952.dasm (1.11 % of base)
20 : 210144.dasm (1.68 % of base)
20 : 94548.dasm (1.26 % of base)
20 : 210740.dasm (0.66 % of base)
20 : 258275.dasm (0.80 % of base)
Top file improvements (bytes):
-112 : 283500.dasm (-1.38 % of base)
-84 : 196491.dasm (-1.26 % of base)
-48 : 119264.dasm (-1.30 % of base)
-44 : 168958.dasm (-1.32 % of base)
-40 : 121392.dasm (-1.54 % of base)
-36 : 283386.dasm (-0.94 % of base)
-32 : 18992.dasm (-1.22 % of base)
-32 : 194798.dasm (-0.49 % of base)
-32 : 216825.dasm (-1.13 % of base)
-32 : 216843.dasm (-1.63 % of base)
-28 : 165760.dasm (-1.35 % of base)
-28 : 6985.dasm (-2.45 % of base)
-28 : 165868.dasm (-1.41 % of base)
-28 : 41772.dasm (-0.80 % of base)
-24 : 121433.dasm (-1.48 % of base)
-24 : 211196.dasm (-1.69 % of base)
-20 : 51790.dasm (-0.73 % of base)
-20 : 183699.dasm (-7.35 % of base)
-20 : 168086.dasm (-2.43 % of base)
-20 : 45098.dasm (-0.73 % of base)
76 total files with Code Size differences (39 improved, 37 regressed), 20 unchanged.
Top method regressions (bytes):
48 (1.22 % of base) : 271110.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1953_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
48 (2.42 % of base) : 168695.dasm - System.Xml.Schema.TypedObject:Equals(System.Xml.Schema.TypedObject):ubyte:this (FullOpts)
44 (1.13 % of base) : 210648.dasm - System.Tests.ArrayTests+<Sort_Array_TestData>d__158:MoveNext():ubyte:this (FullOpts)
44 (1.77 % of base) : 168095.dasm - System.Xml.XslCompiledTransformApiTests.CLoadXmlResolverTest:LoadGeneric7(System.Object,int,int,int,int):this (FullOpts)
40 (0.33 % of base) : 209236.dasm - System.Tests.EnumTests+<Parse_TestData>d__0:MoveNext():ubyte:this (FullOpts)
40 (0.89 % of base) : 161359.dasm - System.Xml.Serialization.XmlSerializationReader:ReadArray(System.String,System.String):System.Array:this (FullOpts)
32 (1.92 % of base) : 127557.dasm - System.IO.Tests.BinaryWriterTests:BinaryWriter_CtorAndWriteTests1():this (FullOpts)
28 (1.74 % of base) : 38806.dasm - Microsoft.Extensions.Hosting.Tests.ConsoleLifetimeExitTests+EnsureSignalContinuesMainMethodWorker+<ExecuteAsync>d__0:MoveNext():this (FullOpts)
28 (2.55 % of base) : 210660.dasm - System.Tests.StringTests:OnlyWhiteSpaceTrim() (FullOpts)
24 (0.98 % of base) : 2419.dasm - ComInterfaceGenerator.Unit.Tests.CodeSnippets:BasicReturnTypeComExceptionHandling(System.String,System.String):System.String:this (FullOpts)
24 (0.95 % of base) : 89859.dasm - System.Data.DataTable:ParseSortString(System.String):System.Data.IndexField[]:this (FullOpts)
24 (0.31 % of base) : 205728.dasm - System.Tests.StringTests:TrimWhiteSpaceMultipleTimes_Memory() (FullOpts)
24 (1.60 % of base) : 286563.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5228_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
24 (1.77 % of base) : 147814.dasm - Systen.Net.Mail.Tests.LoopbackSmtpServer+ParsedMailMessage:Parse(System.String):Systen.Net.Mail.Tests.LoopbackSmtpServer+ParsedMailMessage (FullOpts)
20 (0.80 % of base) : 258275.dasm - Newtonsoft.Json.Utilities.ConvertUtils:DecimalTryParse(ushort[],int,int,byref):int (FullOpts)
20 (1.26 % of base) : 120932.dasm - System.IO.Tests.Sync_DerivedFileStream_ReadWrite_Span:CallSpanReadWriteOnDerivedFileStream_ArrayMethodsUsed():this (FullOpts)
20 (0.66 % of base) : 210740.dasm - System.Tests.ArrayTests:GetValue_RankOneInt_SetValue() (FullOpts)
20 (1.68 % of base) : 210144.dasm - System.Tests.StringTests:MakeSureNoTrimChecksGoOutOfRange() (FullOpts)
20 (1.11 % of base) : 206952.dasm - System.Tests.StringTests:WhiteSpaceAtEndTrim() (FullOpts)
20 (1.26 % of base) : 94548.dasm - System.Xml.XmlTextReaderImpl:ReadValueChunk(ushort[],int,int):int:this (FullOpts)
Top method improvements (bytes):
-112 (-1.38 % of base) : 283500.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3026_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-84 (-1.26 % of base) : 196491.dasm - DataContractSerializerTests:DCS_BasicPerSerializerRoundTripAndCompare_EnumStruct() (FullOpts)
-48 (-1.30 % of base) : 119264.dasm - System.Globalization.Tests.CompareInfoCompareTests:TestIgnoreKanaAndWidthCases():this (FullOpts)
-44 (-1.32 % of base) : 168958.dasm - System.Xml.XmlSchemaTests.TestData:.cctor() (FullOpts)
-40 (-1.54 % of base) : 121392.dasm - System.IO.Tests.Directory_Move:UnixWhitespacePath():this (FullOpts)
-36 (-0.94 % of base) : 283386.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31963_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-32 (-0.49 % of base) : 194798.dasm - DataContractSerializerTests:DCS_BasicPerSerializerRoundTripAndCompare_EnumStruct() (FullOpts)
-32 (-1.22 % of base) : 18992.dasm - LibraryImportGenerator.UnitTests.CodeSnippets:BasicParametersAndModifiersWithStringMarshalling(System.String,int,System.String):System.String (FullOpts)
-32 (-1.13 % of base) : 216825.dasm - System.Security.Cryptography.X509Certificates.Tests.ExtensionsTests.SubjectAlternativeNameTests:CopyFromAfterLoaded(int) (FullOpts)
-32 (-1.63 % of base) : 216843.dasm - System.Security.Cryptography.X509Certificates.Tests.ExtensionsTests.SubjectAlternativeNameTests:EnumerateIPAddresses(int) (FullOpts)
-28 (-2.45 % of base) : 6985.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:Complete(Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.SyntaxReference,System.Threading.CancellationToken):this (FullOpts)
-28 (-0.80 % of base) : 41772.dasm - Microsoft.CodeAnalysis.SolutionState:AddProject(Microsoft.CodeAnalysis.ProjectId,Microsoft.CodeAnalysis.ProjectState):Microsoft.CodeAnalysis.SolutionState:this (FullOpts)
-28 (-1.41 % of base) : 165868.dasm - System.Xml.XslTransformApiTests.CArgAddParam:AddParam14(int,int,int,int):this (FullOpts)
-28 (-1.35 % of base) : 165760.dasm - System.Xml.XslTransformApiTests.CArgAddParam:AddParam20(int,int,int,int):this (FullOpts)
-24 (-1.48 % of base) : 121433.dasm - System.IO.Tests.Directory_Move:ToNewDirectoryButWithDifferentCasing():this (FullOpts)
-24 (-1.69 % of base) : 211196.dasm - System.Security.Cryptography.Cose.Tests.CoseHeaderMapTests:SetValue_InvalidCoseHeaderValue():this (FullOpts)
-20 (-0.73 % of base) : 51790.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetDiagnosticsWithoutFiltering(int,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):this (FullOpts)
-20 (-0.73 % of base) : 45098.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetDiagnosticsWithoutFiltering(int,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):this (FullOpts)
-20 (-0.36 % of base) : 45277.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)
-20 (-7.35 % of base) : 183699.dasm - System.Tests.OperatingSystemTests+<>c__DisplayClass31_0:<TestIsOSVersionAtLeast>b__0(int,int,int,int):ubyte:this (FullOpts)
Top method regressions (percentages):
12 (7.32 % of base) : 70529.dasm - System.Collections.CaseInsensitiveHashCodeProvider:GetHashCode(System.Object):int:this (FullOpts)
16 (4.82 % of base) : 149318.dasm - System.Net.Sockets.Socket:set_Ttl(short):this (FullOpts)
8 (4.65 % of base) : 121009.dasm - System.Net.SocketAddress:set_Size(int):this (FullOpts)
12 (4.29 % of base) : 89614.dasm - System.Data.ExpressionParser:LoadExpression(System.String):this (FullOpts)
12 (3.30 % of base) : 211221.dasm - System.Security.Cryptography.Cose.Tests.CoseMessageTests_Sign`1[System.__Canon]:SignWithNullContent():this (FullOpts)
16 (3.01 % of base) : 204562.dasm - System.Tests.DecimalTests:GetBits(System.Decimal,int[]) (FullOpts)
12 (2.94 % of base) : 147292.dasm - System.Net.WebSockets.HttpWebSocket:ValidateOptions(System.String,int,int,System.TimeSpan) (FullOpts)
16 (2.63 % of base) : 180638.dasm - System.Reflection.Tests.CustomAttributeInstantiator:Convert(System.Reflection.CustomAttributeTypedArgument):System.Object (FullOpts)
28 (2.55 % of base) : 210660.dasm - System.Tests.StringTests:OnlyWhiteSpaceTrim() (FullOpts)
48 (2.42 % of base) : 168695.dasm - System.Xml.Schema.TypedObject:Equals(System.Xml.Schema.TypedObject):ubyte:this (FullOpts)
12 (2.40 % of base) : 144918.dasm - System.Net.Http.AuthenticationHelper:ComputeHash(System.String,System.String):System.String (FullOpts)
16 (2.33 % of base) : 26603.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object,int,int) (FullOpts)
16 (2.31 % of base) : 26606.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object,int,int) (FullOpts)
12 (2.07 % of base) : 301570.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:SetCollectionObjectWithCollectionMember(byref,System.Xml.Serialization.ReflectionXmlSerializationReader+CollectionMember,System.Type) (FullOpts)
8 (1.92 % of base) : 123049.dasm - System.IO.Tests.File_GetSetTimes_SafeFileHandle+<>c:<NullArgumentValidation>b__18_2():System.Object:this (FullOpts)
16 (1.92 % of base) : 161956.dasm - System.Xml.XmlTextWriter:GeneratePrefix():System.String:this (FullOpts)
32 (1.92 % of base) : 127557.dasm - System.IO.Tests.BinaryWriterTests:BinaryWriter_CtorAndWriteTests1():this (FullOpts)
8 (1.77 % of base) : 123046.dasm - System.IO.Tests.File_GetSetTimes_SafeFileHandle+<>c:<NullArgumentValidation>b__18_0():System.Object:this (FullOpts)
24 (1.77 % of base) : 147814.dasm - Systen.Net.Mail.Tests.LoopbackSmtpServer+ParsedMailMessage:Parse(System.String):Systen.Net.Mail.Tests.LoopbackSmtpServer+ParsedMailMessage (FullOpts)
44 (1.77 % of base) : 168095.dasm - System.Xml.XslCompiledTransformApiTests.CLoadXmlResolverTest:LoadGeneric7(System.Object,int,int,int,int):this (FullOpts)
Top method improvements (percentages):
-20 (-7.35 % of base) : 183699.dasm - System.Tests.OperatingSystemTests+<>c__DisplayClass31_0:<TestIsOSVersionAtLeast>b__0(int,int,int,int):ubyte:this (FullOpts)
-8 (-3.70 % of base) : 11052.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceParameterSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Predicate`1[Microsoft.CodeAnalysis.CSharp.Symbol],System.Threading.CancellationToken):this (FullOpts)
-12 (-3.70 % of base) : 221818.dasm - System.Security.Cryptography.X509Certificates.Tests.ExtensionsTests.AuthorityKeyIdentifierTests+<>c__DisplayClass15_0:<DecodeInvalid>b__1():System.Object:this (FullOpts)
-8 (-3.51 % of base) : 21822.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:System.Threading.Tasks.Sources.IValueTaskSource.GetResult(short):this (FullOpts)
-8 (-3.39 % of base) : 21926.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:System.Threading.Tasks.Sources.IValueTaskSource<System.Int32>.GetResult(short):int:this (FullOpts)
-8 (-3.33 % of base) : 121020.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:System.Threading.Tasks.Sources.IValueTaskSource<System.Net.Sockets.Socket>.GetResult(short):System.Net.Sockets.Socket:this (FullOpts)
-8 (-3.17 % of base) : 149242.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:System.Threading.Tasks.Sources.IValueTaskSource<System.Net.Sockets.SocketReceiveFromResult>.GetResult(short):System.Net.Sockets.SocketReceiveFromResult:this (FullOpts)
-12 (-3.06 % of base) : 216837.dasm - System.Security.Cryptography.X509Certificates.Tests.ExtensionsTests.SubjectAlternativeNameTests+<>c__DisplayClass8_0:<VerifyDecodeFailure>b__1():System.Object:this (FullOpts)
-16 (-2.78 % of base) : 7861.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
-8 (-2.74 % of base) : 117939.dasm - System.PlatformDetection:get_IsApplePlatform():ubyte (FullOpts)
-8 (-2.63 % of base) : 16384.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldLikeEventSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Predicate`1[Microsoft.CodeAnalysis.CSharp.Symbol],System.Threading.CancellationToken):this (FullOpts)
-12 (-2.61 % of base) : 14477.dasm - Microsoft.CodeAnalysis.CSharp.CSharpSemanticModel:GetParameterSymbol(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Syntax.ParameterSyntax,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol:this (FullOpts)
-8 (-2.50 % of base) : 64010.dasm - System.CodeDom.Compiler.Tests.ExecutorTests:.cctor() (FullOpts)
-28 (-2.45 % of base) : 6985.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:Complete(Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.SyntaxReference,System.Threading.CancellationToken):this (FullOpts)
-16 (-2.44 % of base) : 88994.dasm - System.Configuration.Tests.CustomHostTests+<>c:<FilePathIsPopulatedCorrectly>b__0_0():this (FullOpts)
-20 (-2.43 % of base) : 168086.dasm - System.Xml.XslCompiledTransformApiTests.CLoadXmlResolverTest:LoadGeneric3(System.Object,int,int,int,int):this (FullOpts)
-8 (-2.35 % of base) : 45987.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:VisitNamedType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol):this (FullOpts)
-8 (-2.35 % of base) : 8918.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:VisitNamedType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol):this (FullOpts)
-8 (-2.35 % of base) : 52228.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:VisitNamedType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol):this (FullOpts)
-4 (-2.22 % of base) : 128755.dasm - System.IO.Tests.Stream_ReadAtLeast+<>c__DisplayClass7_0:<CancellationTokenIsPassedThrough>b__1(ubyte[],int,int,System.Threading.CancellationToken):System.Threading.Tasks.Task`1[int]:this (FullOpts)
windows arm64
Diffs are based on 2,368,064 contexts (937,277 MinOpts, 1,430,787 FullOpts).
MISSED contexts: base: 0 (0.00%), diff: 84 (0.00%)
Overall (+305,988 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run_pgo.windows.arm64.checked.mch |
46,686,644 |
+1,196 |
| coreclr_tests.run.windows.arm64.checked.mch |
496,328,272 |
+21,196 |
| libraries.pmi.windows.arm64.checked.mch |
80,267,692 |
+828 |
| libraries_tests.run.windows.arm64.Release.mch |
323,036,384 |
+281,288 |
| librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
171,257,132 |
+1,480 |
FullOpts (+305,988 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run_pgo.windows.arm64.checked.mch |
30,351,036 |
+1,196 |
| coreclr_tests.run.windows.arm64.checked.mch |
156,850,884 |
+21,196 |
| libraries.pmi.windows.arm64.checked.mch |
80,147,708 |
+828 |
| libraries_tests.run.windows.arm64.Release.mch |
119,164,376 |
+281,288 |
| librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
158,197,788 |
+1,480 |
Example diffs
benchmarks.run_pgo.windows.arm64.checked.mch
-48 (-6.94%) : 48449.dasm - System.Linq.Enumerable:Countushort:int (Tier1-OSR)
@@ -11,143 +11,214 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Collections.Generic.IEnumerable`1[ushort]>
-; V01 arg1 [V01,T03] ( 8,301.97) ref -> x19 class-hnd single-def <System.Func`2[ushort,ubyte]>
-; V02 loc0 [V02,T10] ( 5,198.09) int -> [fp+0xD4] do-not-enreg[Z] EH-live tier0-frame
-; V03 loc1 [V03,T00] ( 21,901.02) ref -> [fp+0xC8] do-not-enreg[H] class-hnd EH-live tier0-frame <System.Collections.Generic.IEnumerator`1[ushort]>
-; V04 loc2 [V04,T05] ( 7,299.97) ushort -> x1
+; V01 arg1 [V01,T10] ( 7, 3.04) ref -> x19 class-hnd single-def <System.Func`2[ushort,ubyte]>
+; V02 loc0 [V02,T07] ( 5,199.98) int -> [fp+0xB4] do-not-enreg[Z] EH-live tier0-frame
+; V03 loc1 [V03,T00] ( 21,901.02) ref -> [fp+0xA8] do-not-enreg[H] class-hnd EH-live tier0-frame <System.Collections.Generic.IEnumerator`1[ushort]>
+; V04 loc2 [V04,T06] ( 6,199.98) ushort -> x1
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref "guarded devirt return temp"
;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.String>
; V08 tmp3 [V08,T08] ( 4,199.98) int -> x1 "guarded devirt return temp"
;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.CharEnumerator>
-; V10 tmp5 [V10,T09] ( 4,199.98) int -> x0 "guarded devirt return temp"
+; V10 tmp5 [V10,T15] ( 2, 0 ) int -> x0 "guarded devirt return temp"
;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp" <Jil.Deserialize.InlineDeserializer`1+<>c[System.__Canon]>
-; V12 tmp7 [V12,T01] ( 5,200 ) int -> x2 "guarded devirt return temp"
+; V12 tmp7 [V12,T01] ( 5,200 ) int -> x1 "guarded devirt return temp"
;* V13 tmp8 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.CharEnumerator>
-;* V14 tmp9 [V14,T14] ( 0, 0 ) int -> zero-ref "OSR entry state var"
+;* V14 tmp9 [V14,T13] ( 0, 0 ) int -> zero-ref "OSR entry state var"
;* V15 tmp10 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.CharEnumerator>
-; V16 tmp11 [V16,T07] ( 6,299.97) int -> x23 "Inline stloc first use temp"
-; V17 tmp12 [V17,T06] ( 6,299.97) ref -> x24 class-hnd exact "Inline stloc first use temp" <System.String>
-; V18 tmp13 [V18,T02] ( 6,600 ) int -> x21 "Inline stloc first use temp"
-; V19 tmp14 [V19,T04] ( 6,300 ) int -> x22 "Inline stloc first use temp"
-; V20 PSPSym [V20,T15] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
-; V21 cse0 [V21,T11] ( 2,197.98) int -> x1 "CSE - aggressive"
-; V22 cse1 [V22,T12] ( 6, 3.04) long -> x20 hoist multi-def "CSE - aggressive"
-; V23 cse2 [V23,T13] ( 2, 2.00) int -> x1 "CSE - moderate"
+; V16 tmp11 [V16,T05] ( 6,299.97) int -> x0 "Inline stloc first use temp"
+; V17 tmp12 [V17,T04] ( 6,299.97) ref -> x11 class-hnd exact "Inline stloc first use temp" <System.String>
+; V18 tmp13 [V18,T02] ( 6,600 ) int -> x0 "Inline stloc first use temp"
+; V19 tmp14 [V19,T03] ( 6,300 ) int -> x11 "Inline stloc first use temp"
+; V20 PSPSym [V20,T14] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
+; V21 cse0 [V21,T09] ( 2,197.98) int -> x1 "CSE - aggressive"
+; V22 cse1 [V22,T11] ( 6, 3.04) long -> x20 hoist multi-def "CSE - aggressive"
+; V23 cse2 [V23,T12] ( 2, 2.00) int -> x1 "CSE - moderate"
;
; Lcl frame size = 16
G_M33418_IG01: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
+ stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
- stp x23, x24, [sp, #0x40]
mov fp, sp
- add xip1, sp, #240
+ add xip1, sp, #208
str xip1, [fp, #0x18] // [V20 PSPSym]
- ldr x19, [fp, #0xD8]
+ ldr x19, [fp, #0xB8]
; gcrRegs +[x19]
- ;; size=32 bbWeight=0.02 PerfScore 0.16
+ ;; size=24 bbWeight=0.02 PerfScore 0.12
G_M33418_IG02: ; bbWeight=0.02, gcVars=0000000000000001 {V03}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V03}
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ; gcrRegs +[x1]
- cbz x1, G_M33418_IG15
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ldr x20, [x1]
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ cbz x0, G_M33418_IG08
+ cbz x19, G_M33418_IG08
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ldr x20, [x0]
+ movz x0, #0xD1FFAB1E
+ ; gcrRegs -[x0]
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ cmp x20, x0
+ bne G_M33418_IG08
+ ldr x0, [x19, #0x18]
+ movz x11, #0xD1FFAB1E // code for Jil.Deserialize.InlineDeserializer`1+<>c[System.__Canon]:<BuildFromStringWithNewDelegate>b__104_0(ushort):ubyte:this
+ movk x11, #0xD1FFAB1E LSL #16
+ movk x11, #0xD1FFAB1E LSL #32
+ cmp x0, x11
+ bne G_M33418_IG08
+ b G_M33418_IG04
+ ;; size=68 bbWeight=0.02 PerfScore 0.38
+G_M33418_IG03: ; bbWeight=98.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x19]
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ ldr w0, [x0, #0x10]
+ ; gcrRegs -[x0]
+ ldr x11, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x11]
+ ldr x11, [x11, #0x08]
+ ldr w1, [x11, #0x08]
+ cmp w1, w0
+ bls G_M33418_IG20
+ add x11, x11, #12
+ ; gcrRegs -[x11]
+ ; byrRegs +[x11]
+ ldrh w1, [x11, w0, UXTW #2]
+ cmp w1, #10
+ bne G_M33418_IG04
+ ldr w0, [fp, #0xB4] // [V02 loc0]
+ adds w1, w0, #1
+ bvs G_M33418_IG16
+ str w1, [fp, #0xB4] // [V02 loc0]
+ ;; size=60 bbWeight=98.99 PerfScore 2375.76
+G_M33418_IG04: ; bbWeight=99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x11]
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ ldr w0, [x0, #0x10]
+ ; gcrRegs -[x0]
+ add w0, w0, #1
+ ldr x11, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x11]
+ ldr x11, [x11, #0x08]
+ ldr w11, [x11, #0x08]
+ ; gcrRegs -[x11]
+ cmp w0, w11
+ bge G_M33418_IG06
+ ;; size=32 bbWeight=99 PerfScore 1485.00
+G_M33418_IG05: ; bbWeight=396, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr x11, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x11]
+ str w0, [x11, #0x10]
+ b G_M33418_IG03
+ ;; size=12 bbWeight=396 PerfScore 1584.00
+G_M33418_IG06: ; bbWeight=99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x11]
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ str w11, [x0, #0x10]
+ mov w1, wzr
+ cbz w1, G_M33418_IG21
+ ;; size=16 bbWeight=99 PerfScore 445.50
+G_M33418_IG07: ; bbWeight=98.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ b G_M33418_IG03
+ ;; size=4 bbWeight=98.99 PerfScore 98.99
+G_M33418_IG08: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x19]
+ ldr x11, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x11]
+ ldr x20, [x11]
+ b G_M33418_IG11
+ ;; size=12 bbWeight=0.00 PerfScore 0.00
+G_M33418_IG09: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x11]
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ ldr x20, [x0]
+ movz x0, #0xD1FFAB1E
+ ; gcrRegs -[x0]
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ cmp x20, x0
+ bne G_M33418_IG19
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ ldr w0, [x0, #0x10]
+ ; gcrRegs -[x0]
+ ldr x11, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x11]
+ ldr x11, [x11, #0x08]
+ ldr w1, [x11, #0x08]
+ cmp w1, w0
+ bls G_M33418_IG20
+ add x11, x11, #12
+ ; gcrRegs -[x11]
+ ; byrRegs +[x11]
+ ldrh w1, [x11, w0, UXTW #2]
+ ldr x0, [x19, #0x18]
+ movz x11, #0xD1FFAB1E
+ ; byrRegs -[x11]
+ movk x11, #0xD1FFAB1E LSL #16
+ movk x11, #0xD1FFAB1E LSL #32
+ cmp x0, x11
+ bne G_M33418_IG18
+ cmp w1, #10
+ bne G_M33418_IG11
+ ;; size=96 bbWeight=1.00 PerfScore 33.50
+G_M33418_IG10: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ldr w0, [fp, #0xB4] // [V02 loc0]
+ adds w0, w0, #1
+ bvs G_M33418_IG16
+ str w0, [fp, #0xB4] // [V02 loc0]
+ ;; size=16 bbWeight=1.00 PerfScore 4.50
+G_M33418_IG11: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
movz x1, #0xD1FFAB1E
- ; gcrRegs -[x1]
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x20, x1
- bne G_M33418_IG15
- b G_M33418_IG05
- ;; size=40 bbWeight=0.02 PerfScore 0.24
-G_M33418_IG03: ; bbWeight=98.99, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ; gcrRegs +[x1]
- ldr w23, [x1, #0x10]
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ldr x24, [x1, #0x08]
- ; gcrRegs +[x24]
- ldr w1, [x24, #0x08]
- ; gcrRegs -[x1]
- cmp w1, w23
- bls G_M33418_IG12
- add x1, x24, #12
- ; byrRegs +[x1]
- ldrh w1, [x1, w23, UXTW #2]
- ; byrRegs -[x1]
- ldr x0, [x19, #0x18]
- movz x2, #0xD1FFAB1E // code for Jil.Deserialize.InlineDeserializer`1+<>c[System.__Canon]:<BuildFromStringWithNewDelegate>b__104_0(ushort):ubyte:this
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- cmp x0, x2
- bne G_M33418_IG07
- cmp w1, #10
- bne G_M33418_IG05
- ;; size=68 bbWeight=98.99 PerfScore 2524.25
-G_M33418_IG04: ; bbWeight=98.99, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x24]
- ldr w1, [fp, #0xD4] // [V02 loc0]
- adds w1, w1, #1
- bvs G_M33418_IG09
- str w1, [fp, #0xD4] // [V02 loc0]
- ;; size=16 bbWeight=98.99 PerfScore 445.46
-G_M33418_IG05: ; bbWeight=99, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ; gcrRegs +[x1]
- ldr w1, [x1, #0x10]
- ; gcrRegs -[x1]
- add w21, w1, #1
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ; gcrRegs +[x1]
- ldr x1, [x1, #0x08]
- ldr w22, [x1, #0x08]
- cmp w21, w22
- bge G_M33418_IG13
- ;; size=32 bbWeight=99 PerfScore 1485.00
-G_M33418_IG06: ; bbWeight=396, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x1]
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ; gcrRegs +[x1]
- str w21, [x1, #0x10]
- b G_M33418_IG03
...
-48 (-6.94%) : 70909.dasm - System.Linq.Enumerable:Countushort:int (Tier1-OSR)
@@ -11,143 +11,214 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Collections.Generic.IEnumerable`1[ushort]>
-; V01 arg1 [V01,T03] ( 8,301.97) ref -> x19 class-hnd single-def <System.Func`2[ushort,ubyte]>
-; V02 loc0 [V02,T10] ( 5,198.09) int -> [fp+0xD4] do-not-enreg[Z] EH-live tier0-frame
-; V03 loc1 [V03,T00] ( 21,901.02) ref -> [fp+0xC8] do-not-enreg[H] class-hnd EH-live tier0-frame <System.Collections.Generic.IEnumerator`1[ushort]>
-; V04 loc2 [V04,T05] ( 7,299.97) ushort -> x1
+; V01 arg1 [V01,T10] ( 7, 3.04) ref -> x19 class-hnd single-def <System.Func`2[ushort,ubyte]>
+; V02 loc0 [V02,T07] ( 5,199.98) int -> [fp+0xB4] do-not-enreg[Z] EH-live tier0-frame
+; V03 loc1 [V03,T00] ( 21,901.02) ref -> [fp+0xA8] do-not-enreg[H] class-hnd EH-live tier0-frame <System.Collections.Generic.IEnumerator`1[ushort]>
+; V04 loc2 [V04,T06] ( 6,199.98) ushort -> x1
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref "guarded devirt return temp"
;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.String>
; V08 tmp3 [V08,T08] ( 4,199.98) int -> x1 "guarded devirt return temp"
;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.CharEnumerator>
-; V10 tmp5 [V10,T09] ( 4,199.98) int -> x0 "guarded devirt return temp"
+; V10 tmp5 [V10,T15] ( 2, 0 ) int -> x0 "guarded devirt return temp"
;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp" <Jil.Deserialize.InlineDeserializer`1+<>c[System.__Canon]>
-; V12 tmp7 [V12,T01] ( 5,200.00) int -> x2 "guarded devirt return temp"
+; V12 tmp7 [V12,T01] ( 5,200.00) int -> x1 "guarded devirt return temp"
;* V13 tmp8 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.CharEnumerator>
-;* V14 tmp9 [V14,T14] ( 0, 0 ) int -> zero-ref "OSR entry state var"
+;* V14 tmp9 [V14,T13] ( 0, 0 ) int -> zero-ref "OSR entry state var"
;* V15 tmp10 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.CharEnumerator>
-; V16 tmp11 [V16,T07] ( 6,299.97) int -> x23 "Inline stloc first use temp"
-; V17 tmp12 [V17,T06] ( 6,299.97) ref -> x24 class-hnd exact "Inline stloc first use temp" <System.String>
-; V18 tmp13 [V18,T02] ( 6,600.00) int -> x21 "Inline stloc first use temp"
-; V19 tmp14 [V19,T04] ( 6,300.00) int -> x22 "Inline stloc first use temp"
-; V20 PSPSym [V20,T15] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
-; V21 cse0 [V21,T11] ( 2,197.98) int -> x1 "CSE - aggressive"
-; V22 cse1 [V22,T12] ( 6, 3.04) long -> x20 hoist multi-def "CSE - aggressive"
-; V23 cse2 [V23,T13] ( 2, 2.00) int -> x1 "CSE - moderate"
+; V16 tmp11 [V16,T05] ( 6,299.97) int -> x0 "Inline stloc first use temp"
+; V17 tmp12 [V17,T04] ( 6,299.97) ref -> x11 class-hnd exact "Inline stloc first use temp" <System.String>
+; V18 tmp13 [V18,T02] ( 6,600.00) int -> x0 "Inline stloc first use temp"
+; V19 tmp14 [V19,T03] ( 6,300.00) int -> x11 "Inline stloc first use temp"
+; V20 PSPSym [V20,T14] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
+; V21 cse0 [V21,T09] ( 2,197.98) int -> x1 "CSE - aggressive"
+; V22 cse1 [V22,T11] ( 6, 3.04) long -> x20 hoist multi-def "CSE - aggressive"
+; V23 cse2 [V23,T12] ( 2, 2.00) int -> x1 "CSE - moderate"
;
; Lcl frame size = 16
G_M33418_IG01: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
+ stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
- stp x23, x24, [sp, #0x40]
mov fp, sp
- add xip1, sp, #240
+ add xip1, sp, #208
str xip1, [fp, #0x18] // [V20 PSPSym]
- ldr x19, [fp, #0xD8]
+ ldr x19, [fp, #0xB8]
; gcrRegs +[x19]
- ;; size=32 bbWeight=0.02 PerfScore 0.16
+ ;; size=24 bbWeight=0.02 PerfScore 0.12
G_M33418_IG02: ; bbWeight=0.02, gcVars=0000000000000001 {V03}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V03}
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ; gcrRegs +[x1]
- cbz x1, G_M33418_IG15
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ldr x20, [x1]
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ cbz x0, G_M33418_IG08
+ cbz x19, G_M33418_IG08
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ldr x20, [x0]
+ movz x0, #0xD1FFAB1E
+ ; gcrRegs -[x0]
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ cmp x20, x0
+ bne G_M33418_IG08
+ ldr x0, [x19, #0x18]
+ movz x11, #0xD1FFAB1E // code for Jil.Deserialize.InlineDeserializer`1+<>c[System.__Canon]:<BuildFromStringWithNewDelegate>b__104_0(ushort):ubyte:this
+ movk x11, #0xD1FFAB1E LSL #16
+ movk x11, #0xD1FFAB1E LSL #32
+ cmp x0, x11
+ bne G_M33418_IG08
+ b G_M33418_IG04
+ ;; size=68 bbWeight=0.02 PerfScore 0.38
+G_M33418_IG03: ; bbWeight=98.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x19]
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ ldr w0, [x0, #0x10]
+ ; gcrRegs -[x0]
+ ldr x11, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x11]
+ ldr x11, [x11, #0x08]
+ ldr w1, [x11, #0x08]
+ cmp w1, w0
+ bls G_M33418_IG20
+ add x11, x11, #12
+ ; gcrRegs -[x11]
+ ; byrRegs +[x11]
+ ldrh w1, [x11, w0, UXTW #2]
+ cmp w1, #10
+ bne G_M33418_IG04
+ ldr w0, [fp, #0xB4] // [V02 loc0]
+ adds w1, w0, #1
+ bvs G_M33418_IG16
+ str w1, [fp, #0xB4] // [V02 loc0]
+ ;; size=60 bbWeight=98.99 PerfScore 2375.76
+G_M33418_IG04: ; bbWeight=99.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x11]
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ ldr w0, [x0, #0x10]
+ ; gcrRegs -[x0]
+ add w0, w0, #1
+ ldr x11, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x11]
+ ldr x11, [x11, #0x08]
+ ldr w11, [x11, #0x08]
+ ; gcrRegs -[x11]
+ cmp w0, w11
+ bge G_M33418_IG06
+ ;; size=32 bbWeight=99.00 PerfScore 1485.00
+G_M33418_IG05: ; bbWeight=396.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr x11, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x11]
+ str w0, [x11, #0x10]
+ b G_M33418_IG03
+ ;; size=12 bbWeight=396.00 PerfScore 1584.00
+G_M33418_IG06: ; bbWeight=99.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x11]
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ str w11, [x0, #0x10]
+ mov w1, wzr
+ cbz w1, G_M33418_IG21
+ ;; size=16 bbWeight=99.00 PerfScore 445.50
+G_M33418_IG07: ; bbWeight=98.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ b G_M33418_IG03
+ ;; size=4 bbWeight=98.99 PerfScore 98.99
+G_M33418_IG08: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x19]
+ ldr x11, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x11]
+ ldr x20, [x11]
+ b G_M33418_IG11
+ ;; size=12 bbWeight=0.00 PerfScore 0.00
+G_M33418_IG09: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x11]
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ ldr x20, [x0]
+ movz x0, #0xD1FFAB1E
+ ; gcrRegs -[x0]
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ cmp x20, x0
+ bne G_M33418_IG19
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ ldr w0, [x0, #0x10]
+ ; gcrRegs -[x0]
+ ldr x11, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x11]
+ ldr x11, [x11, #0x08]
+ ldr w1, [x11, #0x08]
+ cmp w1, w0
+ bls G_M33418_IG20
+ add x11, x11, #12
+ ; gcrRegs -[x11]
+ ; byrRegs +[x11]
+ ldrh w1, [x11, w0, UXTW #2]
+ ldr x0, [x19, #0x18]
+ movz x11, #0xD1FFAB1E
+ ; byrRegs -[x11]
+ movk x11, #0xD1FFAB1E LSL #16
+ movk x11, #0xD1FFAB1E LSL #32
+ cmp x0, x11
+ bne G_M33418_IG18
+ cmp w1, #10
+ bne G_M33418_IG11
+ ;; size=96 bbWeight=1.00 PerfScore 33.50
+G_M33418_IG10: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ldr w0, [fp, #0xB4] // [V02 loc0]
+ adds w0, w0, #1
+ bvs G_M33418_IG16
+ str w0, [fp, #0xB4] // [V02 loc0]
+ ;; size=16 bbWeight=1.00 PerfScore 4.50
+G_M33418_IG11: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
movz x1, #0xD1FFAB1E
- ; gcrRegs -[x1]
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x20, x1
- bne G_M33418_IG15
- b G_M33418_IG05
- ;; size=40 bbWeight=0.02 PerfScore 0.24
-G_M33418_IG03: ; bbWeight=98.99, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ; gcrRegs +[x1]
- ldr w23, [x1, #0x10]
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ldr x24, [x1, #0x08]
- ; gcrRegs +[x24]
- ldr w1, [x24, #0x08]
- ; gcrRegs -[x1]
- cmp w1, w23
- bls G_M33418_IG12
- add x1, x24, #12
- ; byrRegs +[x1]
- ldrh w1, [x1, w23, UXTW #2]
- ; byrRegs -[x1]
- ldr x0, [x19, #0x18]
- movz x2, #0xD1FFAB1E // code for Jil.Deserialize.InlineDeserializer`1+<>c[System.__Canon]:<BuildFromStringWithNewDelegate>b__104_0(ushort):ubyte:this
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- cmp x0, x2
- bne G_M33418_IG07
- cmp w1, #10
- bne G_M33418_IG05
- ;; size=68 bbWeight=98.99 PerfScore 2524.25
-G_M33418_IG04: ; bbWeight=98.99, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x24]
- ldr w1, [fp, #0xD4] // [V02 loc0]
- adds w1, w1, #1
- bvs G_M33418_IG09
- str w1, [fp, #0xD4] // [V02 loc0]
- ;; size=16 bbWeight=98.99 PerfScore 445.46
-G_M33418_IG05: ; bbWeight=99.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ; gcrRegs +[x1]
- ldr w1, [x1, #0x10]
- ; gcrRegs -[x1]
- add w21, w1, #1
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ; gcrRegs +[x1]
- ldr x1, [x1, #0x08]
- ldr w22, [x1, #0x08]
- cmp w21, w22
- bge G_M33418_IG13
- ;; size=32 bbWeight=99.00 PerfScore 1485.00
-G_M33418_IG06: ; bbWeight=396.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x1]
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ; gcrRegs +[x1]
- str w21, [x1, #0x10]
- b G_M33418_IG03
...
-48 (-6.94%) : 79277.dasm - System.Linq.Enumerable:Countushort:int (Tier1-OSR)
@@ -11,143 +11,214 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Collections.Generic.IEnumerable`1[ushort]>
-; V01 arg1 [V01,T03] ( 8,301.97) ref -> x19 class-hnd single-def <System.Func`2[ushort,ubyte]>
-; V02 loc0 [V02,T10] ( 5,198.09) int -> [fp+0xD4] do-not-enreg[Z] EH-live tier0-frame
-; V03 loc1 [V03,T00] ( 21,901.02) ref -> [fp+0xC8] do-not-enreg[H] class-hnd EH-live tier0-frame <System.Collections.Generic.IEnumerator`1[ushort]>
-; V04 loc2 [V04,T05] ( 7,299.97) ushort -> x1
+; V01 arg1 [V01,T10] ( 7, 3.04) ref -> x19 class-hnd single-def <System.Func`2[ushort,ubyte]>
+; V02 loc0 [V02,T07] ( 5,199.98) int -> [fp+0xB4] do-not-enreg[Z] EH-live tier0-frame
+; V03 loc1 [V03,T00] ( 21,901.02) ref -> [fp+0xA8] do-not-enreg[H] class-hnd EH-live tier0-frame <System.Collections.Generic.IEnumerator`1[ushort]>
+; V04 loc2 [V04,T06] ( 6,199.98) ushort -> x1
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref "guarded devirt return temp"
;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.String>
; V08 tmp3 [V08,T08] ( 4,199.98) int -> x1 "guarded devirt return temp"
;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.CharEnumerator>
-; V10 tmp5 [V10,T09] ( 4,199.98) int -> x0 "guarded devirt return temp"
+; V10 tmp5 [V10,T15] ( 2, 0 ) int -> x0 "guarded devirt return temp"
;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp" <Jil.Deserialize.InlineDeserializer`1+<>c[System.__Canon]>
-; V12 tmp7 [V12,T01] ( 5,200.00) int -> x2 "guarded devirt return temp"
+; V12 tmp7 [V12,T01] ( 5,200.00) int -> x1 "guarded devirt return temp"
;* V13 tmp8 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.CharEnumerator>
-;* V14 tmp9 [V14,T14] ( 0, 0 ) int -> zero-ref "OSR entry state var"
+;* V14 tmp9 [V14,T13] ( 0, 0 ) int -> zero-ref "OSR entry state var"
;* V15 tmp10 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.CharEnumerator>
-; V16 tmp11 [V16,T07] ( 6,299.97) int -> x23 "Inline stloc first use temp"
-; V17 tmp12 [V17,T06] ( 6,299.97) ref -> x24 class-hnd exact "Inline stloc first use temp" <System.String>
-; V18 tmp13 [V18,T02] ( 6,600.00) int -> x21 "Inline stloc first use temp"
-; V19 tmp14 [V19,T04] ( 6,300.00) int -> x22 "Inline stloc first use temp"
-; V20 PSPSym [V20,T15] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
-; V21 cse0 [V21,T11] ( 2,197.98) int -> x1 "CSE - aggressive"
-; V22 cse1 [V22,T12] ( 6, 3.04) long -> x20 hoist multi-def "CSE - aggressive"
-; V23 cse2 [V23,T13] ( 2, 2.00) int -> x1 "CSE - moderate"
+; V16 tmp11 [V16,T05] ( 6,299.97) int -> x0 "Inline stloc first use temp"
+; V17 tmp12 [V17,T04] ( 6,299.97) ref -> x11 class-hnd exact "Inline stloc first use temp" <System.String>
+; V18 tmp13 [V18,T02] ( 6,600.00) int -> x0 "Inline stloc first use temp"
+; V19 tmp14 [V19,T03] ( 6,300.00) int -> x11 "Inline stloc first use temp"
+; V20 PSPSym [V20,T14] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
+; V21 cse0 [V21,T09] ( 2,197.98) int -> x1 "CSE - aggressive"
+; V22 cse1 [V22,T11] ( 6, 3.04) long -> x20 hoist multi-def "CSE - aggressive"
+; V23 cse2 [V23,T12] ( 2, 2.00) int -> x1 "CSE - moderate"
;
; Lcl frame size = 16
G_M33418_IG01: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
+ stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
- stp x23, x24, [sp, #0x40]
mov fp, sp
- add xip1, sp, #240
+ add xip1, sp, #208
str xip1, [fp, #0x18] // [V20 PSPSym]
- ldr x19, [fp, #0xD8]
+ ldr x19, [fp, #0xB8]
; gcrRegs +[x19]
- ;; size=32 bbWeight=0.02 PerfScore 0.16
+ ;; size=24 bbWeight=0.02 PerfScore 0.12
G_M33418_IG02: ; bbWeight=0.02, gcVars=0000000000000001 {V03}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V03}
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ; gcrRegs +[x1]
- cbz x1, G_M33418_IG15
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ldr x20, [x1]
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ cbz x0, G_M33418_IG08
+ cbz x19, G_M33418_IG08
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ldr x20, [x0]
+ movz x0, #0xD1FFAB1E
+ ; gcrRegs -[x0]
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ cmp x20, x0
+ bne G_M33418_IG08
+ ldr x0, [x19, #0x18]
+ movz x11, #0xD1FFAB1E // code for Jil.Deserialize.InlineDeserializer`1+<>c[System.__Canon]:<BuildFromStringWithNewDelegate>b__104_0(ushort):ubyte:this
+ movk x11, #0xD1FFAB1E LSL #16
+ movk x11, #0xD1FFAB1E LSL #32
+ cmp x0, x11
+ bne G_M33418_IG08
+ b G_M33418_IG04
+ ;; size=68 bbWeight=0.02 PerfScore 0.38
+G_M33418_IG03: ; bbWeight=98.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x19]
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ ldr w0, [x0, #0x10]
+ ; gcrRegs -[x0]
+ ldr x11, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x11]
+ ldr x11, [x11, #0x08]
+ ldr w1, [x11, #0x08]
+ cmp w1, w0
+ bls G_M33418_IG20
+ add x11, x11, #12
+ ; gcrRegs -[x11]
+ ; byrRegs +[x11]
+ ldrh w1, [x11, w0, UXTW #2]
+ cmp w1, #10
+ bne G_M33418_IG04
+ ldr w0, [fp, #0xB4] // [V02 loc0]
+ adds w1, w0, #1
+ bvs G_M33418_IG16
+ str w1, [fp, #0xB4] // [V02 loc0]
+ ;; size=60 bbWeight=98.99 PerfScore 2375.76
+G_M33418_IG04: ; bbWeight=99.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x11]
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ ldr w0, [x0, #0x10]
+ ; gcrRegs -[x0]
+ add w0, w0, #1
+ ldr x11, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x11]
+ ldr x11, [x11, #0x08]
+ ldr w11, [x11, #0x08]
+ ; gcrRegs -[x11]
+ cmp w0, w11
+ bge G_M33418_IG06
+ ;; size=32 bbWeight=99.00 PerfScore 1485.00
+G_M33418_IG05: ; bbWeight=396.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr x11, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x11]
+ str w0, [x11, #0x10]
+ b G_M33418_IG03
+ ;; size=12 bbWeight=396.00 PerfScore 1584.00
+G_M33418_IG06: ; bbWeight=99.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x11]
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ str w11, [x0, #0x10]
+ mov w1, wzr
+ cbz w1, G_M33418_IG21
+ ;; size=16 bbWeight=99.00 PerfScore 445.50
+G_M33418_IG07: ; bbWeight=98.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ b G_M33418_IG03
+ ;; size=4 bbWeight=98.99 PerfScore 98.99
+G_M33418_IG08: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x19]
+ ldr x11, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x11]
+ ldr x20, [x11]
+ b G_M33418_IG11
+ ;; size=12 bbWeight=0.00 PerfScore 0.00
+G_M33418_IG09: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x11]
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ ldr x20, [x0]
+ movz x0, #0xD1FFAB1E
+ ; gcrRegs -[x0]
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ cmp x20, x0
+ bne G_M33418_IG19
+ ldr x0, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x0]
+ ldr w0, [x0, #0x10]
+ ; gcrRegs -[x0]
+ ldr x11, [fp, #0xA8] // [V03 loc1]
+ ; gcrRegs +[x11]
+ ldr x11, [x11, #0x08]
+ ldr w1, [x11, #0x08]
+ cmp w1, w0
+ bls G_M33418_IG20
+ add x11, x11, #12
+ ; gcrRegs -[x11]
+ ; byrRegs +[x11]
+ ldrh w1, [x11, w0, UXTW #2]
+ ldr x0, [x19, #0x18]
+ movz x11, #0xD1FFAB1E
+ ; byrRegs -[x11]
+ movk x11, #0xD1FFAB1E LSL #16
+ movk x11, #0xD1FFAB1E LSL #32
+ cmp x0, x11
+ bne G_M33418_IG18
+ cmp w1, #10
+ bne G_M33418_IG11
+ ;; size=96 bbWeight=1.00 PerfScore 33.50
+G_M33418_IG10: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ldr w0, [fp, #0xB4] // [V02 loc0]
+ adds w0, w0, #1
+ bvs G_M33418_IG16
+ str w0, [fp, #0xB4] // [V02 loc0]
+ ;; size=16 bbWeight=1.00 PerfScore 4.50
+G_M33418_IG11: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
movz x1, #0xD1FFAB1E
- ; gcrRegs -[x1]
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x20, x1
- bne G_M33418_IG15
- b G_M33418_IG05
- ;; size=40 bbWeight=0.02 PerfScore 0.24
-G_M33418_IG03: ; bbWeight=98.99, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ; gcrRegs +[x1]
- ldr w23, [x1, #0x10]
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ldr x24, [x1, #0x08]
- ; gcrRegs +[x24]
- ldr w1, [x24, #0x08]
- ; gcrRegs -[x1]
- cmp w1, w23
- bls G_M33418_IG12
- add x1, x24, #12
- ; byrRegs +[x1]
- ldrh w1, [x1, w23, UXTW #2]
- ; byrRegs -[x1]
- ldr x0, [x19, #0x18]
- movz x2, #0xD1FFAB1E // code for Jil.Deserialize.InlineDeserializer`1+<>c[System.__Canon]:<BuildFromStringWithNewDelegate>b__104_0(ushort):ubyte:this
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- cmp x0, x2
- bne G_M33418_IG07
- cmp w1, #10
- bne G_M33418_IG05
- ;; size=68 bbWeight=98.99 PerfScore 2524.25
-G_M33418_IG04: ; bbWeight=98.99, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x24]
- ldr w1, [fp, #0xD4] // [V02 loc0]
- adds w1, w1, #1
- bvs G_M33418_IG09
- str w1, [fp, #0xD4] // [V02 loc0]
- ;; size=16 bbWeight=98.99 PerfScore 445.46
-G_M33418_IG05: ; bbWeight=99.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ; gcrRegs +[x1]
- ldr w1, [x1, #0x10]
- ; gcrRegs -[x1]
- add w21, w1, #1
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ; gcrRegs +[x1]
- ldr x1, [x1, #0x08]
- ldr w22, [x1, #0x08]
- cmp w21, w22
- bge G_M33418_IG13
- ;; size=32 bbWeight=99.00 PerfScore 1485.00
-G_M33418_IG06: ; bbWeight=396.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x1]
- ldr x1, [fp, #0xC8] // [V03 loc1]
- ; gcrRegs +[x1]
- str w21, [x1, #0x10]
- b G_M33418_IG03
...
+24 (+10.91%) : 48583.dasm - System.MemoryExtensions:Trim(System.ReadOnlySpan1[ushort]):System.ReadOnlySpan1ushort
@@ -11,9 +11,9 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T04] ( 2, 4 ) int -> x0 "Span.get_Item index"
-; V03 tmp2 [V03,T05] ( 2, 2 ) ubyte -> x0 "Inline return value spill temp"
-; V04 tmp3 [V04,T00] ( 4, 8 ) ushort -> x0 "Inlining Arg"
+; V02 tmp1 [V02,T04] ( 4, 4 ) int -> x21 "Span.get_Item index"
+; V03 tmp2 [V03,T05] ( 2, 0 ) ubyte -> x0 "Inline return value spill temp"
+; V04 tmp3 [V04,T03] ( 4, 6 ) ushort -> x0 "Inlining Arg"
;* V05 tmp4 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V06 tmp5 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V07 tmp6 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -21,8 +21,8 @@
;* V09 tmp8 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V10 tmp9 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V11 tmp10 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V12 tmp11 [V12,T06] ( 2, 2 ) ubyte -> x0 "Inline return value spill temp"
-; V13 tmp12 [V13,T01] ( 4, 8 ) ushort -> x0 "Inlining Arg"
+; V12 tmp11 [V12,T06] ( 2, 0 ) ubyte -> x0 "Inline return value spill temp"
+; V13 tmp12 [V13,T01] ( 6, 6 ) ushort -> x0 "Inlining Arg"
;* V14 tmp13 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V15 tmp14 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V16 tmp15 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -30,8 +30,8 @@
;* V18 tmp17 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V19 tmp18 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V20 tmp19 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V21 tmp20 [V21,T02] ( 5, 4 ) byref -> x19 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V22 tmp21 [V22,T03] ( 5, 4 ) int -> x20 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V21 tmp20 [V21,T00] ( 6, 4 ) byref -> x19 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V22 tmp21 [V22,T02] ( 6, 4 ) int -> x20 single-def "field V00._length (fldOffset=0x8)" P-INDEP
;* V23 tmp22 [V23 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP
;* V24 tmp23 [V24 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
;* V25 tmp24 [V25 ] ( 0, 0 ) byref -> zero-ref single-def "field V06._reference (fldOffset=0x0)" P-INDEP
@@ -56,70 +56,54 @@
;* V44 tmp43 [V44 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP
;* V45 tmp44 [V45 ] ( 0, 0 ) byref -> zero-ref single-def "field V20._reference (fldOffset=0x0)" P-INDEP
;* V46 tmp45 [V46 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
-; V47 tmp46 [V47,T07] ( 2, 0 ) struct (16) [fp+0x10] do-not-enreg[SR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <System.ReadOnlySpan`1[ushort]>
+; V47 tmp46 [V47,T07] ( 2, 0 ) struct (16) [fp+0x18] do-not-enreg[SR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <System.ReadOnlySpan`1[ushort]>
;
-; Lcl frame size = 16
+; Lcl frame size = 24
-G_M37241_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20]
+G_M37241_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ stp fp, lr, [sp, #-0x40]!
+ stp x19, x20, [sp, #0x28]
+ str x21, [sp, #0x38]
mov fp, sp
- str xzr, [fp, #0x10] // [V47 tmp46]
+ str xzr, [fp, #0x18] // [V47 tmp46]
mov x19, x0
; byrRegs +[x19]
mov w20, w1
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=28 bbWeight=1 PerfScore 5.50
G_M37241_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
- cbz w20, G_M37241_IG06
+ cbz w20, G_M37241_IG04
ldrh w0, [x19]
cmp w0, #0xD1FFAB1E
- blo G_M37241_IG03
- movz x1, #0xD1FFAB1E // code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
+ bhs G_M37241_IG08
+ movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- blr x1
- cbnz w0, G_M37241_IG08
- b G_M37241_IG04
- ;; size=44 bbWeight=1 PerfScore 13.00
+ ldrb w0, [x1, w0, UXTW #2]
+ tbnz w0, #7, G_M37241_IG06
+ sub w21, w20, #1
+ ldrh w0, [x19, w21, UXTW #2]
+ cmp w0, #0xD1FFAB1E
+ bhs G_M37241_IG09
+ ;; size=52 bbWeight=1 PerfScore 16.00
G_M37241_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldrb w0, [x1, w0, UXTW #2]
- tbnz w0, #7, G_M37241_IG08
+ tbnz w0, #7, G_M37241_IG06
;; size=20 bbWeight=1 PerfScore 5.50
-G_M37241_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
- sub w0, w20, #1
- ldrh w0, [x19, w0, UXTW #2]
- cmp w0, #0xD1FFAB1E
- blo G_M37241_IG05
- movz x1, #0xD1FFAB1E // code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- blr x1
- cbnz w0, G_M37241_IG08
- b G_M37241_IG06
- ;; size=44 bbWeight=1 PerfScore 12.50
-G_M37241_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldrb w0, [x1, w0, UXTW #2]
- tbnz w0, #7, G_M37241_IG08
- ;; size=20 bbWeight=1 PerfScore 5.50
-G_M37241_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M37241_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
mov x0, x19
; byrRegs +[x0]
mov x1, x20
;; size=8 bbWeight=1 PerfScore 1.00
-G_M37241_IG07: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x30
+G_M37241_IG05: ; bbWeight=1, epilog, nogc, extend
+ ldr x21, [sp, #0x38]
+ ldp x19, x20, [sp, #0x28]
+ ldp fp, lr, [sp], #0x40
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M37241_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M37241_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref
; byrRegs -[x0]
mov x0, x19
; byrRegs +[x0]
@@ -130,16 +114,39 @@ G_M37241_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
ldr x2, [x2]
blr x2
; byrRegs -[x19]
- stp x0, x1, [fp, #0x10] // [V47 tmp46], [V47 tmp46+0x08]
- ldp x0, x1, [fp, #0x10] // [V47 tmp46], [V47 tmp46+0x08]
+ stp x0, x1, [fp, #0x18] // [V47 tmp46], [V47 tmp46+0x08]
+ ldp x0, x1, [fp, #0x18] // [V47 tmp46], [V47 tmp46+0x08]
;; size=36 bbWeight=0 PerfScore 0.00
-G_M37241_IG09: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x30
+G_M37241_IG07: ; bbWeight=0, epilog, nogc, extend
+ ldr x21, [sp, #0x38]
+ ldp x19, x20, [sp, #0x28]
+ ldp fp, lr, [sp], #0x40
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M37241_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref, isz
+ ; byrRegs -[x0] +[x19]
+ movz x1, #0xD1FFAB1E // code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ ldr x1, [x1]
+ blr x1
+ cbnz w0, G_M37241_IG06
+ sub w21, w20, #1
+ ldrh w0, [x19, w21, UXTW #2]
+ cmp w0, #0xD1FFAB1E
+ blo G_M37241_IG03
+ ;; size=40 bbWeight=0 PerfScore 0.00
+G_M37241_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+ movz x1, #0xD1FFAB1E // code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ ldr x1, [x1]
+ blr x1
+ cbnz w0, G_M37241_IG06
+ b G_M37241_IG04
+ ;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 220, prolog size 16, PerfScore 45.00, instruction count 55, allocated bytes for code 220 (MethodHash=76ed6e86) for method System.MemoryExtensions:Trim(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Tier1)
+; Total bytes of code 244, prolog size 20, PerfScore 33.00, instruction count 61, allocated bytes for code 244 (MethodHash=76ed6e86) for method System.MemoryExtensions:Trim(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Tier1)
; ============================================================
Unwind Info:
@@ -150,7 +157,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 55 (0x00037) Actual length = 220 (0x0000dc)
+ Function Length : 61 (0x0003d) Actual length = 244 (0x0000f4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -161,10 +168,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
- E4 end
- E4 end
+ D0 87 save_reg X#2 Z#7 (0x07); str x21, [sp, #56]
+ C8 05 save_regp X#0 Z#5 (0x05); stp x19, x20, [sp, #40]
+ 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
E4 end
E4 end
+28 (+11.11%) : 63518.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag1[System.__Canon]:AddDependencies(System.Collections.Immutable.ImmutableArray1[System.__Canon]):this (Tier1)
@@ -10,38 +10,38 @@
; Final local variable assignments
;
; V00 this [V00,T01] ( 7, 3 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]>
-; V01 arg1 [V01 ] ( 5, 4 ) struct ( 8) [fp+0x10] do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
+; V01 arg1 [V01 ] ( 6, 4 ) struct ( 8) [fp+0x10] do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1+Enumerator[System.__Canon]>
-; V03 loc1 [V03,T18] ( 2, 0 ) ref -> x22 class-hnd <System.__Canon>
+; V03 loc1 [V03,T17] ( 2, 0 ) ref -> x22 class-hnd <System.__Canon>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp4 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V09 tmp5 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V10 tmp6 [V10,T08] ( 4, 0 ) long -> x11 "VirtualCall with runtime lookup"
-;* V11 tmp7 [V11,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V10 tmp6 [V10,T07] ( 4, 0 ) long -> x11 "VirtualCall with runtime lookup"
+;* V11 tmp7 [V11,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V12 tmp8 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
-; V13 tmp9 [V13,T19] ( 2, 0 ) int -> x21 "Inline stloc first use temp"
-; V14 tmp10 [V14 ] ( 5, 4 ) ref -> [fp+0x10] do-not-enreg[X] addr-exposed single-def "field V01.array (fldOffset=0x0)" P-DEP
-; V15 tmp11 [V15,T07] ( 4, 0 ) ref -> x20 "field V02._array (fldOffset=0x0)" P-INDEP
-; V16 tmp12 [V16,T06] ( 6, 0 ) int -> x21 "field V02._index (fldOffset=0x8)" P-INDEP
-; V17 tmp13 [V17,T03] ( 3, 3 ) ref -> x0 single-def "field V12.array (fldOffset=0x0)" P-INDEP
-; V18 tmp14 [V18,T20] ( 2, 0 ) long -> x1 "argument with side effect"
-;* V19 rat0 [V19,T02] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+; V13 tmp9 [V13,T18] ( 2, 0 ) int -> x21 "Inline stloc first use temp"
+; V14 tmp10 [V14 ] ( 6, 4 ) ref -> [fp+0x10] do-not-enreg[X] addr-exposed single-def "field V01.array (fldOffset=0x0)" P-DEP
+; V15 tmp11 [V15,T06] ( 4, 0 ) ref -> x20 "field V02._array (fldOffset=0x0)" P-INDEP
+; V16 tmp12 [V16,T05] ( 6, 0 ) int -> x21 "field V02._index (fldOffset=0x8)" P-INDEP
+; V17 tmp13 [V17,T03] ( 5, 3 ) ref -> x0 single-def "field V12.array (fldOffset=0x0)" P-INDEP
+; V18 tmp14 [V18,T19] ( 2, 0 ) long -> x1 "argument with side effect"
+; V19 rat0 [V19,T02] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
;* V20 rat1 [V20,T04] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V21 rat2 [V21,T00] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V22 rat3 [V22,T09] ( 3, 0 ) long -> x0 "Spilling to split statement for tree"
-; V23 rat4 [V23,T10] ( 3, 0 ) long -> x1 "runtime lookup"
-; V24 rat5 [V24,T11] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V25 rat6 [V25,T12] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V26 rat7 [V26,T21] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V27 rat8 [V27,T13] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V28 rat9 [V28,T14] ( 3, 0 ) long -> x0 "Spilling to split statement for tree"
-; V29 rat10 [V29,T15] ( 3, 0 ) long -> x11 "fgMakeTemp is creating a new local variable"
-;* V30 rat11 [V30,T16] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V31 rat12 [V31,T22] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V32 rat13 [V32,T17] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V21 rat2 [V21,T00] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
+; V22 rat3 [V22,T08] ( 3, 0 ) long -> x0 "Spilling to split statement for tree"
+; V23 rat4 [V23,T09] ( 3, 0 ) long -> x1 "runtime lookup"
+; V24 rat5 [V24,T10] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V25 rat6 [V25,T11] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V26 rat7 [V26,T20] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V27 rat8 [V27,T12] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V28 rat9 [V28,T13] ( 3, 0 ) long -> x0 "Spilling to split statement for tree"
+; V29 rat10 [V29,T14] ( 3, 0 ) long -> x11 "fgMakeTemp is creating a new local variable"
+;* V30 rat11 [V30,T15] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V31 rat12 [V31,T21] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V32 rat13 [V32,T16] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 16
@@ -55,45 +55,58 @@ G_M54251_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x19]
;; size=24 bbWeight=1 PerfScore 5.00
G_M54251_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr xzr, [x19]
+ ldr x0, [x19]
+ ldr x0, [x0, #0x38]
+ ldr x0, [x0]
+ ldr x0, [x0, #0x88]
+ cbz x0, G_M54251_IG05
+ ;; size=20 bbWeight=1 PerfScore 13.00
+G_M54251_IG03: ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [fp, #0x10] // [V14 tmp10]
; gcrRegs +[x0]
- cbz x0, G_M54251_IG04
- ;; size=12 bbWeight=1 PerfScore 6.00
-G_M54251_IG03: ; bbWeight=1.00, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+ cbz x0, G_M54251_IG06
+ ;; size=8 bbWeight=0.80 PerfScore 2.40
+G_M54251_IG04: ; bbWeight=1.00, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
ldr w0, [x0, #0x08]
; gcrRegs -[x0]
- cbnz w0, G_M54251_IG06
- ;; size=8 bbWeight=1.00 PerfScore 4.00
-G_M54251_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, epilog, nogc
+ cbz w0, G_M54251_IG06
+ b G_M54251_IG08
+ ;; size=12 bbWeight=1.00 PerfScore 5.00
+G_M54251_IG05: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [fp, #0x10] // [V14 tmp10]
+ ; gcrRegs +[x0]
+ cbnz x0, G_M54251_IG04
+ ;; size=8 bbWeight=0.20 PerfScore 0.60
+G_M54251_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[x0]
ldp x21, x22, [sp, #0x30]
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x40
ret lr
;; size=16 bbWeight=1 PerfScore 4.00
-G_M54251_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M54251_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
;; size=4 bbWeight=0 PerfScore 0.00
-G_M54251_IG06: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M54251_IG08: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, #0x10]
; gcrRegs +[x0]
- cbz x0, G_M54251_IG04
+ cbz x0, G_M54251_IG06
ldr x0, [x19]
; gcrRegs -[x0]
ldr x1, [x0, #0x38]
ldr x1, [x1]
ldr x1, [x1, #0x88]
- cbz x1, G_M54251_IG07
- b G_M54251_IG08
+ cbz x1, G_M54251_IG09
+ b G_M54251_IG10
;; size=32 bbWeight=0 PerfScore 0.00
-G_M54251_IG07: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M54251_IG09: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov x1, x0
;; size=20 bbWeight=0 PerfScore 0.00
-G_M54251_IG08: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M54251_IG10: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
add x0, fp, #16 // [V01 arg1]
movz x2, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableArray`1[System.__Canon]:GetEnumerator():System.Collections.Immutable.ImmutableArray`1+Enumerator[System.__Canon]:this
movk x2, #0xD1FFAB1E LSL #16
@@ -104,13 +117,13 @@ G_M54251_IG08: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
mov x20, x0
; gcrRegs +[x20]
mov w21, w1
- b G_M54251_IG12
+ b G_M54251_IG14
;; size=36 bbWeight=0 PerfScore 0.00
-G_M54251_IG09: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M54251_IG11: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
ldr w0, [x20, #0x08]
cmp w21, w0
- bhs G_M54251_IG05
+ bhs G_M54251_IG07
add x0, x20, #16
; byrRegs +[x0]
ldr x22, [x0, w21, UXTW #3]
@@ -120,17 +133,17 @@ G_M54251_IG09: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
ldr x1, [x0, #0x38]
ldr x1, [x1]
ldr x11, [x1, #0x28]
- cbz x11, G_M54251_IG10
- b G_M54251_IG11
+ cbz x11, G_M54251_IG12
+ b G_M54251_IG13
;; size=44 bbWeight=0 PerfScore 0.00
-G_M54251_IG10: ; bbWeight=0, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref
+G_M54251_IG12: ; bbWeight=0, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov x11, x0
;; size=20 bbWeight=0 PerfScore 0.00
-G_M54251_IG11: ; bbWeight=0, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref
+G_M54251_IG13: ; bbWeight=0, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref
ldr x0, [x19, #0x10]
; gcrRegs +[x0]
mov x1, x22
@@ -139,15 +152,15 @@ G_M54251_IG11: ; bbWeight=0, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=00
blr x2
; gcrRegs -[x0-x1 x22]
;; size=16 bbWeight=0 PerfScore 0.00
-G_M54251_IG12: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M54251_IG14: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
add w21, w21, #1
ldr w0, [x20, #0x08]
cmp w0, w21
- bgt G_M54251_IG09
- b G_M54251_IG04
+ bgt G_M54251_IG11
+ b G_M54251_IG06
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 252, prolog size 20, PerfScore 19.00, instruction count 63, allocated bytes for code 252 (MethodHash=05f02c14) for method Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDependencies(System.Collections.Immutable.ImmutableArray`1[System.__Canon]):this (Tier1)
+; Total bytes of code 280, prolog size 20, PerfScore 30.00, instruction count 70, allocated bytes for code 280 (MethodHash=05f02c14) for method Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDependencies(System.Collections.Immutable.ImmutableArray`1[System.__Canon]):this (Tier1)
; ============================================================
Unwind Info:
@@ -158,7 +171,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 63 (0x0003f) Actual length = 252 (0x0000fc)
+ Function Length : 70 (0x00046) Actual length = 280 (0x000118)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+12 (+12.00%) : 68495.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:IsInDocumentationComment(Microsoft.CodeAnalysis.SyntaxNode):ubyte (Tier1)
@@ -12,7 +12,7 @@
; V00 arg0 [V00,T03] ( 3, 3 ) ref -> x0 class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode>
; V01 loc0 [V01,T00] ( 6, 21.95) ref -> x0 class-hnd <Microsoft.CodeAnalysis.SyntaxNode>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 4, 14.97) ushort -> x1 "Inline return value spill temp"
+; V03 tmp1 [V03,T01] ( 5, 14.97) ushort -> x1 "Inline return value spill temp"
; V04 tmp2 [V04,T02] ( 3, 14.97) int -> x1 "Inline stloc first use temp"
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
;* V06 tmp4 [V06,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
@@ -25,7 +25,7 @@ G_M65070_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M65070_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
- cbz x0, G_M65070_IG05
+ cbz x0, G_M65070_IG08
;; size=4 bbWeight=1 PerfScore 1.00
G_M65070_IG03: ; bbWeight=4.99, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldr x1, [x0, #0x18]
@@ -35,40 +35,47 @@ G_M65070_IG03: ; bbWeight=4.99, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
sub w2, w1, #2
mov w3, #0xD1FFAB1E
cmp w2, w3
- bls G_M65070_IG09
- ;; size=24 bbWeight=4.99 PerfScore 42.40
+ bls G_M65070_IG10
+ mov w2, #0xD1FFAB1E
+ cmp w1, w2
+ beq G_M65070_IG05
+ ;; size=36 bbWeight=4.99 PerfScore 52.38
G_M65070_IG04: ; bbWeight=4.99, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
mov w2, #0xD1FFAB1E
cmp w1, w2
- beq G_M65070_IG07
- mov w2, #0xD1FFAB1E
- cmp w1, w2
- beq G_M65070_IG07
- ldr x0, [x0, #0x08]
- cbnz x0, G_M65070_IG03
- ;; size=32 bbWeight=4.99 PerfScore 39.91
-G_M65070_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ bne G_M65070_IG07
+ ;; size=12 bbWeight=4.99 PerfScore 9.98
+G_M65070_IG05: ; bbWeight=4.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- mov w0, wzr
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M65070_IG06: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
-G_M65070_IG07: ; bbWeight=4.99, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, #1
;; size=4 bbWeight=4.99 PerfScore 2.49
-G_M65070_IG08: ; bbWeight=4.99, epilog, nogc, extend
+G_M65070_IG06: ; bbWeight=4.99, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=4.99 PerfScore 9.98
-G_M65070_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+G_M65070_IG07: ; bbWeight=4.99, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x0]
+ ldr x0, [x0, #0x08]
+ cbnz x0, G_M65070_IG03
+ ;; size=8 bbWeight=4.99 PerfScore 19.95
+G_M65070_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ mov w0, wzr
+ ;; size=4 bbWeight=1 PerfScore 0.50
+G_M65070_IG09: ; bbWeight=1, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=1 PerfScore 2.00
+G_M65070_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x0]
mov w1, wzr
- b G_M65070_IG04
- ;; size=8 bbWeight=0 PerfScore 0.00
+ mov w2, #0xD1FFAB1E
+ cmp w1, w2
+ bne G_M65070_IG04
+ b G_M65070_IG05
+ ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 100, prolog size 8, PerfScore 99.78, instruction count 25, allocated bytes for code 100 (MethodHash=f34b01d1) for method Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:IsInDocumentationComment(Microsoft.CodeAnalysis.SyntaxNode):ubyte (Tier1)
+; Total bytes of code 112, prolog size 8, PerfScore 99.78, instruction count 28, allocated bytes for code 112 (MethodHash=f34b01d1) for method Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:IsInDocumentationComment(Microsoft.CodeAnalysis.SyntaxNode):ubyte (Tier1)
; ============================================================
Unwind Info:
@@ -79,7 +86,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
coreclr_tests.run.windows.arm64.checked.mch
-4 (-5.88%) : 253450.dasm - System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
@@ -5,7 +5,7 @@
; optimized using Dynamic PGO
; fp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 34
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 34
; 2 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
@@ -27,33 +27,32 @@ G_M57887_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
ldr x0, [x0, #0x18]
mov x2, x0
; gcrRegs +[x2]
- cbz x2, G_M57887_IG04
+ cbz x2, G_M57887_IG05
tst w1, #255
- beq G_M57887_IG06
+ beq G_M57887_IG04
;; size=20 bbWeight=1 PerfScore 6.00
G_M57887_IG03: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x2]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-G_M57887_IG04: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0]
- mov x0, xzr
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M57887_IG05: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
-G_M57887_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x0 x2]
+G_M57887_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x2]
ldr w1, [x2, #0x5C]
and w1, w1, #7
cmp w1, #6
beq G_M57887_IG03
- b G_M57887_IG04
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M57887_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x2]
+ mov x0, xzr
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M57887_IG06: ; bbWeight=0, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 68, prolog size 8, PerfScore 12.00, instruction count 17, allocated bytes for code 68 (MethodHash=f3d51de0) for method System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
+; Total bytes of code 64, prolog size 8, PerfScore 9.50, instruction count 16, allocated bytes for code 64 (MethodHash=f3d51de0) for method System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
; ============================================================
Unwind Info:
@@ -64,7 +63,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ Function Length : 16 (0x00010) Actual length = 64 (0x000040)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-5.88%) : 253519.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
@@ -5,7 +5,7 @@
; optimized using Dynamic PGO
; fp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 4
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 4
; 2 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
@@ -27,33 +27,32 @@ G_M52491_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
ldr x0, [x0, #0x20]
mov x2, x0
; gcrRegs +[x2]
- cbz x2, G_M52491_IG04
+ cbz x2, G_M52491_IG05
tst w1, #255
- beq G_M52491_IG06
+ beq G_M52491_IG04
;; size=20 bbWeight=1 PerfScore 6.00
G_M52491_IG03: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x2]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-G_M52491_IG04: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0]
- mov x0, xzr
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M52491_IG05: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
-G_M52491_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x0 x2]
+G_M52491_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x2]
ldr w1, [x2, #0x5C]
and w1, w1, #7
cmp w1, #6
beq G_M52491_IG03
- b G_M52491_IG04
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M52491_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x2]
+ mov x0, xzr
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M52491_IG06: ; bbWeight=0, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 68, prolog size 8, PerfScore 12.00, instruction count 17, allocated bytes for code 68 (MethodHash=df3632f4) for method System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
+; Total bytes of code 64, prolog size 8, PerfScore 9.50, instruction count 16, allocated bytes for code 64 (MethodHash=df3632f4) for method System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
; ============================================================
Unwind Info:
@@ -64,7 +63,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ Function Length : 16 (0x00010) Actual length = 64 (0x000040)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-5.56%) : 274631.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature):System.Reflection.ParameterInfo
@@ -5,18 +5,18 @@
; optimized using Dynamic PGO
; fp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 2
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 2
; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 6, 5.50) ref -> x19 class-hnd single-def <System.IRuntimeMethodInfo>
+; V00 arg0 [V00,T00] ( 6, 5.12) ref -> x19 class-hnd single-def <System.IRuntimeMethodInfo>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Reflection.MemberInfo>
; V02 arg2 [V02,T03] ( 3, 3 ) ref -> x21 class-hnd single-def <System.Signature>
; V03 loc0 [V03 ] ( 1, 1 ) ref -> [fp+0x10] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Reflection.ParameterInfo>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T01] ( 3, 5 ) ref -> x0 class-hnd "spilling QMark2" <<unknown class>>
-; V06 tmp2 [V06,T06] ( 2, 1 ) int -> x0
-; V07 tmp3 [V07,T04] ( 3, 4.50) ref -> x0 class-hnd "spilling QMark2" <<unknown class>>
+; V06 tmp2 [V06,T06] ( 2, 0.75) int -> x0
+; V07 tmp3 [V07,T04] ( 3, 3.50) ref -> x0 class-hnd "spilling QMark2" <<unknown class>>
;* V08 tmp4 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V09 tmp5 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V10 cse0 [V10,T05] ( 3, 3 ) ref -> x1 "CSE - aggressive"
@@ -39,51 +39,38 @@ G_M25265_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M25265_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
mov x0, x19
; gcrRegs +[x0]
- cbnz x0, G_M25265_IG08
+ cbz x0, G_M25265_IG04
;; size=8 bbWeight=1 PerfScore 1.50
-G_M25265_IG03: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M25265_IG03: ; bbWeight=0.50, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x0]
; gcrRegs -[x0]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ cmp x0, x1
+ beq G_M25265_IG08
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M25265_IG04: ; bbWeight=0.75, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
mov x0, x19
; gcrRegs +[x0]
- cbnz x0, G_M25265_IG06
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M25265_IG04: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+ cbz x0, G_M25265_IG06
+ ;; size=8 bbWeight=0.75 PerfScore 1.12
+G_M25265_IG05: ; bbWeight=0.25, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x0]
; gcrRegs -[x0]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ cmp x0, x1
+ bne G_M25265_IG07
+ ;; size=24 bbWeight=0.25 PerfScore 1.50
+G_M25265_IG06: ; bbWeight=0.38, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
cmp x19, #0
cset x0, ne
tst w0, #255
- bne G_M25265_IG11
- ;; size=16 bbWeight=0.50 PerfScore 1.25
-G_M25265_IG05: ; bbWeight=0.44, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
- b G_M25265_IG10
- ;; size=4 bbWeight=0.44 PerfScore 0.44
-G_M25265_IG06: ; bbWeight=0.25, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0]
- ldr x0, [x0]
- ; gcrRegs -[x0]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- cmp x0, x1
- beq G_M25265_IG04
- ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M25265_IG07: ; bbWeight=0.12, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
- b G_M25265_IG10
- ;; size=4 bbWeight=0.12 PerfScore 0.12
-G_M25265_IG08: ; bbWeight=0.50, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0]
- ldr x0, [x0]
- ; gcrRegs -[x0]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- cmp x0, x1
- bne G_M25265_IG03
- ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M25265_IG09: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
- b G_M25265_IG11
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M25265_IG10: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+ bne G_M25265_IG08
+ ;; size=16 bbWeight=0.38 PerfScore 0.94
+G_M25265_IG07: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
movz x1, #8
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -96,7 +83,7 @@ G_M25265_IG10: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
blr x2
; gcrRegs -[x0]
;; size=36 bbWeight=1 PerfScore 7.50
-G_M25265_IG11: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M25265_IG08: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
add x3, fp, #16 // [V03 loc0]
mov x0, x19
; gcrRegs +[x0]
@@ -112,14 +99,14 @@ G_M25265_IG11: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
blr x5
; gcrRegs -[x1-x2 x19-x21]
;; size=40 bbWeight=1 PerfScore 8.00
-G_M25265_IG12: ; bbWeight=1, epilog, nogc, extend
+G_M25265_IG09: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 216, prolog size 20, PerfScore 36.81, instruction count 54, allocated bytes for code 216 (MethodHash=500f9d4e) for method System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature):System.Reflection.ParameterInfo[] (Tier1)
+; Total bytes of code 204, prolog size 20, PerfScore 34.56, instruction count 51, allocated bytes for code 204 (MethodHash=500f9d4e) for method System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature):System.Reflection.ParameterInfo[] (Tier1)
; ============================================================
Unwind Info:
@@ -130,7 +117,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 54 (0x00036) Actual length = 216 (0x0000d8)
+ Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+24 (+10.91%) : 312076.dasm - System.MemoryExtensions:Trim(System.ReadOnlySpan1[ushort]):System.ReadOnlySpan1ushort
@@ -11,9 +11,9 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T04] ( 2, 4 ) int -> x0 "Span.get_Item index"
-; V03 tmp2 [V03,T05] ( 2, 2 ) ubyte -> x0 "Inline return value spill temp"
-; V04 tmp3 [V04,T00] ( 4, 8 ) ushort -> x0 "Inlining Arg"
+; V02 tmp1 [V02,T04] ( 4, 4 ) int -> x21 "Span.get_Item index"
+; V03 tmp2 [V03,T05] ( 2, 0 ) ubyte -> x0 "Inline return value spill temp"
+; V04 tmp3 [V04,T03] ( 4, 6 ) ushort -> x0 "Inlining Arg"
;* V05 tmp4 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V06 tmp5 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V07 tmp6 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -21,8 +21,8 @@
;* V09 tmp8 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V10 tmp9 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V11 tmp10 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V12 tmp11 [V12,T06] ( 2, 2 ) ubyte -> x0 "Inline return value spill temp"
-; V13 tmp12 [V13,T01] ( 4, 8 ) ushort -> x0 "Inlining Arg"
+; V12 tmp11 [V12,T06] ( 2, 0 ) ubyte -> x0 "Inline return value spill temp"
+; V13 tmp12 [V13,T01] ( 6, 6 ) ushort -> x0 "Inlining Arg"
;* V14 tmp13 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V15 tmp14 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V16 tmp15 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -30,8 +30,8 @@
;* V18 tmp17 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V19 tmp18 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V20 tmp19 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V21 tmp20 [V21,T02] ( 5, 4 ) byref -> x19 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V22 tmp21 [V22,T03] ( 5, 4 ) int -> x20 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V21 tmp20 [V21,T00] ( 6, 4 ) byref -> x19 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V22 tmp21 [V22,T02] ( 6, 4 ) int -> x20 single-def "field V00._length (fldOffset=0x8)" P-INDEP
;* V23 tmp22 [V23 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP
;* V24 tmp23 [V24 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
;* V25 tmp24 [V25 ] ( 0, 0 ) byref -> zero-ref single-def "field V06._reference (fldOffset=0x0)" P-INDEP
@@ -56,70 +56,54 @@
;* V44 tmp43 [V44 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP
;* V45 tmp44 [V45 ] ( 0, 0 ) byref -> zero-ref single-def "field V20._reference (fldOffset=0x0)" P-INDEP
;* V46 tmp45 [V46 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
-; V47 tmp46 [V47,T07] ( 2, 0 ) struct (16) [fp+0x10] do-not-enreg[SR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <System.ReadOnlySpan`1[ushort]>
+; V47 tmp46 [V47,T07] ( 2, 0 ) struct (16) [fp+0x18] do-not-enreg[SR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <System.ReadOnlySpan`1[ushort]>
;
-; Lcl frame size = 16
+; Lcl frame size = 24
-G_M37241_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20]
+G_M37241_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ stp fp, lr, [sp, #-0x40]!
+ stp x19, x20, [sp, #0x28]
+ str x21, [sp, #0x38]
mov fp, sp
- str xzr, [fp, #0x10] // [V47 tmp46]
+ str xzr, [fp, #0x18] // [V47 tmp46]
mov x19, x0
; byrRegs +[x19]
mov w20, w1
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=28 bbWeight=1 PerfScore 5.50
G_M37241_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
- cbz w20, G_M37241_IG06
+ cbz w20, G_M37241_IG04
ldrh w0, [x19]
cmp w0, #0xD1FFAB1E
- blo G_M37241_IG03
- movz x1, #0xD1FFAB1E // code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
+ bhs G_M37241_IG08
+ movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- blr x1
- cbnz w0, G_M37241_IG08
- b G_M37241_IG04
- ;; size=44 bbWeight=1 PerfScore 13.00
+ ldrb w0, [x1, w0, UXTW #2]
+ tbnz w0, #7, G_M37241_IG06
+ sub w21, w20, #1
+ ldrh w0, [x19, w21, UXTW #2]
+ cmp w0, #0xD1FFAB1E
+ bhs G_M37241_IG09
+ ;; size=52 bbWeight=1 PerfScore 16.00
G_M37241_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldrb w0, [x1, w0, UXTW #2]
- tbnz w0, #7, G_M37241_IG08
+ tbnz w0, #7, G_M37241_IG06
;; size=20 bbWeight=1 PerfScore 5.50
-G_M37241_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
- sub w0, w20, #1
- ldrh w0, [x19, w0, UXTW #2]
- cmp w0, #0xD1FFAB1E
- blo G_M37241_IG05
- movz x1, #0xD1FFAB1E // code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- blr x1
- cbnz w0, G_M37241_IG08
- b G_M37241_IG06
- ;; size=44 bbWeight=1 PerfScore 12.50
-G_M37241_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldrb w0, [x1, w0, UXTW #2]
- tbnz w0, #7, G_M37241_IG08
- ;; size=20 bbWeight=1 PerfScore 5.50
-G_M37241_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M37241_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
mov x0, x19
; byrRegs +[x0]
mov x1, x20
;; size=8 bbWeight=1 PerfScore 1.00
-G_M37241_IG07: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x30
+G_M37241_IG05: ; bbWeight=1, epilog, nogc, extend
+ ldr x21, [sp, #0x38]
+ ldp x19, x20, [sp, #0x28]
+ ldp fp, lr, [sp], #0x40
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M37241_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M37241_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref
; byrRegs -[x0]
mov x0, x19
; byrRegs +[x0]
@@ -130,16 +114,39 @@ G_M37241_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
ldr x2, [x2]
blr x2
; byrRegs -[x19]
- stp x0, x1, [fp, #0x10] // [V47 tmp46], [V47 tmp46+0x08]
- ldp x0, x1, [fp, #0x10] // [V47 tmp46], [V47 tmp46+0x08]
+ stp x0, x1, [fp, #0x18] // [V47 tmp46], [V47 tmp46+0x08]
+ ldp x0, x1, [fp, #0x18] // [V47 tmp46], [V47 tmp46+0x08]
;; size=36 bbWeight=0 PerfScore 0.00
-G_M37241_IG09: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x30
+G_M37241_IG07: ; bbWeight=0, epilog, nogc, extend
+ ldr x21, [sp, #0x38]
+ ldp x19, x20, [sp, #0x28]
+ ldp fp, lr, [sp], #0x40
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M37241_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref, isz
+ ; byrRegs -[x0] +[x19]
+ movz x1, #0xD1FFAB1E // code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ ldr x1, [x1]
+ blr x1
+ cbnz w0, G_M37241_IG06
+ sub w21, w20, #1
+ ldrh w0, [x19, w21, UXTW #2]
+ cmp w0, #0xD1FFAB1E
+ blo G_M37241_IG03
+ ;; size=40 bbWeight=0 PerfScore 0.00
+G_M37241_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+ movz x1, #0xD1FFAB1E // code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ ldr x1, [x1]
+ blr x1
+ cbnz w0, G_M37241_IG06
+ b G_M37241_IG04
+ ;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 220, prolog size 16, PerfScore 45.00, instruction count 55, allocated bytes for code 220 (MethodHash=76ed6e86) for method System.MemoryExtensions:Trim(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Tier1)
+; Total bytes of code 244, prolog size 20, PerfScore 33.00, instruction count 61, allocated bytes for code 244 (MethodHash=76ed6e86) for method System.MemoryExtensions:Trim(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Tier1)
; ============================================================
Unwind Info:
@@ -150,7 +157,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 55 (0x00037) Actual length = 220 (0x0000dc)
+ Function Length : 61 (0x0003d) Actual length = 244 (0x0000f4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -161,10 +168,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
- E4 end
- E4 end
+ D0 87 save_reg X#2 Z#7 (0x07); str x21, [sp, #56]
+ C8 05 save_regp X#0 Z#5 (0x05); stp x19, x20, [sp, #40]
+ 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
E4 end
E4 end
+12 (+12.00%) : 387109.dasm - Internal.TypeSystem.TypeSystemContext+SignatureVariableHashtable:CompareKeyToValue(uint,Internal.TypeSystem.SignatureVariable):ubyte:this (Tier1)
@@ -11,59 +11,63 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Internal.TypeSystem.TypeSystemContext+SignatureVariableHashtable>
; V01 arg1 [V01,T01] ( 3, 3 ) int -> x20 single-def
-; V02 arg2 [V02,T00] ( 6, 5 ) ref -> x19 class-hnd single-def <Internal.TypeSystem.SignatureVariable>
+; V02 arg2 [V02,T00] ( 7, 4.78) ref -> x19 class-hnd single-def <Internal.TypeSystem.SignatureVariable>
;* 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,T04] ( 3, 2 ) int -> x0
-; V06 tmp2 [V06,T03] ( 2, 2 ) int -> x0 "guarded devirt return temp"
+; V05 tmp1 [V05,T02] ( 3, 2.34) int -> x21
+; V06 tmp2 [V06,T03] ( 2, 0.44) int -> x0 "guarded devirt return temp"
;* V07 tmp3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.SignatureTypeVariable>
-; V08 cse0 [V08,T02] ( 3, 3 ) long -> x1 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M7735_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x30]!
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
mov fp, sp
mov w20, w1
mov x19, x2
; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=24 bbWeight=1 PerfScore 4.50
G_M7735_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x19]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- cmp x1, x0
- beq G_M7735_IG03
+ ldr x0, [x19]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ cmp x0, x1
+ bne G_M7735_IG04
+ ;; size=24 bbWeight=1 PerfScore 6.00
+G_M7735_IG03: ; bbWeight=0.78, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ldr w21, [x19, #0x24]
+ b G_M7735_IG06
+ ;; size=8 bbWeight=0.78 PerfScore 3.12
+G_M7735_IG04: ; bbWeight=0.22, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x0, x19
; gcrRegs +[x0]
+ ldr x1, [x19]
ldr x1, [x1, #0x60]
ldr x1, [x1, #0x30]
blr x1
; gcrRegs -[x0]
- cbnz w0, G_M7735_IG04
- ;; size=44 bbWeight=1 PerfScore 14.50
-G_M7735_IG03: ; bbWeight=0.44, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ cbz w0, G_M7735_IG03
+ ;; size=24 bbWeight=0.22 PerfScore 2.53
+G_M7735_IG05: ; bbWeight=0.56, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr w0, [x19, #0x24]
- b G_M7735_IG05
- ;; size=8 bbWeight=0.44 PerfScore 1.77
-G_M7735_IG04: ; bbWeight=0.56, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ldr w0, [x19, #0x24]
- orr w0, w0, #0xD1FFAB1E
+ orr w21, w0, #0xD1FFAB1E
;; size=8 bbWeight=0.56 PerfScore 1.95
-G_M7735_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M7735_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
- cmp w20, w0
+ cmp w20, w21
cset x0, eq
;; size=8 bbWeight=1 PerfScore 1.00
-G_M7735_IG06: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+G_M7735_IG07: ; bbWeight=1, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
+ ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 100, prolog size 12, PerfScore 25.72, instruction count 25, allocated bytes for code 100 (MethodHash=0d53e1c8) for method Internal.TypeSystem.TypeSystemContext+SignatureVariableHashtable:CompareKeyToValue(uint,Internal.TypeSystem.SignatureVariable):ubyte:this (Tier1)
+; Total bytes of code 112, prolog size 16, PerfScore 24.10, instruction count 28, allocated bytes for code 112 (MethodHash=0d53e1c8) for method Internal.TypeSystem.TypeSystemContext+SignatureVariableHashtable:CompareKeyToValue(uint,Internal.TypeSystem.SignatureVariable):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -74,7 +78,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -82,10 +86,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
+12 (+12.00%) : 391528.dasm - Internal.TypeSystem.TypeSystemContext+SignatureVariableHashtable:CompareKeyToValue(uint,Internal.TypeSystem.SignatureVariable):ubyte:this (Tier1)
@@ -11,59 +11,64 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Internal.TypeSystem.TypeSystemContext+SignatureVariableHashtable>
; V01 arg1 [V01,T01] ( 3, 3 ) int -> x20 single-def
-; V02 arg2 [V02,T00] ( 6, 5 ) ref -> x19 class-hnd single-def <Internal.TypeSystem.SignatureVariable>
+; V02 arg2 [V02,T00] ( 7, 4.82) ref -> x19 class-hnd single-def <Internal.TypeSystem.SignatureVariable>
;* 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,T04] ( 3, 2 ) int -> x0
-; V06 tmp2 [V06,T03] ( 2, 2 ) int -> x0 "guarded devirt return temp"
+; V05 tmp1 [V05,T02] ( 3, 2 ) int -> x21
+; V06 tmp2 [V06,T03] ( 2, 0.82) int -> x0 "guarded devirt return temp"
;* V07 tmp3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.SignatureMethodVariable>
-; V08 cse0 [V08,T02] ( 3, 3 ) long -> x1 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M7735_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x30]!
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
mov fp, sp
mov w20, w1
mov x19, x2
; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=24 bbWeight=1 PerfScore 4.50
G_M7735_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x19]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- cmp x1, x0
- beq G_M7735_IG04
+ ldr x0, [x19]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ cmp x0, x1
+ bne G_M7735_IG06
+ ;; size=24 bbWeight=1 PerfScore 6.00
+G_M7735_IG03: ; bbWeight=0.61, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ldr w0, [x19, #0x24]
+ orr w21, w0, #0xD1FFAB1E
+ ;; size=8 bbWeight=0.61 PerfScore 2.15
+G_M7735_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19]
+ cmp w20, w21
+ cset x0, eq
+ ;; size=8 bbWeight=1 PerfScore 1.00
+G_M7735_IG05: ; bbWeight=1, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
+ ret lr
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M7735_IG06: ; bbWeight=0.41, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x19]
mov x0, x19
; gcrRegs +[x0]
+ ldr x1, [x19]
ldr x1, [x1, #0x60]
ldr x1, [x1, #0x30]
blr x1
; gcrRegs -[x0]
- cbnz w0, G_M7735_IG04
- ;; size=44 bbWeight=1 PerfScore 14.50
-G_M7735_IG03: ; bbWeight=0.39, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ldr w0, [x19, #0x24]
- b G_M7735_IG05
+ cbnz w0, G_M7735_IG03
+ ;; size=24 bbWeight=0.41 PerfScore 4.71
+G_M7735_IG07: ; bbWeight=0.39, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ldr w21, [x19, #0x24]
+ b G_M7735_IG04
;; size=8 bbWeight=0.39 PerfScore 1.54
-G_M7735_IG04: ; bbWeight=0.61, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ldr w0, [x19, #0x24]
- orr w0, w0, #0xD1FFAB1E
- ;; size=8 bbWeight=0.61 PerfScore 2.15
-G_M7735_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- cmp w20, w0
- cset x0, eq
- ;; size=8 bbWeight=1 PerfScore 1.00
-G_M7735_IG06: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
-; Total bytes of code 100, prolog size 12, PerfScore 25.69, instruction count 25, allocated bytes for code 100 (MethodHash=0d53e1c8) for method Internal.TypeSystem.TypeSystemContext+SignatureVariableHashtable:CompareKeyToValue(uint,Internal.TypeSystem.SignatureVariable):ubyte:this (Tier1)
+; Total bytes of code 112, prolog size 16, PerfScore 24.91, instruction count 28, allocated bytes for code 112 (MethodHash=0d53e1c8) for method Internal.TypeSystem.TypeSystemContext+SignatureVariableHashtable:CompareKeyToValue(uint,Internal.TypeSystem.SignatureVariable):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -74,7 +79,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -82,10 +87,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
libraries.pmi.windows.arm64.checked.mch
-16 (-5.19%) : 3149.dasm - Microsoft.Build.Execution.BuildParameters:Initialize(Microsoft.Build.Collections.PropertyDictionary`1[Microsoft.Build.Execution.ProjectPropertyInstance],Microsoft.Build.Evaluation.ProjectRootElementCacheBase,Microsoft.Build.Evaluation.ToolsetProvider):this (FullOpts)
@@ -89,11 +89,13 @@ G_M19340_IG03: ; bbWeight=0.25, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
cmp w1, #1
bne G_M19340_IG06
;; size=12 bbWeight=0.25 PerfScore 1.12
-G_M19340_IG04: ; bbWeight=0.12, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
- b G_M19340_IG13
- ;; size=4 bbWeight=0.12 PerfScore 0.12
-G_M19340_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M19340_IG04: ; bbWeight=0.12, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+ ldrh w0, [x0, #0x0C]
; gcrRegs -[x0]
+ cmp w0, #49
+ bne G_M19340_IG06
+ ;; size=12 bbWeight=0.12 PerfScore 0.56
+G_M19340_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
strb wzr, [x19, #0xB8]
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M19340_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
@@ -113,11 +115,13 @@ G_M19340_IG07: ; bbWeight=0.25, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
cmp w1, #1
bne G_M19340_IG10
;; size=12 bbWeight=0.25 PerfScore 1.12
-G_M19340_IG08: ; bbWeight=0.12, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
- b G_M19340_IG12
- ;; size=4 bbWeight=0.12 PerfScore 0.12
-G_M19340_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M19340_IG08: ; bbWeight=0.12, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+ ldrh w0, [x0, #0x0C]
; gcrRegs -[x0]
+ cmp w0, #49
+ bne G_M19340_IG10
+ ;; size=12 bbWeight=0.12 PerfScore 0.56
+G_M19340_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov w0, #1
strb w0, [x19, #0xC3]
;; size=8 bbWeight=0.50 PerfScore 0.75
@@ -143,24 +147,8 @@ G_M19340_IG11: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=1 PerfScore 4.00
-G_M19340_IG12: ; bbWeight=0.12, gcVars=0000000000000000 {}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x0 x19]
- ldrh w0, [x0, #0x0C]
- ; gcrRegs -[x0]
- cmp w0, #49
- bne G_M19340_IG10
- b G_M19340_IG09
- ;; size=16 bbWeight=0.12 PerfScore 0.69
-G_M19340_IG13: ; bbWeight=0.12, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0]
- ldrh w0, [x0, #0x0C]
- ; gcrRegs -[x0]
- cmp w0, #49
- bne G_M19340_IG06
- b G_M19340_IG05
- ;; size=16 bbWeight=0.12 PerfScore 0.69
-; Total bytes of code 308, prolog size 16, PerfScore 53.62, instruction count 77, allocated bytes for code 308 (MethodHash=13f0b473) for method Microsoft.Build.Execution.BuildParameters:Initialize(Microsoft.Build.Collections.PropertyDictionary`1[Microsoft.Build.Execution.ProjectPropertyInstance],Microsoft.Build.Evaluation.ProjectRootElementCacheBase,Microsoft.Build.Evaluation.ToolsetProvider):this (FullOpts)
+; Total bytes of code 292, prolog size 16, PerfScore 53.12, instruction count 73, allocated bytes for code 292 (MethodHash=13f0b473) for method Microsoft.Build.Execution.BuildParameters:Initialize(Microsoft.Build.Collections.PropertyDictionary`1[Microsoft.Build.Execution.ProjectPropertyInstance],Microsoft.Build.Evaluation.ProjectRootElementCacheBase,Microsoft.Build.Evaluation.ToolsetProvider):this (FullOpts)
; ============================================================
Unwind Info:
@@ -171,7 +159,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 77 (0x0004d) Actual length = 308 (0x000134)
+ Function Length : 73 (0x00049) Actual length = 292 (0x000124)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-2.63%) : 260569.dasm - System.Data.OleDb.OleDbConnection:CreateCommand():System.Data.OleDb.OleDbCommand:this (FullOpts)
@@ -43,10 +43,14 @@ G_M50965_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcrRegs -[x0]
ldr x0, [x20, #0x18]
; gcrRegs +[x0]
- cbnz x0, G_M50965_IG06
+ cbz x0, G_M50965_IG04
;; size=52 bbWeight=1 PerfScore 11.50
-G_M50965_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M50965_IG03: ; bbWeight=0.25, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldr w0, [x0, #0x08]
; gcrRegs -[x0]
+ cbz w0, G_M50965_IG05
+ ;; size=8 bbWeight=0.25 PerfScore 1.00
+G_M50965_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
ldr w0, [x20, #0x60]
add w0, w0, #1
str w0, [x20, #0x60]
@@ -55,7 +59,7 @@ G_M50965_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
movk x0, #0xD1FFAB1E LSL #32
str x0, [x20, #0x18]
;; size=28 bbWeight=0.50 PerfScore 3.50
-G_M50965_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M50965_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov x0, x20
; gcrRegs +[x0]
mov x1, x19
@@ -69,20 +73,13 @@ G_M50965_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
mov x0, x20
; gcrRegs +[x0]
;; size=32 bbWeight=1 PerfScore 7.00
-G_M50965_IG05: ; bbWeight=1, epilog, nogc, extend
+G_M50965_IG06: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 3.00
-G_M50965_IG06: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x19]
- ldr w0, [x0, #0x08]
- ; gcrRegs -[x0]
- cbz w0, G_M50965_IG04
- b G_M50965_IG03
- ;; size=12 bbWeight=0.25 PerfScore 1.25
-; Total bytes of code 152, prolog size 12, PerfScore 29.25, instruction count 38, allocated bytes for code 152 (MethodHash=d33838ea) for method System.Data.OleDb.OleDbConnection:CreateCommand():System.Data.OleDb.OleDbCommand:this (FullOpts)
+; Total bytes of code 148, prolog size 12, PerfScore 29.00, instruction count 37, allocated bytes for code 148 (MethodHash=d33838ea) for method System.Data.OleDb.OleDbConnection:CreateCommand():System.Data.OleDb.OleDbCommand:this (FullOpts)
; ============================================================
Unwind Info:
@@ -93,7 +90,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 38 (0x00026) Actual length = 152 (0x000098)
+ Function Length : 37 (0x00025) Actual length = 148 (0x000094)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-2.42%) : 240826.dasm - System.CommandLine.Parsing.ArgumentResult:ToString():System.String:this (FullOpts)
@@ -13,7 +13,7 @@
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T06] ( 2, 4 ) ref -> x2 class-hnd single-def "dup spill" <<unknown class>>
;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <System.Collections.Generic.IReadOnlyList`1[System.CommandLine.Parsing.CliToken]>
-; V05 tmp3 [V05,T18] ( 2, 2 ) byref -> x19 single-def
+; V05 tmp3 [V05,T19] ( 2, 2 ) byref -> x22 single-def
;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref single-def
;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref single-def
; V08 tmp6 [V08,T09] ( 4, 3.50) ref -> x2
@@ -22,27 +22,27 @@
; V11 tmp9 [V11,T00] ( 4, 8 ) int -> x0 "Inlining Arg"
;* V12 tmp10 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V13 tmp11 [V13,T03] ( 3, 6 ) int -> x21 "Inlining Arg"
-; V14 tmp12 [V14,T14] ( 2, 3.00) byref -> x20 single-def "Inlining Arg"
+; V14 tmp12 [V14,T15] ( 2, 3.00) byref -> x20 single-def "Inlining Arg"
;* V15 tmp13 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V16 tmp14 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V17 tmp15 [V17,T21] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V17 tmp15 [V17,T22] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V18 tmp16 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V19 tmp17 [V19 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V20 tmp18 [V20,T19] ( 2, 1.99) byref -> x0 single-def "Inlining Arg"
+; V20 tmp18 [V20,T20] ( 2, 1.99) byref -> x0 single-def "Inlining Arg"
;* V21 tmp19 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.CommandLine.CliArgument>
;* V22 tmp20 [V22 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V23 tmp21 [V23,T01] ( 4, 8 ) int -> x0 "Inlining Arg"
;* V24 tmp22 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V25 tmp23 [V25,T04] ( 3, 6 ) int -> x22 "Inlining Arg"
-; V26 tmp24 [V26,T15] ( 2, 3.00) byref -> x20 single-def "Inlining Arg"
+; V26 tmp24 [V26,T16] ( 2, 3.00) byref -> x20 single-def "Inlining Arg"
;* V27 tmp25 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V28 tmp26 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V29 tmp27 [V29,T22] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V29 tmp27 [V29,T23] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V30 tmp28 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V31 tmp29 [V31 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V32 tmp30 [V32,T20] ( 2, 1.99) byref -> x0 single-def "Inlining Arg"
-; V33 tmp31 [V33,T17] ( 3, 2 ) ref -> x20 class-hnd "Inline stloc first use temp" <System.Collections.Generic.IReadOnlyList`1[System.CommandLine.Parsing.CliToken]>
-; V34 tmp32 [V34,T11] ( 3, 3 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V32 tmp30 [V32,T21] ( 2, 1.99) byref -> x0 single-def "Inlining Arg"
+; V33 tmp31 [V33,T18] ( 3, 2 ) ref -> x20 class-hnd "Inline stloc first use temp" <System.Collections.Generic.IReadOnlyList`1[System.CommandLine.Parsing.CliToken]>
+; V34 tmp32 [V34,T12] ( 3, 3 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>>
;* V35 tmp33 [V35 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP
;* V36 tmp34 [V36 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
;* V37 tmp35 [V37 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP
@@ -57,11 +57,12 @@
;* V46 tmp44 [V46 ] ( 0, 0 ) int -> zero-ref single-def "field V30._length (fldOffset=0x8)" P-INDEP
; V47 tmp45 [V47,T07] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
; V48 tmp46 [V48,T08] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-;* V49 cse0 [V49,T23] ( 0, 0 ) long -> zero-ref "CSE - moderate"
-; V50 cse1 [V50,T16] ( 5, 2.00) ref -> x21 multi-def "CSE - moderate"
-; V51 cse2 [V51,T12] ( 3, 3 ) int -> x1 "CSE - moderate"
-; V52 cse3 [V52,T10] ( 6, 3 ) ref -> x1 multi-def "CSE - moderate"
-; V53 cse4 [V53,T13] ( 3, 3 ) int -> x1 "CSE - moderate"
+;* V49 cse0 [V49,T24] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
+; V50 cse1 [V50,T17] ( 5, 2.00) ref -> x21 multi-def "CSE - moderate"
+; V51 cse2 [V51,T13] ( 3, 3 ) int -> x1 "CSE - aggressive"
+; V52 cse3 [V52,T10] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
+; V53 cse4 [V53,T14] ( 3, 3 ) int -> x1 "CSE - aggressive"
+; V54 cse5 [V54,T11] ( 4, 3 ) long -> x19 "CSE - aggressive"
;
; Lcl frame size = 48
@@ -217,16 +218,16 @@ G_M9759_IG12: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}
tbz w0, #0, G_M9759_IG20
;; size=20 bbWeight=1 PerfScore 5.50
G_M9759_IG13: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
- movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- ldr x2, [x0]
+ movz x19, #0xD1FFAB1E // data for <unknown class>:<unknown field>
+ movk x19, #0xD1FFAB1E LSL #16
+ movk x19, #0xD1FFAB1E LSL #32
+ ldr x2, [x19]
; gcrRegs +[x2]
- add x19, fp, #24 // [V01 loc0]
- ; byrRegs +[x19]
+ add x22, fp, #24 // [V01 loc0]
+ ; byrRegs +[x22]
cbnz x2, G_M9759_IG15
;; size=24 bbWeight=1 PerfScore 6.00
-G_M9759_IG14: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=80000 {x19}, byref, isz
+G_M9759_IG14: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=400000 {x22}, byref, isz
; gcrRegs -[x2]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -235,10 +236,7 @@ G_M9759_IG14: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=8000
; gcrRegs +[x0]
mov x2, x0
; gcrRegs +[x2]
- movz x14, #0xD1FFAB1E // data for <unknown class>:<unknown field>
- movk x14, #0xD1FFAB1E LSL #16
- movk x14, #0xD1FFAB1E LSL #32
- ldr x15, [x14]
+ ldr x15, [x19, #-0x08]
; gcrRegs +[x15]
cbz x15, G_M9759_IG21
add x14, x2, #8
@@ -250,15 +248,13 @@ G_M9759_IG14: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=8000
movk x14, #0xD1FFAB1E LSL #16
movk x14, #0xD1FFAB1E LSL #32
str x14, [x2, #0x18]
- movz x14, #0xD1FFAB1E // data for <unknown class>:<unknown field>
- movk x14, #0xD1FFAB1E LSL #16
- movk x14, #0xD1FFAB1E LSL #32
+ mov x14, x19
mov x15, x2
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15]
- ;; size=84 bbWeight=0.50 PerfScore 7.75
-G_M9759_IG15: ; bbWeight=1, gcrefRegs=300004 {x2 x20 x21}, byrefRegs=80000 {x19}, byref
+ ;; size=64 bbWeight=0.50 PerfScore 6.50
+G_M9759_IG15: ; bbWeight=1, gcrefRegs=300004 {x2 x20 x21}, byrefRegs=400000 {x22}, byref
mov x1, x20
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -281,7 +277,7 @@ G_M9759_IG15: ; bbWeight=1, gcrefRegs=300004 {x2 x20 x21}, byrefRegs=8000
; gcrRegs -[x1 x21]
mov x1, x0
; gcrRegs +[x1]
- mov x0, x19
+ mov x0, x22
; gcrRegs -[x0]
; byrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method>
@@ -290,7 +286,7 @@ G_M9759_IG15: ; bbWeight=1, gcrefRegs=300004 {x2 x20 x21}, byrefRegs=8000
ldr x2, [x2]
blr x2
; gcrRegs -[x1]
- ; byrRegs -[x0 x19]
+ ; byrRegs -[x0 x22]
add x0, fp, #24 // [V01 loc0]
movz x1, #0xD1FFAB1E // code for <unknown method>
movk x1, #0xD1FFAB1E LSL #16
@@ -366,7 +362,7 @@ G_M9759_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_windows #0
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 828, prolog size 32, PerfScore 133.25, instruction count 207, allocated bytes for code 828 (MethodHash=3f09d9e0) for method System.CommandLine.Parsing.ArgumentResult:ToString():System.String:this (FullOpts)
+; Total bytes of code 808, prolog size 32, PerfScore 132.00, instruction count 202, allocated bytes for code 808 (MethodHash=3f09d9e0) for method System.CommandLine.Parsing.ArgumentResult:ToString():System.String:this (FullOpts)
; ============================================================
Unwind Info:
@@ -377,7 +373,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 207 (0x000cf) Actual length = 828 (0x00033c)
+ Function Length : 202 (0x000ca) Actual length = 808 (0x000328)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+8 (+4.65%) : 281777.dasm - System.Net.SocketAddress:set_Size(int):this (FullOpts)
@@ -33,23 +33,33 @@ G_M2431_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
ldr w20, [x1, #0x08]
cmp w19, w20
- blt G_M2431_IG04
+ bge G_M2431_IG05
;; size=16 bbWeight=1 PerfScore 7.50
-G_M2431_IG03: ; bbWeight=0.06, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M2431_IG03: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1]
+ tbz w19, #31, G_M2431_IG07
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M2431_IG04: ; bbWeight=0.44, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ b G_M2431_IG10
+ ;; size=4 bbWeight=0.44 PerfScore 0.44
+G_M2431_IG05: ; bbWeight=0.06, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x0]
cmp w19, w20
- bgt G_M2431_IG06
+ bgt G_M2431_IG09
;; size=8 bbWeight=0.06 PerfScore 0.10
-G_M2431_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- tbnz w19, #31, G_M2431_IG07
+G_M2431_IG06: ; bbWeight=0.05, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ b G_M2431_IG03
+ ;; size=4 bbWeight=0.05 PerfScore 0.05
+G_M2431_IG07: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
str w19, [x0, #0x10]
- ;; size=8 bbWeight=1 PerfScore 2.00
-G_M2431_IG05: ; bbWeight=1, epilog, nogc, extend
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M2431_IG08: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 3.00
-G_M2431_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M2431_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
@@ -70,7 +80,7 @@ G_M2431_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
; gcrRegs -[x2]
brk_windows #0
;; size=56 bbWeight=0 PerfScore 0.00
-G_M2431_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M2431_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -91,7 +101,7 @@ G_M2431_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_windows #0
;; size=56 bbWeight=0 PerfScore 0.00
-; Total bytes of code 172, prolog size 12, PerfScore 15.60, instruction count 43, allocated bytes for code 172 (MethodHash=f3e5f680) for method System.Net.SocketAddress:set_Size(int):this (FullOpts)
+; Total bytes of code 180, prolog size 12, PerfScore 16.08, instruction count 45, allocated bytes for code 180 (MethodHash=f3e5f680) for method System.Net.SocketAddress:set_Size(int):this (FullOpts)
; ============================================================
Unwind Info:
@@ -102,7 +112,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
+ Function Length : 45 (0x0002d) Actual length = 180 (0x0000b4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+4.82%) : 284197.dasm - System.Net.Sockets.Socket:set_Ttl(short):this (FullOpts)
@@ -17,34 +17,31 @@
; V06 tmp4 [V06,T07] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
; V07 tmp5 [V07,T08] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
; V08 tmp6 [V08,T09] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V09 cse0 [V09,T04] ( 3, 2.50) int -> x20 "CSE - aggressive"
+; V09 cse0 [V09,T04] ( 3, 2.50) int -> x21 "CSE - aggressive"
; V10 cse1 [V10,T03] ( 6, 4 ) int -> x19 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M64601_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x30]!
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=16 bbWeight=1 PerfScore 3.50
G_M64601_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
sxth w19, w1
- tbnz w19, #31, G_M64601_IG10
+ tbnz w19, #31, G_M64601_IG12
sxtw w20, w19
cmp w20, #255
- blt G_M64601_IG04
+ bge G_M64601_IG06
;; size=20 bbWeight=1 PerfScore 3.50
-G_M64601_IG03: ; bbWeight=0.06, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- cmp w20, #255
- bgt G_M64601_IG11
- ;; size=8 bbWeight=0.06 PerfScore 0.10
-G_M64601_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ldr w20, [x0, #0x58]
- cmp w20, #2
- bne G_M64601_IG07
+G_M64601_IG03: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ldr w21, [x0, #0x58]
+ cmp w21, #2
+ bne G_M64601_IG08
;; size=12 bbWeight=1 PerfScore 4.50
-G_M64601_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M64601_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
mov w3, w19
mov w1, wzr
mov w2, #4
@@ -55,15 +52,23 @@ G_M64601_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
blr x4
; gcrRegs -[x0]
;; size=32 bbWeight=0.50 PerfScore 3.50
-G_M64601_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+G_M64601_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M64601_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M64601_IG06: ; bbWeight=0.06, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x0]
- cmp w20, #23
- bne G_M64601_IG09
+ cmp w20, #255
+ bgt G_M64601_IG10
+ ;; size=8 bbWeight=0.06 PerfScore 0.10
+G_M64601_IG07: ; bbWeight=0.05, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ b G_M64601_IG03
+ ;; size=4 bbWeight=0.05 PerfScore 0.05
+G_M64601_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ cmp w21, #23
+ bne G_M64601_IG11
mov w3, w19
mov w1, #41
mov w2, #4
@@ -74,12 +79,33 @@ G_M64601_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
blr x4
; gcrRegs -[x0]
;; size=40 bbWeight=0.50 PerfScore 4.25
-G_M64601_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+G_M64601_IG09: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M64601_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M64601_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, #0xD1FFAB1E
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_STRCNS
+ ; gcrRegs +[x0]
+ mov x2, x0
+ ; gcrRegs +[x2]
+ mov w0, w20
+ ; gcrRegs -[x0]
+ mov w1, #255
+ movz x3, #0xD1FFAB1E // code for System.ArgumentOutOfRangeException:ThrowGreater[int](int,int,System.String)
+ movk x3, #0xD1FFAB1E LSL #16
+ movk x3, #0xD1FFAB1E LSL #32
+ ldr x3, [x3]
+ blr x3
+ ; gcrRegs -[x2]
+ brk_windows #0
+ ;; size=56 bbWeight=0 PerfScore 0.00
+G_M64601_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -108,7 +134,7 @@ G_M64601_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
bl CORINFO_HELP_THROW
; gcrRegs -[x0 x19]
;; size=76 bbWeight=0 PerfScore 0.00
-G_M64601_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M64601_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -127,28 +153,8 @@ G_M64601_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
brk_windows #0
;; size=52 bbWeight=0 PerfScore 0.00
-G_M64601_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov w0, #0xD1FFAB1E
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_STRCNS
- ; gcrRegs +[x0]
- mov x2, x0
- ; gcrRegs +[x2]
- mov w0, w20
- ; gcrRegs -[x0]
- mov w1, #255
- movz x3, #0xD1FFAB1E // code for System.ArgumentOutOfRangeException:ThrowGreater[int](int,int,System.String)
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- blr x3
- ; gcrRegs -[x2]
- brk_windows #0
- ;; size=56 bbWeight=0 PerfScore 0.00
-; Total bytes of code 332, prolog size 12, PerfScore 21.35, instruction count 83, allocated bytes for code 332 (MethodHash=240903a6) for method System.Net.Sockets.Socket:set_Ttl(short):this (FullOpts)
+; Total bytes of code 348, prolog size 16, PerfScore 24.40, instruction count 87, allocated bytes for code 348 (MethodHash=240903a6) for method System.Net.Sockets.Socket:set_Ttl(short):this (FullOpts)
; ============================================================
Unwind Info:
@@ -159,7 +165,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 83 (0x00053) Actual length = 332 (0x00014c)
+ Function Length : 87 (0x00057) Actual length = 348 (0x00015c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -170,10 +176,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
+12 (+7.32%) : 249254.dasm - System.Collections.CaseInsensitiveHashCodeProvider:GetHashCode(System.Object):int:this (FullOpts)
@@ -10,7 +10,7 @@
;
; V00 this [V00,T01] ( 3, 2.50) ref -> x0 this class-hnd single-def <System.Collections.CaseInsensitiveHashCodeProvider>
; V01 arg1 [V01,T00] ( 6, 5 ) ref -> x1 class-hnd single-def <System.Object>
-; V02 loc0 [V02,T04] ( 3, 1.50) ref -> x1 class-hnd exact <System.String>
+; V02 loc0 [V02,T06] ( 3, 1.50) ref -> x1 class-hnd exact <System.String>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String>
; V05 tmp2 [V05,T02] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Globalization.CompareInfo>
@@ -18,8 +18,8 @@
;* V07 tmp4 [V07 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V08 tmp5 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V09 tmp6 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V10 tmp7 [V10,T06] ( 2, 2 ) int -> x1 "Inlining Arg"
-; V11 tmp8 [V11,T05] ( 2, 2 ) byref -> x2 single-def "Inlining Arg"
+; V10 tmp7 [V10,T05] ( 2, 2 ) int -> x1 "Inlining Arg"
+; V11 tmp8 [V11,T04] ( 2, 2 ) byref -> x2 single-def "Inlining Arg"
;* V12 tmp9 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp10 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp11 [V14 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
@@ -32,22 +32,23 @@
; V21 tmp18 [V21,T10] ( 2, 1 ) int -> x1 "field V08._length (fldOffset=0x8)" P-INDEP
;* V22 tmp19 [V22 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP
;* V23 tmp20 [V23 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V24 cse0 [V24,T03] ( 3, 2.50) long -> x2 "CSE - aggressive"
+; V24 cse0 [V24,T03] ( 3, 2.50) long -> x19 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M64002_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M64002_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0-x1]
cbz x1, G_M64002_IG07
- ldr x2, [x1]
- movz x3, #0xD1FFAB1E
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- cmp x2, x3
+ ldr x19, [x1]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ cmp x19, x2
bne G_M64002_IG05
;; size=28 bbWeight=1 PerfScore 7.00
G_M64002_IG03: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
@@ -72,23 +73,25 @@ G_M64002_IG03: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}
; byrRegs -[x1]
;; size=52 bbWeight=0.50 PerfScore 8.50
G_M64002_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M64002_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x1]
mov x0, x1
; gcrRegs +[x0]
- ldr x1, [x2, #0x48]
+ ldr x1, [x19, #0x48]
; gcrRegs -[x1]
ldr x1, [x1, #0x18]
blr x1
; gcrRegs -[x0]
;; size=16 bbWeight=0.50 PerfScore 3.75
G_M64002_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M64002_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
@@ -105,18 +108,18 @@ G_M64002_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_windows #0
;; size=44 bbWeight=0 PerfScore 0.00
-; Total bytes of code 164, prolog size 8, PerfScore 22.75, instruction count 41, allocated bytes for code 164 (MethodHash=067e05fd) for method System.Collections.CaseInsensitiveHashCodeProvider:GetHashCode(System.Object):int:this (FullOpts)
+; Total bytes of code 176, prolog size 12, PerfScore 25.75, instruction count 44, allocated bytes for code 176 (MethodHash=067e05fd) for method System.Collections.CaseInsensitiveHashCodeProvider:GetHashCode(System.Object):int:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -127,7 +130,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
libraries_tests.run.windows.arm64.Release.mch
-40 (-11.11%) : 119481.dasm - System.IO.FileSystemWatcher:Dispose(ubyte):this (Tier1)
@@ -5,7 +5,7 @@
; optimized using Dynamic PGO
; fp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 2
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 2
; 5 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
@@ -16,65 +16,58 @@
; V04 tmp2 [V04,T05] ( 3, 2 ) ubyte -> x2 "Inline return value spill temp"
; V05 tmp3 [V05,T03] ( 3, 4 ) ref -> x2 class-hnd single-def "dup spill" <<unknown class>>
;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V07 tmp5 [V07,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V08 tmp6 [V08,T01] ( 4, 6.50) ref -> x19 class-hnd exact single-def "Inlining Arg" <Microsoft.Win32.SafeHandles.SafeFileHandle>
+;* V07 tmp5 [V07,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V08 tmp6 [V08,T01] ( 4, 6.50) ref -> x2 class-hnd exact single-def "Inlining Arg" <Microsoft.Win32.SafeHandles.SafeFileHandle>
;* V09 tmp7 [V09,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V10 tmp8 [V10 ] ( 0, 0 ) long -> zero-ref ld-addr-op "NewObj constructor temp"
;* V11 tmp9 [V11 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
;* V12 tmp10 [V12 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V13 PSPSym [V13,T08] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym"
-; V14 cse0 [V14,T06] ( 3, 1.88) long -> x20 "CSE - moderate"
+; V13 PSPSym [V13,T07] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym"
+; V14 cse0 [V14,T06] ( 3, 1.88) long -> x3 "CSE - moderate"
;
; Lcl frame size = 32
G_M32011_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x30]
+ stp fp, lr, [sp, #-0x30]!
mov fp, sp
- add x2, sp, #64
+ add x2, sp, #48
str x2, [fp, #0x28] // [V13 PSPSym]
str x0, [fp, #0x18] // [V00 this]
; GC ptr vars +{V00}
str w1, [fp, #0x24] // [V01 arg1]
- ;; size=28 bbWeight=1 PerfScore 6.00
+ ;; size=24 bbWeight=1 PerfScore 5.00
G_M32011_IG02: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x0]
tst w1, #255
- beq G_M32011_IG08
+ beq G_M32011_IG07
strb wzr, [x0, #0x6D]
ldrb w2, [x0, #0x6E]
- cbnz w2, G_M32011_IG04
+ cbnz w2, G_M32011_IG08
ldr x2, [x0, #0x08]
; gcrRegs +[x2]
- cbnz x2, G_M32011_IG07
+ cbnz x2, G_M32011_IG06
mov w2, wzr
; gcrRegs -[x2]
;; size=32 bbWeight=1 PerfScore 11.00
G_M32011_IG03: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- cbnz w2, G_M32011_IG04
- ldr x19, [x0, #0x58]
- ; gcrRegs +[x19]
- cbnz x19, G_M32011_IG09
+ cbnz w2, G_M32011_IG08
+ ldr x2, [x0, #0x58]
+ ; gcrRegs +[x2]
+ cbz x2, G_M32011_IG08
;; size=12 bbWeight=1 PerfScore 5.00
-G_M32011_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- stp xzr, xzr, [x0, #0x28]
- stp xzr, xzr, [x0, #0x38]
- str xzr, [x0, #0x48]
- b G_M32011_IG10
- ;; size=16 bbWeight=1 PerfScore 4.00
-G_M32011_IG05: ; bbWeight=0.62, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x19]
- cmn x20, #1
- beq G_M32011_IG04
- add x2, x19, #24
+G_M32011_IG04: ; bbWeight=0.62, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, isz
+ ldr x3, [x2, #0x10]
+ cbz x3, G_M32011_IG08
+ cmn x3, #1
+ beq G_M32011_IG08
+ add x2, x2, #24
+ ; gcrRegs -[x2]
; byrRegs +[x2]
ldapr w2, [x2]
; byrRegs -[x2]
- tbnz w2, #0, G_M32011_IG04
- ;; size=20 bbWeight=0.62 PerfScore 3.75
-G_M32011_IG06: ; bbWeight=0.33, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
+ tbnz w2, #0, G_M32011_IG08
+ ;; size=28 bbWeight=0.62 PerfScore 6.25
+G_M32011_IG05: ; bbWeight=0.33, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
add x2, x0, #104
; byrRegs +[x2]
mov w3, #1
@@ -92,11 +85,9 @@ G_M32011_IG06: ; bbWeight=0.33, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
ldr x0, [fp, #0x18] // [V00 this]
; gcrRegs +[x0]
str xzr, [x0, #0x58]
- ldr x0, [fp, #0x18] // [V00 this]
- ldrb w1, [fp, #0x24] // [V01 arg1]
- b G_M32011_IG04
- ;; size=60 bbWeight=0.33 PerfScore 7.83
-G_M32011_IG07: ; bbWeight=0, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
+ b G_M32011_IG08
+ ;; size=52 bbWeight=0.33 PerfScore 6.50
+G_M32011_IG06: ; bbWeight=0, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] +[x2]
mov x0, x2
; gcrRegs +[x0]
@@ -111,10 +102,9 @@ G_M32011_IG07: ; bbWeight=0, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byre
sxtw w2, w0
ldr x0, [fp, #0x18] // [V00 this]
; gcrRegs +[x0]
- ldrb w1, [fp, #0x24] // [V01 arg1]
b G_M32011_IG03
- ;; size=40 bbWeight=0 PerfScore 0.00
-G_M32011_IG08: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ;; size=36 bbWeight=0 PerfScore 0.00
+G_M32011_IG07: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
movz x2, #0xD1FFAB1E // code for System.IO.FileSystemWatcher:FinalizeDispose():this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
@@ -124,20 +114,17 @@ G_M32011_IG08: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
; gcr arg pop 0
ldr x0, [fp, #0x18] // [V00 this]
; gcrRegs +[x0]
- ldrb w1, [fp, #0x24] // [V01 arg1]
- b G_M32011_IG10
- ;; size=32 bbWeight=0 PerfScore 0.00
-G_M32011_IG09: ; bbWeight=0.62, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x19]
- ldr x20, [x19, #0x10]
- cbz x20, G_M32011_IG04
- b G_M32011_IG05
- ;; size=12 bbWeight=0.62 PerfScore 3.12
-G_M32011_IG10: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
+ b G_M32011_IG09
+ ;; size=28 bbWeight=0 PerfScore 0.00
+G_M32011_IG08: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ stp xzr, xzr, [x0, #0x28]
+ stp xzr, xzr, [x0, #0x38]
+ str xzr, [x0, #0x48]
+ ;; size=12 bbWeight=1 PerfScore 3.00
+G_M32011_IG09: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
mov w2, #1
strb w2, [x0, #0x6F]
- uxtb w1, w1
+ ldrb w1, [fp, #0x24] // [V01 arg1]
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
@@ -146,19 +133,17 @@ G_M32011_IG10: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
blr x2
; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=32 bbWeight=1 PerfScore 7.50
-G_M32011_IG11: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x30]
- ldp fp, lr, [sp], #0x40
+ ;; size=32 bbWeight=1 PerfScore 9.00
+G_M32011_IG10: ; bbWeight=1, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M32011_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
- stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20]
- add x3, fp, #64
+ ;; size=8 bbWeight=1 PerfScore 2.00
+G_M32011_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ stp fp, lr, [sp, #-0x20]!
+ add x3, fp, #48
str x3, [sp, #0x18]
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M32011_IG13: ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M32011_IG12: ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars +{V00}
mov w1, #1
ldr x0, [fp, #0x18] // [V00 this]
@@ -174,24 +159,23 @@ G_M32011_IG13: ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=000
; gcrRegs -[x0]
; gcr arg pop 0
;; size=36 bbWeight=0 PerfScore 0.00
-G_M32011_IG14: ; bbWeight=0, funclet epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x30
+G_M32011_IG13: ; bbWeight=0, funclet epilog, nogc, extend
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 360, prolog size 28, PerfScore 51.21, instruction count 90, allocated bytes for code 360 (MethodHash=d30e82f4) for method System.IO.FileSystemWatcher:Dispose(ubyte):this (Tier1)
+; Total bytes of code 320, prolog size 24, PerfScore 47.75, instruction count 80, allocated bytes for code 320 (MethodHash=d30e82f4) for method System.IO.FileSystemWatcher:Dispose(ubyte):this (Tier1)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 74 (0x0004a) Actual length = 296 (0x000128)
+ Function Length : 66 (0x00042) Actual length = 264 (0x000108)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -199,10 +183,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 06 save_regp X#0 Z#6 (0x06); stp x19, x20, [sp, #48]
- 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
- E4 end
- E4 end
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
@@ -214,14 +195,15 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 16 (0x00010) Actual length = 64 (0x000040)
+ Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
*************** EH table for System.IO.FileSystemWatcher:Dispose(ubyte):this
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M32011_IG02..G_M32011_IG10) handled by [G_M32011_IG12..END) (fault)
+EH#0: try [G_M32011_IG02..G_M32011_IG09) handled by [G_M32011_IG11..END) (fault)
-24 (-10.91%) : 598054.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (Tier1)
@@ -5,7 +5,7 @@
; optimized using Dynamic PGO
; fp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 70304
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 70304
; 1 inlinees with PGO data; 6 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
@@ -19,7 +19,7 @@
;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]>
;* V09 tmp5 [V09 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V10 tmp6 [V10,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V10 tmp6 [V10,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V11 tmp7 [V11,T08] ( 3, 3 ) ubyte -> x0 "Inline stloc first use temp"
;* V12 tmp8 [V12 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V13 tmp9 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]>
@@ -29,16 +29,16 @@
;* V17 tmp13 [V17 ] ( 0, 0 ) ubyte -> zero-ref "V03.[004..005)"
;* V18 cse0 [V18,T12] ( 0, 0 ) long -> zero-ref hoist "CSE - aggressive"
; V19 cse1 [V19,T07] ( 3, 3 ) ref -> x0 "CSE - aggressive"
-; V20 cse2 [V20,T06] ( 2, 2 ) long -> x22 "CSE - aggressive"
-; V21 rat0 [V21,T04] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
+; V20 cse2 [V20,T06] ( 1, 1 ) long -> x22 "CSE - aggressive"
+;* V21 rat0 [V21,T04] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V22 rat1 [V22,T05] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V23 rat2 [V23,T01] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
-;* V24 rat3 [V24,T11] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V23 rat2 [V23,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+;* V24 rat3 [V24,T10] ( 0, 0 ) long -> zero-ref "runtime lookup"
;* V25 rat4 [V25,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 96
-G_M864_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M864_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x90]!
stp x19, x20, [sp, #0x70]
stp x21, x22, [sp, #0x80]
@@ -52,7 +52,7 @@ G_M864_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n
mov x19, x0
; gcrRegs +[x19]
;; size=44 bbWeight=1 PerfScore 9.00
-G_M864_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M864_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:GetEnumerator():Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1+Enumerator[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:this
@@ -65,16 +65,15 @@ G_M864_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byre
; gcrRegs +[x20]
mov w21, w1
ldr x22, [x19]
- mov x0, x22
+ ;; size=40 bbWeight=1 PerfScore 15.50
+G_M864_IG03: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x40]
- cbz x0, G_M864_IG05
- b G_M864_IG05
- ;; size=64 bbWeight=1 PerfScore 27.00
-G_M864_IG03: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
+ add w21, w21, #1
+ ldr x0, [x20, #0x08]
; gcrRegs +[x0]
+ ldr w8, [x0, #0x10]
+ cmp w21, w8
+ bge G_M864_IG05
add x8, fp, #24 // [V02 loc1]
mov w1, w21
movz x2, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:get_Item(int):Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]:this
@@ -88,35 +87,27 @@ G_M864_IG03: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000
sub w0, w0, #22
cmp w1, #1
ccmp w0, #1, z, hi
- bhi G_M864_IG05
+ bhi G_M864_IG03
mov w0, #1
- ;; size=56 bbWeight=1 PerfScore 12.00
+ ;; size=76 bbWeight=1 PerfScore 20.00
G_M864_IG04: ; bbWeight=1, epilog, nogc, extend
ldp x21, x22, [sp, #0x80]
ldp x19, x20, [sp, #0x70]
ldp fp, lr, [sp], #0x90
ret lr
;; size=16 bbWeight=1 PerfScore 4.00
-G_M864_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
- add w21, w21, #1
- ldr x0, [x20, #0x08]
- ; gcrRegs +[x0]
- ldr w8, [x0, #0x10]
- cmp w21, w8
- blt G_M864_IG03
- ;; size=20 bbWeight=1 PerfScore 8.00
-G_M864_IG06: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0 x20]
+G_M864_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x20]
mov w0, wzr
;; size=4 bbWeight=0 PerfScore 0.00
-G_M864_IG07: ; bbWeight=0, epilog, nogc, extend
+G_M864_IG06: ; bbWeight=0, epilog, nogc, extend
ldp x21, x22, [sp, #0x80]
ldp x19, x20, [sp, #0x70]
ldp fp, lr, [sp], #0x90
ret lr
;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 220, prolog size 40, PerfScore 60.00, instruction count 55, allocated bytes for code 220 (MethodHash=caadfc9f) for method Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (Tier1)
+; Total bytes of code 196, prolog size 40, PerfScore 48.50, instruction count 49, allocated bytes for code 196 (MethodHash=caadfc9f) for method Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -127,7 +118,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 55 (0x00037) Actual length = 220 (0x0000dc)
+ Function Length : 49 (0x00031) Actual length = 196 (0x0000c4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-8 (-10.53%) : 573406.dasm - System.Text.Json.JsonHelpers:SkipWithVerify(byref) (Tier1)
@@ -12,60 +12,57 @@
;* V01 loc0 [V01 ] ( 0, 0 ) ubyte -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "Inline stloc first use temp" <System.Text.Json.BitStack>
-; V04 tmp2 [V04,T02] ( 3, 2.30) int -> x1 "Inline stloc first use temp"
-; V05 tmp3 [V05,T01] ( 3, 3 ) ubyte -> x2 "Inline stloc first use temp"
+; V04 tmp2 [V04,T02] ( 3, 2.30) int -> x2 "Inline stloc first use temp"
+; V05 tmp3 [V05,T01] ( 3, 3 ) ubyte -> x3 "Inline stloc first use temp"
;* V06 tmp4 [V06,T04] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref "field V03._array (fldOffset=0x0)" P-INDEP
;* V08 tmp6 [V08 ] ( 0, 0 ) long -> zero-ref "field V03._allocationFreeContainer (fldOffset=0x8)" P-INDEP
-; V09 tmp7 [V09,T03] ( 3, 2.30) int -> x19 "field V03._currentDepth (fldOffset=0x10)" P-INDEP
+; V09 tmp7 [V09,T03] ( 3, 2.30) int -> x1 "field V03._currentDepth (fldOffset=0x10)" P-INDEP
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M3772_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M3772_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0]
- ldr w19, [x0, #0x58]
- sxtw w1, w19
- ldrb w2, [x0, #0x28]
- cmp w2, #1
- ccmp w2, #3, z, ne
- beq G_M3772_IG05
+ ldr w1, [x0, #0x58]
+ sxtw w2, w1
+ ldrb w3, [x0, #0x28]
+ cmp w3, #1
+ ccmp w3, #3, z, ne
+ bne G_M3772_IG04
;; size=24 bbWeight=1 PerfScore 8.50
-G_M3772_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
+G_M3772_IG03: ; bbWeight=0.30, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
+ sub w2, w1, #1
+ ;; size=4 bbWeight=0.30 PerfScore 0.15
+G_M3772_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
+ mov w1, w2
movz x2, #0xD1FFAB1E // code for System.Text.Json.Utf8JsonReader:TrySkipPartial(int):ubyte:this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
; byrRegs -[x0]
- ;; size=20 bbWeight=1 PerfScore 5.50
-G_M3772_IG04: ; bbWeight=1, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+ ;; size=24 bbWeight=1 PerfScore 6.00
+G_M3772_IG05: ; bbWeight=1, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=1 PerfScore 4.00
-G_M3772_IG05: ; bbWeight=0.30, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref
- ; byrRegs +[x0]
- sub w1, w19, #1
- b G_M3772_IG03
- ;; size=8 bbWeight=0.30 PerfScore 0.45
+ ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 76, prolog size 12, PerfScore 20.95, instruction count 19, allocated bytes for code 76 (MethodHash=ae14f143) for method System.Text.Json.JsonHelpers:SkipWithVerify(byref) (Tier1)
+; Total bytes of code 68, prolog size 8, PerfScore 18.15, instruction count 17, allocated bytes for code 68 (MethodHash=ae14f143) for method System.Text.Json.JsonHelpers:SkipWithVerify(byref) (Tier1)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 17 (0x00011) Actual length = 68 (0x000044)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -73,10 +70,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end
E4 end
+8 (+11.11%) : 395444.dasm - System.Xml.XmlDOMTextWriter:WriteStartElement(System.String,System.String,System.String):this (Tier1)
@@ -10,9 +10,9 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Xml.XmlDOMTextWriter>
-; V01 arg1 [V01,T01] ( 7, 4.48) ref -> x1 class-hnd <System.String>
+; V01 arg1 [V01,T00] ( 8, 13.68) ref -> x1 class-hnd <System.String>
; V02 arg2 [V02,T03] ( 3, 3 ) ref -> x2 class-hnd single-def <System.String>
-; V03 arg3 [V03,T00] ( 5, 4.80) ref -> x3 class-hnd single-def <System.String>
+; V03 arg3 [V03,T01] ( 5, 4.80) ref -> x3 class-hnd single-def <System.String>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V06 tmp2 [V06,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
@@ -25,15 +25,15 @@ G_M42961_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M42961_IG02: ; bbWeight=1, gcrefRegs=000F {x0 x1 x2 x3}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0-x3]
- cbz x3, G_M42961_IG04
+ cbz x3, G_M42961_IG06
;; size=4 bbWeight=1 PerfScore 1.00
G_M42961_IG03: ; bbWeight=0.80, gcrefRegs=000F {x0 x1 x2 x3}, byrefRegs=0000 {}, byref, isz
ldr w4, [x3, #0x08]
- cbnz w4, G_M42961_IG06
+ cbnz w4, G_M42961_IG07
;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M42961_IG04: ; bbWeight=1, gcrefRegs=000F {x0 x1 x2 x3}, byrefRegs=0000 {}, byref, isz
- cbz x1, G_M42961_IG06
- ;; size=4 bbWeight=1 PerfScore 1.00
+G_M42961_IG04: ; bbWeight=10, gcrefRegs=000F {x0 x1 x2 x3}, byrefRegs=0000 {}, byref, isz
+ cbz x1, G_M42961_IG07
+ ;; size=4 bbWeight=10 PerfScore 10.00
G_M42961_IG05: ; bbWeight=0.16, gcrefRegs=000F {x0 x1 x2 x3}, byrefRegs=0000 {}, byref
ldr w4, [x1, #0x08]
movz x5, #8
@@ -41,20 +41,24 @@ G_M42961_IG05: ; bbWeight=0.16, gcrefRegs=000F {x0 x1 x2 x3}, byrefRegs=0
movk x5, #0xD1FFAB1E LSL #32
cmp w4, #0
csel x1, x1, x5, eq
- ;; size=24 bbWeight=0.16 PerfScore 0.88
-G_M42961_IG06: ; bbWeight=1, gcrefRegs=000F {x0 x1 x2 x3}, byrefRegs=0000 {}, byref
+ b G_M42961_IG07
+ ;; size=28 bbWeight=0.16 PerfScore 1.04
+G_M42961_IG06: ; bbWeight=0.20, gcrefRegs=000F {x0 x1 x2 x3}, byrefRegs=0000 {}, byref, isz
+ cbnz x1, G_M42961_IG05
+ ;; size=4 bbWeight=0.20 PerfScore 0.20
+G_M42961_IG07: ; bbWeight=1, gcrefRegs=000F {x0 x1 x2 x3}, byrefRegs=0000 {}, byref
movz x4, #0xD1FFAB1E // code for <unknown method>
movk x4, #0xD1FFAB1E LSL #16
movk x4, #0xD1FFAB1E LSL #32
ldr x4, [x4]
;; size=16 bbWeight=1 PerfScore 4.50
-G_M42961_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M42961_IG08: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
br x4
; gcr arg pop 0
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 72, prolog size 8, PerfScore 14.08, instruction count 18, allocated bytes for code 72 (MethodHash=3259582e) for method System.Xml.XmlDOMTextWriter:WriteStartElement(System.String,System.String,System.String):this (Tier1)
+; Total bytes of code 80, prolog size 8, PerfScore 23.44, instruction count 20, allocated bytes for code 80 (MethodHash=3259582e) for method System.Xml.XmlDOMTextWriter:WriteStartElement(System.String,System.String,System.String):this (Tier1)
; ============================================================
Unwind Info:
@@ -65,7 +69,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 18 (0x00012) Actual length = 72 (0x000048)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+28 (+17.07%) : 599095.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:NoTriviaBetween(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):ubyte (Tier1)
@@ -9,16 +9,15 @@
; 2 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 4, 4 ) ref -> x0 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V01 arg1 [V01,T00] ( 6, 4 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V00 arg0 [V00,T01] ( 5, 3 ) ref -> x0 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V01 arg1 [V01,T00] ( 7, 4 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 2, 2 ) int -> x0 "guarded devirt return temp"
+; V03 tmp1 [V03,T04] ( 2, 0 ) int -> x0 "guarded devirt return temp"
;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V05 tmp3 [V05,T05] ( 4, 2.17) int -> x1 "guarded devirt return temp"
+; V05 tmp3 [V05,T03] ( 4, 2.17) int -> x1 "guarded devirt return temp"
;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+SyntaxTokenWithTrivia>
;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
; V08 tmp6 [V08,T02] ( 3, 3 ) ref -> x0 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
-; V09 cse0 [V09,T04] ( 3, 3 ) long -> x1 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -36,25 +35,21 @@ G_M766_IG02: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, b
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- beq G_M766_IG03
- ldr x1, [x1, #0x58]
- ldr x1, [x1, #0x10]
- blr x1
- ; gcrRegs -[x0]
- cbnz w0, G_M766_IG07
- ;; size=40 bbWeight=1 PerfScore 14.00
-G_M766_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ bne G_M766_IG09
ldr x0, [x19]
+ ; gcrRegs -[x0]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- bne G_M766_IG09
+ bne G_M766_IG10
+ ;; size=48 bbWeight=1 PerfScore 12.00
+G_M766_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, #0x10]
; gcrRegs +[x0]
cbz x0, G_M766_IG06
ldr w1, [x0, #0x08]
- ;; size=36 bbWeight=1 PerfScore 13.00
+ ;; size=12 bbWeight=1 PerfScore 7.00
G_M766_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19]
cmp w1, #0
@@ -77,8 +72,22 @@ G_M766_IG08: ; bbWeight=0, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0 PerfScore 0.00
-G_M766_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x19]
+G_M766_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x0 x19]
+ ldr x1, [x0]
+ ldr x1, [x1, #0x58]
+ ldr x1, [x1, #0x10]
+ blr x1
+ ; gcrRegs -[x0]
+ cbnz w0, G_M766_IG07
+ ldr x0, [x19]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ cmp x0, x1
+ beq G_M766_IG03
+ ;; size=44 bbWeight=0 PerfScore 0.00
+G_M766_IG10: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x19
; gcrRegs +[x0]
ldr x1, [x19]
@@ -90,7 +99,7 @@ G_M766_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x
b G_M766_IG04
;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 164, prolog size 12, PerfScore 35.26, instruction count 41, allocated bytes for code 164 (MethodHash=fc09fd01) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:NoTriviaBetween(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):ubyte (Tier1)
+; Total bytes of code 192, prolog size 12, PerfScore 27.26, instruction count 48, allocated bytes for code 192 (MethodHash=fc09fd01) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:NoTriviaBetween(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):ubyte (Tier1)
; ============================================================
Unwind Info:
@@ -101,7 +110,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+28 (+25.00%) : 86525.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.Canon,System.Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (Tier1)
@@ -5,25 +5,25 @@
; optimized using Dynamic PGO
; fp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 400064
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 400064
; 1 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 4, 4 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
+; V00 this [V00,T00] ( 5, 5 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T03] ( 3, 3 ) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.MetadataReference>
-; V02 loc0 [V02,T05] ( 3, 3 ) int -> x0 ld-addr-op
+; V02 loc0 [V02,T05] ( 3, 3 ) int -> x1 ld-addr-op
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
;* V04 loc2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-;* V07 tmp2 [V07,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V07 tmp2 [V07,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V08 tmp3 [V08,T01] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.MetadataReference,int]>
; V09 tmp4 [V09,T06] ( 3, 3 ) byref -> x0 single-def "Inline stloc first use temp"
;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V11 tmp6 [V11,T07] ( 3, 3 ) ref -> x1 single-def "field V04.array (fldOffset=0x0)" P-INDEP
-;* V12 rat0 [V12,T04] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V13 rat1 [V13,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V14 rat2 [V14,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V11 tmp6 [V11,T07] ( 3, 3 ) ref -> x2 single-def "field V04.array (fldOffset=0x0)" P-INDEP
+; V12 rat0 [V12,T04] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
+;* V13 rat1 [V13,T08] ( 0, 0 ) long -> zero-ref "runtime lookup"
+; V14 rat2 [V14,T02] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -31,9 +31,10 @@ G_M43979_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x20]!
str x19, [sp, #0x18]
mov fp, sp
+ str x0, [fp, #0x10]
mov x19, x0
; gcrRegs +[x19]
- ;; size=16 bbWeight=1 PerfScore 3.00
+ ;; size=20 bbWeight=1 PerfScore 4.00
G_M43979_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
ldr x0, [x19, #0x20]
@@ -47,40 +48,51 @@ G_M43979_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {},
; gcrRegs -[x0-x1]
; byrRegs +[x0]
cbz x0, G_M43979_IG04
- ldr w0, [x0]
+ ldr w1, [x0]
+ ldr x2, [x19, #0x80]
+ ; gcrRegs +[x2]
+ ldr x0, [x19]
; byrRegs -[x0]
- ldr x1, [x19, #0x80]
- ; gcrRegs +[x1]
- ldr w2, [x1, #0x08]
- cmp w0, w2
- bhs G_M43979_IG06
- add x1, x1, #16
- ; gcrRegs -[x1]
- ; byrRegs +[x1]
- ldr x0, [x1, w0, UXTW #3]
- ; gcrRegs +[x0]
- ;; size=60 bbWeight=1 PerfScore 26.50
-G_M43979_IG03: ; bbWeight=1, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=1 PerfScore 4.00
-G_M43979_IG04: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0]
- ; byrRegs -[x1]
+ ldr x0, [x0, #0x38]
+ ldr x0, [x0]
+ ldr x0, [x0, #0xD1FFAB1E]
+ cbnz x0, G_M43979_IG06
+ ;; size=60 bbWeight=1 PerfScore 31.50
+G_M43979_IG03: ; bbWeight=0.20, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref
+ b G_M43979_IG06
+ ;; size=4 bbWeight=0.20 PerfScore 0.20
+G_M43979_IG04: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x2]
mov x0, xzr
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M43979_IG05: ; bbWeight=1, epilog, nogc, extend
+ ;; size=4 bbWeight=0.00 PerfScore 0.00
+G_M43979_IG05: ; bbWeight=0.00, epilog, nogc, extend
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.00 PerfScore 0.00
+G_M43979_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x2]
+ ldr w0, [x2, #0x08]
+ cmp w1, w0
+ bhs G_M43979_IG08
+ add x0, x2, #16
+ ; byrRegs +[x0]
+ ldr x0, [x0, w1, UXTW #3]
+ ; gcrRegs +[x0]
+ ; byrRegs -[x0]
+ ;; size=20 bbWeight=1 PerfScore 8.00
+G_M43979_IG07: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-G_M43979_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M43979_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0 x2]
bl CORINFO_HELP_RNGCHKFAIL
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 112, prolog size 12, PerfScore 38.00, instruction count 28, allocated bytes for code 112 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (Tier1)
+; Total bytes of code 140, prolog size 16, PerfScore 47.70, instruction count 35, allocated bytes for code 140 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (Tier1)
; ============================================================
Unwind Info:
@@ -91,7 +103,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
librariestestsnotieredcompilation.run.windows.arm64.Release.mch
-28 (-3.74%) : 198364.dasm - System.Runtime.Loader.Tests.RefEmitLoadContextTests:Init() (FullOpts)
@@ -9,39 +9,42 @@
; Final local variable assignments
;
;* V00 loc0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.String>
-; V01 loc1 [V01,T00] ( 9, 6.93) ref -> registers class-hnd <System.String>
+; V01 loc1 [V01,T00] ( 9, 6.93) ref -> x21 class-hnd <System.String>
; V02 loc2 [V02,T10] ( 5, 3.47) ref -> x20 class-hnd exact single-def <System.String>
-; V03 loc3 [V03,T14] ( 2, 2 ) ref -> x20 class-hnd exact single-def <System.Reflection.AssemblyName>
-; V04 loc4 [V04,T11] ( 5, 3.47) ref -> x19 class-hnd exact single-def <System.String>
+; V03 loc3 [V03,T17] ( 2, 2 ) ref -> x21 class-hnd exact single-def <System.Reflection.AssemblyName>
+; V04 loc4 [V04,T11] ( 5, 3.47) ref -> x20 class-hnd exact single-def <System.String>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.IO.DirectoryInfo>
;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
-;* V09 tmp4 [V09,T17] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V10 tmp5 [V10,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V11 tmp6 [V11,T15] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.Reflection.TypeInfo>
+;* V09 tmp4 [V09,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V10 tmp5 [V10,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V11 tmp6 [V11,T18] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.Reflection.TypeInfo>
;* V12 tmp7 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
;* V13 tmp8 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Reflection.TypeDelegator>
-;* V14 tmp9 [V14,T16] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.Reflection.TypeInfo>
+;* V14 tmp9 [V14,T19] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.Reflection.TypeInfo>
;* V15 tmp10 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
;* V16 tmp11 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Reflection.TypeDelegator>
;* V17 tmp12 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
-;* V18 tmp13 [V18,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V19 tmp14 [V19,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V18 tmp13 [V18,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V19 tmp14 [V19,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V20 tmp15 [V20,T03] ( 2, 4 ) ref -> x0 single-def "argument with side effect"
-; V21 tmp16 [V21,T21] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
+; V21 tmp16 [V21,T24] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
; V22 tmp17 [V22,T04] ( 2, 4 ) ref -> x20 single-def "argument with side effect"
; V23 tmp18 [V23,T05] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
; V24 tmp19 [V24,T01] ( 3, 6 ) ref -> x0 single-def "argument with side effect"
; V25 tmp20 [V25,T02] ( 3, 6 ) ref -> x0 single-def "argument with side effect"
; V26 tmp21 [V26,T06] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V27 tmp22 [V27,T07] ( 2, 4 ) ref -> x21 single-def "argument with side effect"
-; V28 tmp23 [V28,T22] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V29 tmp24 [V29,T23] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V30 tmp25 [V30,T08] ( 2, 4 ) ref -> x19 single-def "argument with side effect"
+; V27 tmp22 [V27,T07] ( 2, 4 ) ref -> x19 single-def "argument with side effect"
+; V28 tmp23 [V28,T25] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
+; V29 tmp24 [V29,T26] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
+; V30 tmp25 [V30,T08] ( 2, 4 ) ref -> x20 single-def "argument with side effect"
; V31 tmp26 [V31,T09] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
; V32 cse0 [V32,T12] ( 3, 3 ) ref -> x0 "CSE - aggressive"
-; V33 cse1 [V33,T13] ( 3, 3 ) long -> x19 "CSE - aggressive"
+; V33 cse1 [V33,T15] ( 3, 3 ) long -> x20 "CSE - aggressive"
+; V34 cse2 [V34,T16] ( 3, 3 ) long -> x19 "CSE - aggressive"
+; V35 cse3 [V35,T13] ( 3, 3 ) ref -> x20 "CSE - aggressive"
+;* V36 cse4 [V36,T14] ( 0, 0 ) ref -> zero-ref "CSE - aggressive"
;
; Lcl frame size = 8
@@ -60,23 +63,27 @@ G_M37134_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
blr x1
; gcrRegs +[x0]
ldr x0, [x0, #0x08]
- movz x14, #0xD1FFAB1E // data for <unknown class>:<unknown field>
- movk x14, #0xD1FFAB1E LSL #16
- movk x14, #0xD1FFAB1E LSL #32
+ movz x19, #0xD1FFAB1E // data for <unknown class>:<unknown field>
+ movk x19, #0xD1FFAB1E LSL #16
+ movk x19, #0xD1FFAB1E LSL #32
+ mov x14, x19
mov x15, x0
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
+ movz x20, #0xD1FFAB1E
+ movk x20, #0xD1FFAB1E LSL #16
+ movk x20, #0xD1FFAB1E LSL #32
+ mov x1, x20
+ ; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for System.IO.Path:Combine(System.String,System.String):System.String
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
- mov x19, x0
- ; gcrRegs +[x19]
+ ; gcrRegs -[x1] +[x20]
+ mov x21, x0
+ ; gcrRegs +[x21]
movz x0, #0xD1FFAB1E // code for <unknown method>
; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
@@ -84,31 +91,31 @@ G_M37134_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldr x0, [x0]
blr x0
; gcrRegs +[x0]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
+ mov x1, x20
+ ; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for System.IO.Path:Combine(System.String,System.String):System.String
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
+ ; gcrRegs -[x1 x20]
mov x20, x0
; gcrRegs +[x20]
cbz x20, G_M37134_IG14
;; size=144 bbWeight=1 PerfScore 33.50
-G_M37134_IG03: ; bbWeight=0.47, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M37134_IG03: ; bbWeight=0.47, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
ldr w0, [x20, #0x08]
cbz w0, G_M37134_IG14
;; size=8 bbWeight=0.47 PerfScore 1.87
-G_M37134_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M37134_IG16
+G_M37134_IG04: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+ cbz x21, G_M37134_IG13
;; size=4 bbWeight=1 PerfScore 1.00
-G_M37134_IG05: ; bbWeight=0.47, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr w0, [x19, #0x08]
- cbz w0, G_M37134_IG16
+G_M37134_IG05: ; bbWeight=0.47, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+ ldr w0, [x21, #0x08]
+ cbz w0, G_M37134_IG13
;; size=8 bbWeight=0.47 PerfScore 1.87
-G_M37134_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M37134_IG06: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
mov x0, x20
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.IO.Path:GetFullPath(System.String):System.String
@@ -119,13 +126,13 @@ G_M37134_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
; gcrRegs -[x20]
mov x20, x0
; gcrRegs +[x20]
- mov x0, x19
+ mov x0, x21
movz x1, #0xD1FFAB1E // code for System.IO.Path:GetFullPath(System.String):System.String
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
- ; gcrRegs -[x19]
+ ; gcrRegs -[x21]
mov x1, x0
; gcrRegs +[x1]
mov x0, x20
@@ -142,37 +149,32 @@ G_M37134_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
- ldr x19, [x1]
- ldr x1, [x19, #0x28]
+ ldr x20, [x1]
+ ldr x1, [x20, #0x28]
blr x1
; gcrRegs +[x0]
ldr x1, [x0]
ldr x1, [x1, #0x58]
ldr x1, [x1, #0x28]
blr x1
- mov x20, x0
- ; gcrRegs +[x20]
+ mov x21, x0
+ ; gcrRegs +[x21]
movz x0, #0xD1FFAB1E
; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
- ldr x1, [x19, #0x28]
+ ldr x1, [x20, #0x28]
blr x1
; gcrRegs +[x0]
ldr x1, [x0]
ldr x1, [x1, #0x50]
ldr x1, [x1, #0x30]
blr x1
- mov x19, x0
+ mov x20, x0
+ ; gcrRegs +[x20]
+ ldr x19, [x19]
; gcrRegs +[x19]
- movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
- ; gcrRegs -[x0]
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- ldr x21, [x0]
- ; gcrRegs +[x21]
- ldr x0, [x20, #0x08]
- ; gcrRegs +[x0]
+ ldr x0, [x21, #0x08]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -181,53 +183,53 @@ G_M37134_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
- ; gcrRegs -[x20]
+ ; gcrRegs -[x21]
mov x1, x0
; gcrRegs +[x1]
- mov x0, x21
+ mov x0, x19
movz x2, #0xD1FFAB1E // code for System.IO.Path:Combine(System.String,System.String):System.String
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
- ; gcrRegs -[x1 x21]
- mov x20, x0
- ; gcrRegs +[x20]
- cbz x19, G_M37134_IG15
- ;; size=268 bbWeight=1 PerfScore 78.50
-G_M37134_IG07: ; bbWeight=0.47, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x1 x19]
+ mov x21, x0
+ ; gcrRegs +[x21]
+ cbz x20, G_M37134_IG12
+ ;; size=256 bbWeight=1 PerfScore 77.00
+G_M37134_IG07: ; bbWeight=0.47, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ldr w0, [x19, #0x08]
- cbz w0, G_M37134_IG15
- ;; size=8 bbWeight=0.47 PerfScore 1.87
-G_M37134_IG08: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M37134_IG13
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M37134_IG09: ; bbWeight=0.47, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w0, [x20, #0x08]
cbz w0, G_M37134_IG12
;; size=8 bbWeight=0.47 PerfScore 1.87
-G_M37134_IG10: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- mov x0, x19
+G_M37134_IG08: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+ cbz x21, G_M37134_IG13
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M37134_IG09: ; bbWeight=0.47, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+ ldr w0, [x21, #0x08]
+ cbz w0, G_M37134_IG13
+ ;; size=8 bbWeight=0.47 PerfScore 1.87
+G_M37134_IG10: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+ mov x0, x20
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.IO.Path:GetFullPath(System.String):System.String
...
-16 (-3.17%) : 177887.dasm - System.Xml.XslCompiledTransformApiTests.CTransformTestGeneric:TransformGeneric1(System.Object,int,int,int,int):this (FullOpts)
@@ -16,19 +16,19 @@
; V05 arg5 [V05,T06] ( 3, 3 ) int -> x23 single-def
;* V06 loc0 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.String>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T14] ( 3, 1 ) long -> x2 "fgMakeTemp is creating a new local variable"
+; V08 tmp1 [V08,T15] ( 3, 1 ) long -> x2 "fgMakeTemp is creating a new local variable"
; V09 tmp2 [V09,T00] ( 9, 11.28) ref -> x24 class-hnd single-def "spilling QMark2" <System.String>
-; V10 tmp3 [V10,T13] ( 4, 1.94) ref -> x26 class-hnd "Inline return value spill temp" <System.String>
+; V10 tmp3 [V10,T14] ( 4, 1.47) ref -> x25 class-hnd "Inline return value spill temp" <System.String>
;* V11 tmp4 [V11 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V12 tmp5 [V12 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V13 tmp6 [V13 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V14 tmp7 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V15 tmp8 [V15,T24] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V15 tmp8 [V15,T26] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V16 tmp9 [V16 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V17 tmp10 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V18 tmp11 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V19 tmp12 [V19,T09] ( 2, 1.95) int -> x1 "Inlining Arg"
-; V20 tmp13 [V20,T08] ( 2, 1.95) byref -> x0 single-def "Inlining Arg"
+; V19 tmp12 [V19,T10] ( 2, 1.95) int -> x1 "Inlining Arg"
+; V20 tmp13 [V20,T09] ( 2, 1.95) byref -> x0 single-def "Inlining Arg"
;* V21 tmp14 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V22 tmp15 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp16 [V23 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
@@ -36,8 +36,8 @@
;* V25 tmp18 [V25 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V26 tmp19 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V27 tmp20 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V28 tmp21 [V28,T12] ( 2, 1.75) int -> x25 "Inlining Arg"
-; V29 tmp22 [V29,T11] ( 2, 1.75) byref -> x2 single-def "Inlining Arg"
+; V28 tmp21 [V28,T13] ( 2, 1.75) int -> x26 "Inlining Arg"
+; V29 tmp22 [V29,T12] ( 2, 1.75) byref -> x2 single-def "Inlining Arg"
;* V30 tmp23 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V31 tmp24 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V32 tmp25 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Xml.XmlUrlResolver>
@@ -47,22 +47,23 @@
;* V36 tmp29 [V36 ] ( 0, 0 ) int -> zero-ref single-def "field V12._length (fldOffset=0x8)" P-INDEP
;* V37 tmp30 [V37 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP
;* V38 tmp31 [V38 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
-; V39 tmp32 [V39,T15] ( 2, 0.97) byref -> x0 "field V16._reference (fldOffset=0x0)" P-INDEP
-; V40 tmp33 [V40,T17] ( 2, 0.97) int -> x1 "field V16._length (fldOffset=0x8)" P-INDEP
-; V41 tmp34 [V41,T16] ( 2, 0.97) byref -> x0 single-def "field V17._reference (fldOffset=0x0)" P-INDEP
-; V42 tmp35 [V42,T18] ( 2, 0.97) int -> x1 single-def "field V17._length (fldOffset=0x8)" P-INDEP
+; V39 tmp32 [V39,T16] ( 2, 0.97) byref -> x0 "field V16._reference (fldOffset=0x0)" P-INDEP
+; V40 tmp33 [V40,T18] ( 2, 0.97) int -> x1 "field V16._length (fldOffset=0x8)" P-INDEP
+; V41 tmp34 [V41,T17] ( 2, 0.97) byref -> x0 single-def "field V17._reference (fldOffset=0x0)" P-INDEP
+; V42 tmp35 [V42,T19] ( 2, 0.97) int -> x1 single-def "field V17._length (fldOffset=0x8)" P-INDEP
;* V43 tmp36 [V43 ] ( 0, 0 ) byref -> zero-ref single-def "field V18._reference (fldOffset=0x0)" P-INDEP
;* V44 tmp37 [V44 ] ( 0, 0 ) int -> zero-ref single-def "field V18._length (fldOffset=0x8)" P-INDEP
-; V45 tmp38 [V45,T19] ( 2, 0.88) byref -> x0 single-def "field V23._reference (fldOffset=0x0)" P-INDEP
+; V45 tmp38 [V45,T20] ( 2, 0.88) byref -> x0 single-def "field V23._reference (fldOffset=0x0)" P-INDEP
;* V46 tmp39 [V46,T25] ( 0, 0 ) int -> zero-ref single-def "field V23._length (fldOffset=0x8)" P-INDEP
-; V47 tmp40 [V47,T20] ( 2, 0.88) byref -> x2 "field V25._reference (fldOffset=0x0)" P-INDEP
-; V48 tmp41 [V48,T22] ( 2, 0.88) int -> x3 "field V25._length (fldOffset=0x8)" P-INDEP
-; V49 tmp42 [V49,T21] ( 2, 0.88) byref -> x2 single-def "field V26._reference (fldOffset=0x0)" P-INDEP
-; V50 tmp43 [V50,T23] ( 2, 0.88) int -> x3 single-def "field V26._length (fldOffset=0x8)" P-INDEP
+; V47 tmp40 [V47,T21] ( 2, 0.88) byref -> x2 "field V25._reference (fldOffset=0x0)" P-INDEP
+; V48 tmp41 [V48,T23] ( 2, 0.88) int -> x3 "field V25._length (fldOffset=0x8)" P-INDEP
+; V49 tmp42 [V49,T22] ( 2, 0.88) byref -> x2 single-def "field V26._reference (fldOffset=0x0)" P-INDEP
+; V50 tmp43 [V50,T24] ( 2, 0.88) int -> x3 single-def "field V26._length (fldOffset=0x8)" P-INDEP
;* V51 tmp44 [V51 ] ( 0, 0 ) byref -> zero-ref single-def "field V27._reference (fldOffset=0x0)" P-INDEP
;* V52 tmp45 [V52 ] ( 0, 0 ) int -> zero-ref single-def "field V27._length (fldOffset=0x8)" P-INDEP
; V53 tmp46 [V53,T07] ( 2, 4 ) ref -> x4 single-def "argument with side effect"
-; V54 cse0 [V54,T10] ( 4, 1.86) int -> x25 "CSE - moderate"
+; V54 cse0 [V54,T11] ( 4, 1.86) int -> x26 "CSE - moderate"
+; V55 cse1 [V55,T08] ( 4, 2.47) ref -> x25 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -88,9 +89,11 @@ G_M63382_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {},
;; size=8 bbWeight=1 PerfScore 1.50
G_M63382_IG03: ; bbWeight=1, gcrefRegs=1080000 {x19 x24}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ movz x25, #0xD1FFAB1E
+ movk x25, #0xD1FFAB1E LSL #16
+ movk x25, #0xD1FFAB1E LSL #32
+ mov x0, x25
+ ; gcrRegs +[x0]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -99,6 +102,7 @@ G_M63382_IG03: ; bbWeight=1, gcrefRegs=1080000 {x19 x24}, byrefRegs=0000
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
+ ; gcrRegs -[x0] +[x25]
mov x0, x24
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E
@@ -111,26 +115,23 @@ G_M63382_IG03: ; bbWeight=1, gcrefRegs=1080000 {x19 x24}, byrefRegs=0000
blr x2
; gcrRegs -[x0]
cbz x24, G_M63382_IG06
- ;; size=84 bbWeight=1 PerfScore 17.00
-G_M63382_IG04: ; bbWeight=0.47, gcrefRegs=1080000 {x19 x24}, byrefRegs=0000 {}, byref, isz
- ldr w25, [x24, #0x08]
- cbz w25, G_M63382_IG06
+ ;; size=88 bbWeight=1 PerfScore 17.50
+G_M63382_IG04: ; bbWeight=0.47, gcrefRegs=3080000 {x19 x24 x25}, byrefRegs=0000 {}, byref, isz
+ ldr w26, [x24, #0x08]
+ cbz w26, G_M63382_IG06
;; size=8 bbWeight=0.47 PerfScore 1.86
-G_M63382_IG05: ; bbWeight=0.49, gcrefRegs=1080000 {x19 x24}, byrefRegs=0000 {}, byref
+G_M63382_IG05: ; bbWeight=0.49, gcrefRegs=3080000 {x19 x24 x25}, byrefRegs=0000 {}, byref
add x0, x24, #12
; byrRegs +[x0]
- sxtw w1, w25
+ sxtw w1, w26
b G_M63382_IG07
;; size=12 bbWeight=0.49 PerfScore 0.97
-G_M63382_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M63382_IG06: ; bbWeight=0.03, gcrefRegs=2080000 {x19 x25}, byrefRegs=0000 {}, byref
; gcrRegs -[x24]
; byrRegs -[x0]
- movz x26, #0xD1FFAB1E
- movk x26, #0xD1FFAB1E LSL #16
- movk x26, #0xD1FFAB1E LSL #32
b G_M63382_IG09
- ;; size=16 bbWeight=0.50 PerfScore 1.25
-G_M63382_IG07: ; bbWeight=0.49, gcrefRegs=1080000 {x19 x24}, byrefRegs=0001 {x0}, byref, isz
+ ;; size=4 bbWeight=0.03 PerfScore 0.03
+G_M63382_IG07: ; bbWeight=0.49, gcrefRegs=3080000 {x19 x24 x25}, byrefRegs=0001 {x0}, byref, isz
; gcrRegs +[x24]
; byrRegs +[x0]
movz x2, #0xD1FFAB1E // code for System.IO.Path:IsPathRooted(System.ReadOnlySpan`1[ushort]):ubyte
@@ -141,25 +142,24 @@ G_M63382_IG07: ; bbWeight=0.49, gcrefRegs=1080000 {x19 x24}, byrefRegs=00
; byrRegs -[x0]
cbnz w0, G_M63382_IG12
;; size=24 bbWeight=0.49 PerfScore 3.16
-G_M63382_IG08: ; bbWeight=0.44, gcrefRegs=1080000 {x19 x24}, byrefRegs=0000 {}, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+G_M63382_IG08: ; bbWeight=0.44, gcrefRegs=3080000 {x19 x24 x25}, byrefRegs=0000 {}, byref
+ add x0, x25, #12
+ ; byrRegs +[x0]
add x2, x24, #12
; byrRegs +[x2]
- sxtw w3, w25
+ sxtw w3, w26
mov w1, #8
movz x4, #0xD1FFAB1E // code for <unknown method>
movk x4, #0xD1FFAB1E LSL #16
movk x4, #0xD1FFAB1E LSL #32
ldr x4, [x4]
blr x4
- ; gcrRegs -[x24] +[x0]
- ; byrRegs -[x2]
- mov x26, x0
- ; gcrRegs +[x26]
- ;; size=48 bbWeight=0.44 PerfScore 3.95
-G_M63382_IG09: ; bbWeight=1, gcrefRegs=4080000 {x19 x26}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x24-x25] +[x0]
+ ; byrRegs -[x0 x2]
+ mov x25, x0
+ ; gcrRegs +[x25]
+ ;; size=40 bbWeight=0.44 PerfScore 3.51
+G_M63382_IG09: ; bbWeight=1, gcrefRegs=2080000 {x19 x25}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -202,14 +202,14 @@ G_M63382_IG09: ; bbWeight=1, gcrefRegs=4080000 {x19 x26}, byrefRegs=0000
; gcrRegs +[x2]
mov x0, x19
; gcrRegs +[x0]
- mov x1, x26
+ mov x1, x25
; gcrRegs +[x1]
movz x3, #0xD1FFAB1E // code for <unknown method>
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
- ; gcrRegs -[x0-x2 x19 x26]
+ ; gcrRegs -[x0-x2 x19 x25]
;; size=160 bbWeight=1 PerfScore 33.00
G_M63382_IG10: ; bbWeight=1, epilog, nogc, extend
ldp x25, x26, [sp, #0x40]
@@ -231,12 +231,12 @@ G_M63382_IG11: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=108
;; size=28 bbWeight=0.25 PerfScore 1.75
G_M63382_IG12: ; bbWeight=0.00, gcrefRegs=1080000 {x19 x24}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
- mov x26, x24
- ; gcrRegs +[x26]
+ mov x25, x24
+ ; gcrRegs +[x25]
b G_M63382_IG09
;; size=8 bbWeight=0.00 PerfScore 0.00
G_M63382_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19 x24 x26]
+ ; gcrRegs -[x19 x24-x25]
mov x0, xzr
movz x1, #0xD1FFAB1E // code for Xunit.Assert:Fail(System.String)
movk x1, #0xD1FFAB1E LSL #16
@@ -253,7 +253,7 @@ G_M63382_IG14: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byre
brk_windows #0
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 504, prolog size 24, PerfScore 78.45, instruction count 126, allocated bytes for code 504 (MethodHash=cb690869) for method System.Xml.XslCompiledTransformApiTests.CTransformTestGeneric:TransformGeneric1(System.Object,int,int,int,int):this (FullOpts)
+; Total bytes of code 488, prolog size 24, PerfScore 77.29, instruction count 122, allocated bytes for code 488 (MethodHash=cb690869) for method System.Xml.XslCompiledTransformApiTests.CTransformTestGeneric:TransformGeneric1(System.Object,int,int,int,int):this (FullOpts)
; ============================================================
Unwind Info:
@@ -264,7 +264,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 126 (0x0007e) Actual length = 504 (0x0001f8)
+ Function Length : 122 (0x0007a) Actual length = 488 (0x0001e8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-3.12%) : 128147.dasm - System.IO.Tests.Enumeration.GetTimesTests+AllEntries:TransformEntry(byref):System.ValueTuple`3[System.DateTimeOffset,System.DateTimeOffset,System.DateTimeOffset]:this (FullOpts)
@@ -24,34 +24,34 @@
; V13 tmp10 [V13,T12] ( 3, 2.15) long -> x0 "Inline stloc first use temp"
;* V14 tmp11 [V14,T24] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V15 tmp12 [V15 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.TimeSpan>
-; V16 tmp13 [V16,T30] ( 4, 1.06) ref -> x22 class-hnd exact single-def "Inline stloc first use temp" <System.TimeZoneInfo+CachedData>
+; V16 tmp13 [V16,T30] ( 4, 0.18) ref -> x22 class-hnd exact single-def "Inline stloc first use temp" <System.TimeZoneInfo+CachedData>
;* V17 tmp14 [V17 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.DateTime>
-; V18 tmp15 [V18,T27] ( 2, 2.00) ref -> x0 class-hnd exact single-def "dup spill" <System.TimeZoneInfo>
-; V19 tmp16 [V19,T31] ( 4, 1.06) ref -> x0
+; V18 tmp15 [V18,T27] ( 2, 0.25) ref -> x0 class-hnd exact single-def "dup spill" <System.TimeZoneInfo>
+; V19 tmp16 [V19,T31] ( 4, 0.18) ref -> x0
; V20 tmp17 [V20,T04] ( 2, 4 ) byref -> x0 single-def "Inlining Arg"
;* V21 tmp18 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.DateTimeOffset>
;* V22 tmp19 [V22 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.DateTime>
;* V23 tmp20 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
;* V24 tmp21 [V24 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.TimeSpan>
-; V25 tmp22 [V25,T13] ( 3, 2.15) long -> x24 "Inline stloc first use temp"
+; V25 tmp22 [V25,T13] ( 3, 2.15) long -> x0 "Inline stloc first use temp"
;* V26 tmp23 [V26,T25] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V27 tmp24 [V27 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.TimeSpan>
-; V28 tmp25 [V28,T32] ( 4, 1.06) ref -> x21 class-hnd exact single-def "Inline stloc first use temp" <System.TimeZoneInfo+CachedData>
+; V28 tmp25 [V28,T32] ( 4, 0.18) ref -> x23 class-hnd exact single-def "Inline stloc first use temp" <System.TimeZoneInfo+CachedData>
;* V29 tmp26 [V29 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.DateTime>
-; V30 tmp27 [V30,T28] ( 2, 2.00) ref -> x0 class-hnd exact single-def "dup spill" <System.TimeZoneInfo>
-; V31 tmp28 [V31,T33] ( 4, 1.06) ref -> x0
+; V30 tmp27 [V30,T28] ( 2, 0.25) ref -> x0 class-hnd exact single-def "dup spill" <System.TimeZoneInfo>
+; V31 tmp28 [V31,T33] ( 4, 0.18) ref -> x0
; V32 tmp29 [V32,T05] ( 2, 4 ) byref -> x0 single-def "Inlining Arg"
;* V33 tmp30 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.DateTimeOffset>
;* V34 tmp31 [V34 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.DateTime>
;* V35 tmp32 [V35 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
;* V36 tmp33 [V36 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.TimeSpan>
-; V37 tmp34 [V37,T14] ( 3, 2.15) long -> x25 "Inline stloc first use temp"
+; V37 tmp34 [V37,T14] ( 3, 2.15) long -> x0 "Inline stloc first use temp"
;* V38 tmp35 [V38,T26] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V39 tmp36 [V39 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.TimeSpan>
-; V40 tmp37 [V40,T34] ( 4, 1.06) ref -> x26 class-hnd exact single-def "Inline stloc first use temp" <System.TimeZoneInfo+CachedData>
+; V40 tmp37 [V40,T34] ( 4, 0.18) ref -> x21 class-hnd exact single-def "Inline stloc first use temp" <System.TimeZoneInfo+CachedData>
;* V41 tmp38 [V41 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.DateTime>
-; V42 tmp39 [V42,T29] ( 2, 2.00) ref -> x0 class-hnd exact single-def "dup spill" <System.TimeZoneInfo>
-; V43 tmp40 [V43,T35] ( 4, 1.06) ref -> x0
+; V42 tmp39 [V42,T29] ( 2, 0.25) ref -> x0 class-hnd exact single-def "dup spill" <System.TimeZoneInfo>
+; V43 tmp40 [V43,T35] ( 4, 0.18) ref -> x0
;* V44 tmp41 [V44 ] ( 0, 0 ) short -> zero-ref "field V04._offsetMinutes (fldOffset=0x0)" P-INDEP
;* V45 tmp42 [V45 ] ( 0, 0 ) long -> zero-ref "field V04._dateTime (fldOffset=0x8)" P-INDEP
;* V46 tmp43 [V46 ] ( 0, 0 ) short -> zero-ref "field V05._offsetMinutes (fldOffset=0x0)" P-INDEP
@@ -65,42 +65,41 @@
; V54 tmp51 [V54,T09] ( 4, 2.50) long -> x23 "field V12._ticks (fldOffset=0x0)" P-INDEP
; V55 tmp52 [V55,T36] ( 2, 0.12) long -> x23 "field V15._ticks (fldOffset=0x0)" P-INDEP
;* V56 tmp53 [V56 ] ( 0, 0 ) long -> zero-ref "field V17._dateData (fldOffset=0x0)" P-INDEP
-; V57 tmp54 [V57,T17] ( 2, 2 ) short -> x24 "field V21._offsetMinutes (fldOffset=0x0)" P-INDEP
+; V57 tmp54 [V57,T17] ( 2, 2 ) short -> x23 "field V21._offsetMinutes (fldOffset=0x0)" P-INDEP
; V58 tmp55 [V58,T18] ( 2, 2 ) long -> [fp+0x20] do-not-enreg[F] "field V21._dateTime (fldOffset=0x8)" P-INDEP
-; V59 tmp56 [V59,T07] ( 4, 3.06) long -> x23 "field V22._dateData (fldOffset=0x0)" P-INDEP
+; V59 tmp56 [V59,T07] ( 4, 3.06) long -> x21 "field V22._dateData (fldOffset=0x0)" P-INDEP
;* V60 tmp57 [V60 ] ( 0, 0 ) long -> zero-ref "field V23._dateData (fldOffset=0x0)" P-INDEP
-; V61 tmp58 [V61,T10] ( 4, 2.50) long -> x21 "field V24._ticks (fldOffset=0x0)" P-INDEP
-; V62 tmp59 [V62,T37] ( 2, 0.12) long -> x21 "field V27._ticks (fldOffset=0x0)" P-INDEP
+; V61 tmp58 [V61,T10] ( 4, 2.50) long -> x24 "field V24._ticks (fldOffset=0x0)" P-INDEP
+; V62 tmp59 [V62,T37] ( 2, 0.12) long -> x24 "field V27._ticks (fldOffset=0x0)" P-INDEP
;* V63 tmp60 [V63 ] ( 0, 0 ) long -> zero-ref "field V29._dateData (fldOffset=0x0)" P-INDEP
-; V64 tmp61 [V64,T19] ( 2, 2 ) short -> x20 "field V33._offsetMinutes (fldOffset=0x0)" P-INDEP
+; V64 tmp61 [V64,T19] ( 2, 2 ) short -> x21 "field V33._offsetMinutes (fldOffset=0x0)" P-INDEP
; V65 tmp62 [V65,T20] ( 2, 2 ) long -> [fp+0x18] do-not-enreg[F] "field V33._dateTime (fldOffset=0x8)" P-INDEP
-; V66 tmp63 [V66,T08] ( 4, 3.06) long -> x21 "field V34._dateData (fldOffset=0x0)" P-INDEP
+; V66 tmp63 [V66,T08] ( 4, 3.06) long -> x20 "field V34._dateData (fldOffset=0x0)" P-INDEP
;* V67 tmp64 [V67 ] ( 0, 0 ) long -> zero-ref "field V35._dateData (fldOffset=0x0)" P-INDEP
-; V68 tmp65 [V68,T11] ( 4, 2.50) long -> x26 "field V36._ticks (fldOffset=0x0)" P-INDEP
-; V69 tmp66 [V69,T38] ( 2, 0.12) long -> x26 "field V39._ticks (fldOffset=0x0)" P-INDEP
+; V68 tmp65 [V68,T11] ( 4, 2.50) long -> x24 "field V36._ticks (fldOffset=0x0)" P-INDEP
+; V69 tmp66 [V69,T38] ( 2, 0.12) long -> x24 "field V39._ticks (fldOffset=0x0)" P-INDEP
;* V70 tmp67 [V70 ] ( 0, 0 ) long -> zero-ref "field V41._dateData (fldOffset=0x0)" P-INDEP
; V71 tmp68 [V71,T21] ( 2, 2 ) short -> x22 "V06.[000..002)"
;* V72 tmp69 [V72 ] ( 0, 0 ) long -> zero-ref "V06.[008..016)"
-; V73 tmp70 [V73,T22] ( 2, 2 ) short -> x24 "V06.[016..018)"
+; V73 tmp70 [V73,T22] ( 2, 2 ) short -> x23 "V06.[016..018)"
;* V74 tmp71 [V74 ] ( 0, 0 ) long -> zero-ref "V06.[024..032)"
-; V75 tmp72 [V75,T23] ( 2, 2 ) short -> x20 "V06.[032..034)"
+; V75 tmp72 [V75,T23] ( 2, 2 ) short -> x21 "V06.[032..034)"
;* V76 tmp73 [V76 ] ( 0, 0 ) long -> zero-ref "V06.[040..048)"
; V77 tmp74 [V77,T02] ( 6, 6 ) long -> x21 "Field obj"
;
; Lcl frame size = 32
G_M58189_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x70]!
+ stp fp, lr, [sp, #-0x60]!
stp x19, x20, [sp, #0x30]
stp x21, x22, [sp, #0x40]
stp x23, x24, [sp, #0x50]
- stp x25, x26, [sp, #0x60]
mov fp, sp
mov x20, x1
; byrRegs +[x20]
mov x19, x8
; byrRegs +[x19]
- ;; size=32 bbWeight=1 PerfScore 6.50
+ ;; size=28 bbWeight=1 PerfScore 5.50
G_M58189_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
ldr x21, [x20]
add x0, x21, #8
@@ -112,12 +111,12 @@ G_M58189_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20
blr x1
mov x21, x0
and x0, x21, #0xD1FFAB1E
- cbz x0, G_M58189_IG07
+ cbz x0, G_M58189_IG13
;; size=44 bbWeight=1 PerfScore 14.00
G_M58189_IG03: ; bbWeight=0.15, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
mov x1, #0xD1FFAB1E
cmp x0, x1
- bne G_M58189_IG07
+ bne G_M58189_IG13
;; size=12 bbWeight=0.15 PerfScore 0.30
G_M58189_IG04: ; bbWeight=0.44, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
mov x23, xzr
@@ -146,54 +145,28 @@ G_M58189_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
- mov x23, x0
- and x24, x23, #0xD1FFAB1E
- cbz x24, G_M58189_IG16
+ mov x21, x0
+ and x0, x21, #0xD1FFAB1E
+ cbz x0, G_M58189_IG15
;; size=104 bbWeight=1 PerfScore 28.00
-G_M58189_IG06: ; bbWeight=0.15, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
- b G_M58189_IG21
- ;; size=4 bbWeight=0.15 PerfScore 0.15
-G_M58189_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
- movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- ldr x22, [x0]
- ; gcrRegs +[x22]
- add x0, x22, #8
- ; byrRegs +[x0]
- ldapr x0, [x0]
- ; gcrRegs +[x0]
- ; byrRegs -[x0]
- cbz x0, G_M58189_IG12
- ;; size=28 bbWeight=0.50 PerfScore 4.50
-G_M58189_IG08: ; bbWeight=0.06, gcrefRegs=400001 {x0 x22}, byrefRegs=180000 {x19 x20}, byref
- mov x1, x21
- mov x3, x22
- ; gcrRegs +[x3]
- mov w2, #2
- movz x4, #0xD1FFAB1E // code for <unknown method>
- movk x4, #0xD1FFAB1E LSL #16
- movk x4, #0xD1FFAB1E LSL #32
- ldr x4, [x4]
- ldr wzr, [x0]
- blr x4
- ; gcrRegs -[x0 x3 x22]
- mov x23, x0
- b G_M58189_IG05
- ;; size=44 bbWeight=0.06 PerfScore 0.71
-G_M58189_IG09: ; bbWeight=0.44, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
- mov x21, xzr
+G_M58189_IG06: ; bbWeight=0.15, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ mov x1, #0xD1FFAB1E
+ cmp x0, x1
+ bne G_M58189_IG15
+ ;; size=12 bbWeight=0.15 PerfScore 0.30
+G_M58189_IG07: ; bbWeight=0.44, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ mov x24, xzr
;; size=4 bbWeight=0.44 PerfScore 0.22
-G_M58189_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
- mov x0, x21
+G_M58189_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ mov x0, x24
movz x1, #0xD1FFAB1E // code for System.DateTimeOffset:ValidateOffset(System.TimeSpan):short
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
- sxth w24, w0
- mov x0, x23
- mov x1, x21
+ sxth w23, w0
+ mov x0, x21
+ mov x1, x24
movz x2, #0xD1FFAB1E // code for System.DateTimeOffset:ValidateDate(System.DateTime,System.TimeSpan):System.DateTime
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
@@ -209,40 +182,28 @@ G_M58189_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20
ldr x1, [x1]
blr x1
; byrRegs -[x20]
- mov x21, x0
- and x25, x21, #0xD1FFAB1E
- cbz x25, G_M58189_IG18
+ mov x20, x0
+ and x0, x20, #0xD1FFAB1E
+ cbz x0, G_M58189_IG17
;; size=104 bbWeight=1 PerfScore 28.00
-G_M58189_IG11: ; bbWeight=0.15, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
- b G_M58189_IG23
- ;; size=4 bbWeight=0.15 PerfScore 0.15
-G_M58189_IG12: ; bbWeight=0.00, gcrefRegs=400000 {x22}, byrefRegs=180000 {x19 x20}, byref
- ; gcrRegs +[x22]
- ; byrRegs +[x20]
- mov x0, x22
- ; gcrRegs +[x0]
- movz x1, #0xD1FFAB1E // code for <unknown method>
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- blr x1
- b G_M58189_IG08
- ;; size=28 bbWeight=0.00 PerfScore 0.00
-G_M58189_IG13: ; bbWeight=0.44, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
- ; gcrRegs -[x0 x22]
- ; byrRegs -[x20]
- mov x26, xzr
+G_M58189_IG09: ; bbWeight=0.15, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+ mov x1, #0xD1FFAB1E
+ cmp x0, x1
+ bne G_M58189_IG17
+ ;; size=12 bbWeight=0.15 PerfScore 0.30
+G_M58189_IG10: ; bbWeight=0.44, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+ mov x24, xzr
;; size=4 bbWeight=0.44 PerfScore 0.22
-G_M58189_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
- mov x0, x26
+G_M58189_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+ mov x0, x24
movz x1, #0xD1FFAB1E // code for System.DateTimeOffset:ValidateOffset(System.TimeSpan):short
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
- sxth w20, w0
- mov x0, x21
- mov x1, x26
+ sxth w21, w0
+ mov x0, x20
+ mov x1, x24
movz x2, #0xD1FFAB1E // code for System.DateTimeOffset:ValidateDate(System.DateTime,System.TimeSpan):System.DateTime
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
@@ -252,26 +213,82 @@ G_M58189_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
strh w22, [x19]
ldr x0, [fp, #0x28] // [V51 tmp48]
str x0, [x19, #0x08]
- strh w24, [x19, #0x10]
+ strh w23, [x19, #0x10]
ldr x0, [fp, #0x20] // [V58 tmp55]
str x0, [x19, #0x18]
...
+48 (+4.43%) : 190874.dasm - System.Reflection.Tests.ModuleTests:LoadMultiModuleFromDisk_GetModuleNameNotInManifest() (FullOpts)
@@ -16,14 +16,14 @@
; V05 loc5 [V05,T09] ( 3, 2 ) ref -> x1 class-hnd single-def <<unknown class>>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T03] ( 4, 8 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.IO.TempDirectory>
-; V08 tmp2 [V08,T06] ( 2, 4 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Reflection.Tests.EmptyCoreMetadataAssemblyResolver>
-; V09 tmp3 [V09,T00] ( 7, 14 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.Reflection.MetadataLoadContext>
+; V08 tmp2 [V08,T06] ( 2, 4 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Reflection.Tests.EmptyCoreMetadataAssemblyResolver>
+; V09 tmp3 [V09,T00] ( 7, 14 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Reflection.MetadataLoadContext>
; V10 tmp4 [V10,T01] ( 6, 8.69) ref -> x19 class-hnd exact single-def "Inlining Arg" <System.String>
-; V11 tmp5 [V11,T14] ( 3, 1.94) ref -> x21 class-hnd "Inline return value spill temp" <System.String>
+; V11 tmp5 [V11,T14] ( 3, 1.47) ref -> x21 class-hnd "Inline return value spill temp" <System.String>
;* V12 tmp6 [V12 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V13 tmp7 [V13 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V14 tmp8 [V14 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-;* V15 tmp9 [V15,T31] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V15 tmp9 [V15,T35] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V16 tmp10 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V17 tmp11 [V17 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V18 tmp12 [V18 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
@@ -37,12 +37,12 @@
;* V26 tmp20 [V26 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V27 tmp21 [V27 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V28 tmp22 [V28 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V29 tmp23 [V29,T02] ( 6, 8.69) ref -> x19 class-hnd exact single-def "Inlining Arg" <System.String>
-; V30 tmp24 [V30,T15] ( 3, 1.94) ref -> x20 class-hnd "Inline return value spill temp" <System.String>
+; V29 tmp23 [V29,T02] ( 6, 8.69) ref -> x23 class-hnd exact single-def "Inlining Arg" <System.String>
+; V30 tmp24 [V30,T15] ( 3, 1.47) ref -> x24 class-hnd "Inline return value spill temp" <System.String>
;* V31 tmp25 [V31 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V32 tmp26 [V32 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V33 tmp27 [V33 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-;* V34 tmp28 [V34,T32] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V34 tmp28 [V34,T36] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V35 tmp29 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V36 tmp30 [V36 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V37 tmp31 [V37 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
@@ -65,7 +65,7 @@
;* V54 tmp48 [V54 ] ( 0, 0 ) byref -> zero-ref "field V17._reference (fldOffset=0x0)" P-INDEP
;* V55 tmp49 [V55 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
; V56 tmp50 [V56,T19] ( 2, 0.97) byref -> x0 single-def "field V18._reference (fldOffset=0x0)" P-INDEP
-;* V57 tmp51 [V57,T33] ( 0, 0 ) int -> zero-ref single-def "field V18._length (fldOffset=0x8)" P-INDEP
+;* V57 tmp51 [V57,T31] ( 0, 0 ) int -> zero-ref single-def "field V18._length (fldOffset=0x8)" P-INDEP
; V58 tmp52 [V58,T22] ( 2, 0.88) byref -> x0 single-def "field V20._reference (fldOffset=0x0)" P-INDEP
; V59 tmp53 [V59,T28] ( 2, 0.88) int -> x1 single-def "field V20._length (fldOffset=0x8)" P-INDEP
;* V60 tmp54 [V60 ] ( 0, 0 ) byref -> zero-ref single-def "field V21._reference (fldOffset=0x0)" P-INDEP
@@ -73,7 +73,7 @@
;* V62 tmp56 [V62 ] ( 0, 0 ) byref -> zero-ref "field V26._reference (fldOffset=0x0)" P-INDEP
;* V63 tmp57 [V63 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x8)" P-INDEP
; V64 tmp58 [V64,T23] ( 2, 0.88) byref -> x2 single-def "field V27._reference (fldOffset=0x0)" P-INDEP
-;* V65 tmp59 [V65,T35] ( 0, 0 ) int -> zero-ref single-def "field V27._length (fldOffset=0x8)" P-INDEP
+;* V65 tmp59 [V65,T33] ( 0, 0 ) int -> zero-ref single-def "field V27._length (fldOffset=0x8)" P-INDEP
;* V66 tmp60 [V66 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP
;* V67 tmp61 [V67 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP
; V68 tmp62 [V68,T24] ( 2, 0.88) byref -> x0 "field V32._reference (fldOffset=0x0)" P-INDEP
@@ -83,7 +83,7 @@
;* V72 tmp66 [V72 ] ( 0, 0 ) byref -> zero-ref "field V36._reference (fldOffset=0x0)" P-INDEP
;* V73 tmp67 [V73 ] ( 0, 0 ) int -> zero-ref "field V36._length (fldOffset=0x8)" P-INDEP
; V74 tmp68 [V74,T20] ( 2, 0.97) byref -> x0 single-def "field V37._reference (fldOffset=0x0)" P-INDEP
-;* V75 tmp69 [V75,T34] ( 0, 0 ) int -> zero-ref single-def "field V37._length (fldOffset=0x8)" P-INDEP
+;* V75 tmp69 [V75,T32] ( 0, 0 ) int -> zero-ref single-def "field V37._length (fldOffset=0x8)" P-INDEP
; V76 tmp70 [V76,T25] ( 2, 0.88) byref -> x0 single-def "field V39._reference (fldOffset=0x0)" P-INDEP
; V77 tmp71 [V77,T30] ( 2, 0.88) int -> x1 single-def "field V39._length (fldOffset=0x8)" P-INDEP
;* V78 tmp72 [V78 ] ( 0, 0 ) byref -> zero-ref single-def "field V40._reference (fldOffset=0x0)" P-INDEP
@@ -91,23 +91,25 @@
;* V80 tmp74 [V80 ] ( 0, 0 ) byref -> zero-ref "field V45._reference (fldOffset=0x0)" P-INDEP
;* V81 tmp75 [V81 ] ( 0, 0 ) int -> zero-ref "field V45._length (fldOffset=0x8)" P-INDEP
; V82 tmp76 [V82,T26] ( 2, 0.88) byref -> x2 single-def "field V46._reference (fldOffset=0x0)" P-INDEP
-;* V83 tmp77 [V83,T36] ( 0, 0 ) int -> zero-ref single-def "field V46._length (fldOffset=0x8)" P-INDEP
+;* V83 tmp77 [V83,T34] ( 0, 0 ) int -> zero-ref single-def "field V46._length (fldOffset=0x8)" P-INDEP
; V84 tmp78 [V84,T04] ( 3, 6 ) ref -> x0 single-def "argument with side effect"
; V85 PSPSym [V85,T18] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym"
-; V86 cse0 [V86,T16] ( 3, 1.41) byref -> x21 "CSE - moderate"
-; V87 cse1 [V87,T17] ( 3, 1.41) byref -> x20 "CSE - conservative"
+; V86 cse0 [V86,T16] ( 3, 1.41) byref -> x22 "CSE - moderate"
+; V87 cse1 [V87,T17] ( 3, 1.41) byref -> x25 "CSE - conservative"
; V88 cse2 [V88,T08] ( 3, 3 ) ref -> x20 "CSE - aggressive"
;
; Lcl frame size = 24
G_M39688_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]!
+ stp fp, lr, [sp, #-0x60]!
stp x19, x20, [sp, #0x28]
- str x21, [sp, #0x38]
+ stp x21, x22, [sp, #0x38]
+ stp x23, x24, [sp, #0x48]
+ str x25, [sp, #0x58]
mov fp, sp
- add x0, sp, #64
+ add x0, sp, #96
str x0, [fp, #0x20] // [V85 PSPSym]
- ;; size=24 bbWeight=1 PerfScore 5.00
+ ;; size=32 bbWeight=1 PerfScore 7.00
G_M39688_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -155,17 +157,17 @@ G_M39688_IG03: ; bbWeight=1, gcVars=0000000000000020 {V00}, gcrefRegs=800
ldr x2, [x2]
blr x2
; gcr arg pop 0
- cbz x19, G_M39688_IG06
+ cbz x19, G_M39688_IG14
;; size=92 bbWeight=1 PerfScore 20.50
G_M39688_IG04: ; bbWeight=0.47, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x08]
- cbz w0, G_M39688_IG06
+ cbz w0, G_M39688_IG14
;; size=8 bbWeight=0.47 PerfScore 1.87
G_M39688_IG05: ; bbWeight=0.49, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- movz x21, #0xD1FFAB1E
- movk x21, #0xD1FFAB1E LSL #16
- movk x21, #0xD1FFAB1E LSL #32
- mov x0, x21
+ movz x22, #0xD1FFAB1E
+ movk x22, #0xD1FFAB1E LSL #16
+ movk x22, #0xD1FFAB1E LSL #32
+ mov x0, x22
; byrRegs +[x0]
mov w1, #15
movz x2, #0xD1FFAB1E // code for System.IO.Path:IsPathRooted(System.ReadOnlySpan`1[ushort]):ubyte
@@ -173,25 +175,15 @@ G_M39688_IG05: ; bbWeight=0.49, gcrefRegs=180000 {x19 x20}, byrefRegs=000
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
- ; byrRegs -[x0] +[x21]
+ ; byrRegs -[x0] +[x22]
; gcr arg pop 0
- cbz w0, G_M39688_IG07
+ cbnz w0, G_M39688_IG14
;; size=44 bbWeight=0.49 PerfScore 4.38
-G_M39688_IG06: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- ; byrRegs -[x21]
- movz x21, #0xD1FFAB1E
- movk x21, #0xD1FFAB1E LSL #16
- movk x21, #0xD1FFAB1E LSL #32
- b G_M39688_IG08
- ;; size=16 bbWeight=0.50 PerfScore 1.25
-G_M39688_IG07: ; bbWeight=0.44, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref
- ; gcrRegs +[x19]
- ; byrRegs +[x21]
+G_M39688_IG06: ; bbWeight=0.44, gcrefRegs=180000 {x19 x20}, byrefRegs=400000 {x22}, byref
add x0, x19, #12
; byrRegs +[x0]
ldr w1, [x19, #0x08]
- mov x2, x21
+ mov x2, x22
; byrRegs +[x2]
mov w3, #15
movz x4, #0xD1FFAB1E // code for <unknown method>
@@ -200,18 +192,18 @@ G_M39688_IG07: ; bbWeight=0.44, gcrefRegs=180000 {x19 x20}, byrefRegs=200
ldr x4, [x4]
blr x4
; gcrRegs -[x19] +[x0]
- ; byrRegs -[x0 x2 x21]
+ ; byrRegs -[x0 x2 x22]
; gcr arg pop 0
mov x21, x0
; gcrRegs +[x21]
;; size=40 bbWeight=0.44 PerfScore 4.61
-G_M39688_IG08: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M39688_IG07: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
ldr x0, [fp, #0x18] // [V00 loc0]
; gcrRegs +[x0]
- ldr x19, [x0, #0x08]
- ; gcrRegs +[x19]
- mov x0, x19
+ ldr x23, [x0, #0x08]
+ ; gcrRegs +[x23]
+ mov x0, x23
mov x1, x20
; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for <unknown method>
@@ -233,17 +225,17 @@ G_M39688_IG08: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {
ldr x2, [x2]
blr x2
; gcr arg pop 0
- cbz x19, G_M39688_IG11
+ cbz x23, G_M39688_IG15
;; size=84 bbWeight=1 PerfScore 21.00
-G_M39688_IG09: ; bbWeight=0.47, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
- ldr w0, [x19, #0x08]
- cbz w0, G_M39688_IG11
+G_M39688_IG08: ; bbWeight=0.47, gcrefRegs=A00000 {x21 x23}, byrefRegs=0000 {}, byref, isz
+ ldr w0, [x23, #0x08]
+ cbz w0, G_M39688_IG15
;; size=8 bbWeight=0.47 PerfScore 1.87
-G_M39688_IG10: ; bbWeight=0.49, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
- movz x20, #0xD1FFAB1E
- movk x20, #0xD1FFAB1E LSL #16
- movk x20, #0xD1FFAB1E LSL #32
- mov x0, x20
+G_M39688_IG09: ; bbWeight=0.49, gcrefRegs=A00000 {x21 x23}, byrefRegs=0000 {}, byref, isz
+ movz x25, #0xD1FFAB1E
+ movk x25, #0xD1FFAB1E LSL #16
+ movk x25, #0xD1FFAB1E LSL #32
+ mov x0, x25
; byrRegs +[x0]
mov w1, #13
movz x2, #0xD1FFAB1E // code for System.IO.Path:IsPathRooted(System.ReadOnlySpan`1[ushort]):ubyte
@@ -251,25 +243,15 @@ G_M39688_IG10: ; bbWeight=0.49, gcrefRegs=280000 {x19 x21}, byrefRegs=000
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
- ; byrRegs -[x0] +[x20]
+ ; byrRegs -[x0] +[x25]
; gcr arg pop 0
- cbz w0, G_M39688_IG12
+ cbnz w0, G_M39688_IG15
;; size=44 bbWeight=0.49 PerfScore 4.38
-G_M39688_IG11: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- ; byrRegs -[x20]
- movz x20, #0xD1FFAB1E
- movk x20, #0xD1FFAB1E LSL #16
- movk x20, #0xD1FFAB1E LSL #32
- b G_M39688_IG13
- ;; size=16 bbWeight=0.50 PerfScore 1.25
-G_M39688_IG12: ; bbWeight=0.44, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 {x20}, byref
- ; gcrRegs +[x19]
- ; byrRegs +[x20]
- add x0, x19, #12
+G_M39688_IG10: ; bbWeight=0.44, gcrefRegs=A00000 {x21 x23}, byrefRegs=2000000 {x25}, byref
+ add x0, x23, #12
; byrRegs +[x0]
- ldr w1, [x19, #0x08]
- mov x2, x20
+ ldr w1, [x23, #0x08]
+ mov x2, x25
; byrRegs +[x2]
mov w3, #13
movz x4, #0xD1FFAB1E // code for <unknown method>
@@ -277,13 +259,13 @@ G_M39688_IG12: ; bbWeight=0.44, gcrefRegs=280000 {x19 x21}, byrefRegs=100
movk x4, #0xD1FFAB1E LSL #32
ldr x4, [x4]
blr x4
- ; gcrRegs -[x19] +[x0]
- ; byrRegs -[x0 x2 x20]
+ ; gcrRegs -[x23] +[x0]
+ ; byrRegs -[x0 x2 x25]
; gcr arg pop 0
- mov x20, x0
- ; gcrRegs +[x20]
+ mov x24, x0
+ ; gcrRegs +[x24]
;; size=40 bbWeight=0.44 PerfScore 4.61
-G_M39688_IG13: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+G_M39688_IG11: ; bbWeight=1, gcrefRegs=1200000 {x21 x24}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
movz x1, #0xD1FFAB1E
...
+8 (+4.65%) : 150905.dasm - System.Net.SocketAddress:set_Size(int):this (FullOpts)
@@ -33,23 +33,33 @@ G_M2431_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
ldr w20, [x1, #0x08]
cmp w19, w20
- blt G_M2431_IG04
+ bge G_M2431_IG05
;; size=16 bbWeight=1 PerfScore 7.50
-G_M2431_IG03: ; bbWeight=0.06, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M2431_IG03: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1]
+ tbz w19, #31, G_M2431_IG07
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M2431_IG04: ; bbWeight=0.44, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ b G_M2431_IG10
+ ;; size=4 bbWeight=0.44 PerfScore 0.44
+G_M2431_IG05: ; bbWeight=0.06, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x0]
cmp w19, w20
- bgt G_M2431_IG06
+ bgt G_M2431_IG09
;; size=8 bbWeight=0.06 PerfScore 0.10
-G_M2431_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- tbnz w19, #31, G_M2431_IG07
+G_M2431_IG06: ; bbWeight=0.05, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ b G_M2431_IG03
+ ;; size=4 bbWeight=0.05 PerfScore 0.05
+G_M2431_IG07: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
str w19, [x0, #0x10]
- ;; size=8 bbWeight=1 PerfScore 2.00
-G_M2431_IG05: ; bbWeight=1, epilog, nogc, extend
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M2431_IG08: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 3.00
-G_M2431_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M2431_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
@@ -70,7 +80,7 @@ G_M2431_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
; gcrRegs -[x2]
brk_windows #0
;; size=56 bbWeight=0 PerfScore 0.00
-G_M2431_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M2431_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -91,7 +101,7 @@ G_M2431_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_windows #0
;; size=56 bbWeight=0 PerfScore 0.00
-; Total bytes of code 172, prolog size 12, PerfScore 15.60, instruction count 43, allocated bytes for code 172 (MethodHash=f3e5f680) for method System.Net.SocketAddress:set_Size(int):this (FullOpts)
+; Total bytes of code 180, prolog size 12, PerfScore 16.08, instruction count 45, allocated bytes for code 180 (MethodHash=f3e5f680) for method System.Net.SocketAddress:set_Size(int):this (FullOpts)
; ============================================================
Unwind Info:
@@ -102,7 +112,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
+ Function Length : 45 (0x0002d) Actual length = 180 (0x0000b4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+12 (+7.32%) : 73214.dasm - System.Collections.CaseInsensitiveHashCodeProvider:GetHashCode(System.Object):int:this (FullOpts)
@@ -10,7 +10,7 @@
;
; V00 this [V00,T01] ( 3, 2.50) ref -> x0 this class-hnd single-def <System.Collections.CaseInsensitiveHashCodeProvider>
; V01 arg1 [V01,T00] ( 6, 5 ) ref -> x1 class-hnd single-def <System.Object>
-; V02 loc0 [V02,T04] ( 3, 1.50) ref -> x1 class-hnd exact <System.String>
+; V02 loc0 [V02,T06] ( 3, 1.50) ref -> x1 class-hnd exact <System.String>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String>
; V05 tmp2 [V05,T02] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Globalization.CompareInfo>
@@ -18,8 +18,8 @@
;* V07 tmp4 [V07 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V08 tmp5 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V09 tmp6 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V10 tmp7 [V10,T06] ( 2, 2 ) int -> x1 "Inlining Arg"
-; V11 tmp8 [V11,T05] ( 2, 2 ) byref -> x2 single-def "Inlining Arg"
+; V10 tmp7 [V10,T05] ( 2, 2 ) int -> x1 "Inlining Arg"
+; V11 tmp8 [V11,T04] ( 2, 2 ) byref -> x2 single-def "Inlining Arg"
;* V12 tmp9 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp10 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp11 [V14 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
@@ -32,22 +32,23 @@
; V21 tmp18 [V21,T10] ( 2, 1 ) int -> x1 "field V08._length (fldOffset=0x8)" P-INDEP
;* V22 tmp19 [V22 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP
;* V23 tmp20 [V23 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V24 cse0 [V24,T03] ( 3, 2.50) long -> x2 "CSE - aggressive"
+; V24 cse0 [V24,T03] ( 3, 2.50) long -> x19 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M64002_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M64002_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0-x1]
cbz x1, G_M64002_IG07
- ldr x2, [x1]
- movz x3, #0xD1FFAB1E
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- cmp x2, x3
+ ldr x19, [x1]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ cmp x19, x2
bne G_M64002_IG05
;; size=28 bbWeight=1 PerfScore 7.00
G_M64002_IG03: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
@@ -72,23 +73,25 @@ G_M64002_IG03: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}
; byrRegs -[x1]
;; size=52 bbWeight=0.50 PerfScore 8.50
G_M64002_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M64002_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x1]
mov x0, x1
; gcrRegs +[x0]
- ldr x1, [x2, #0x48]
+ ldr x1, [x19, #0x48]
; gcrRegs -[x1]
ldr x1, [x1, #0x18]
blr x1
; gcrRegs -[x0]
;; size=16 bbWeight=0.50 PerfScore 3.75
G_M64002_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M64002_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
@@ -105,18 +108,18 @@ G_M64002_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_windows #0
;; size=44 bbWeight=0 PerfScore 0.00
-; Total bytes of code 164, prolog size 8, PerfScore 22.75, instruction count 41, allocated bytes for code 164 (MethodHash=067e05fd) for method System.Collections.CaseInsensitiveHashCodeProvider:GetHashCode(System.Object):int:this (FullOpts)
+; Total bytes of code 176, prolog size 12, PerfScore 25.75, instruction count 44, allocated bytes for code 176 (MethodHash=067e05fd) for method System.Collections.CaseInsensitiveHashCodeProvider:GetHashCode(System.Object):int:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -127,7 +130,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
Details
Improvements/regressions per collection
| Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
| benchmarks.run.windows.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| benchmarks.run_pgo.windows.arm64.checked.mch |
7,214 |
2,369 |
2,105 |
2,740 |
-20,928 |
+22,124 |
| benchmarks.run_tiered.windows.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| coreclr_tests.run.windows.arm64.checked.mch |
3,298 |
793 |
1,319 |
1,186 |
-6,992 |
+28,188 |
| libraries.crossgen2.windows.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| libraries.pmi.windows.arm64.checked.mch |
701 |
116 |
199 |
386 |
-876 |
+1,704 |
| libraries_tests.run.windows.arm64.Release.mch |
17,629 |
4,925 |
6,368 |
6,336 |
-60,896 |
+342,184 |
| librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
1,401 |
265 |
364 |
772 |
-2,480 |
+3,960 |
| realworld.run.windows.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| smoke_tests.nativeaot.windows.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
|
30,243 |
8,468 |
10,355 |
11,420 |
-92,172 |
+398,160 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.windows.arm64.checked.mch |
24,522 |
4 |
24,518 |
0 (0.00%) |
0 (0.00%) |
| benchmarks.run_pgo.windows.arm64.checked.mch |
96,538 |
48,818 |
47,720 |
0 (0.00%) |
51 (0.05%) |
| benchmarks.run_tiered.windows.arm64.checked.mch |
48,998 |
36,800 |
12,198 |
0 (0.00%) |
0 (0.00%) |
| coreclr_tests.run.windows.arm64.checked.mch |
596,024 |
363,098 |
232,926 |
0 (0.00%) |
1 (0.00%) |
| libraries.crossgen2.windows.arm64.checked.mch |
275,145 |
15 |
275,130 |
0 (0.00%) |
0 (0.00%) |
| libraries.pmi.windows.arm64.checked.mch |
306,901 |
6 |
306,895 |
0 (0.00%) |
0 (0.00%) |
| libraries_tests.run.windows.arm64.Release.mch |
645,146 |
466,906 |
178,240 |
0 (0.00%) |
32 (0.00%) |
| librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
317,296 |
21,619 |
295,677 |
0 (0.00%) |
0 (0.00%) |
| realworld.run.windows.arm64.checked.mch |
33,318 |
3 |
33,315 |
0 (0.00%) |
0 (0.00%) |
| smoke_tests.nativeaot.windows.arm64.checked.mch |
24,176 |
8 |
24,168 |
0 (0.00%) |
0 (0.00%) |
|
2,368,064 |
937,277 |
1,430,787 |
0 (0.00%) |
84 (0.00%) |
jit-analyze output
benchmarks.run_pgo.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 46686644 (overridden on cmd)
Total bytes of diff: 46687840 (overridden on cmd)
Total bytes of delta: 1196 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
296 : 62929.dasm (29.72 % of base)
256 : 82670.dasm (37.87 % of base)
212 : 49250.dasm (35.57 % of base)
168 : 83669.dasm (4.75 % of base)
144 : 65627.dasm (4.65 % of base)
144 : 91881.dasm (4.65 % of base)
136 : 41037.dasm (3.78 % of base)
132 : 45358.dasm (2.94 % of base)
132 : 64984.dasm (2.94 % of base)
124 : 82281.dasm (3.01 % of base)
108 : 24117.dasm (3.41 % of base)
104 : 75673.dasm (3.37 % of base)
104 : 96050.dasm (3.34 % of base)
104 : 44279.dasm (3.37 % of base)
92 : 75459.dasm (2.93 % of base)
92 : 75194.dasm (2.95 % of base)
92 : 90966.dasm (2.95 % of base)
92 : 33592.dasm (2.93 % of base)
92 : 50268.dasm (2.93 % of base)
92 : 76694.dasm (2.95 % of base)
Top file improvements (bytes):
-68 : 90928.dasm (-1.63 % of base)
-68 : 48371.dasm (-2.39 % of base)
-68 : 50514.dasm (-1.64 % of base)
-56 : 70836.dasm (-1.99 % of base)
-56 : 80388.dasm (-1.99 % of base)
-52 : 66482.dasm (-1.24 % of base)
-48 : 70909.dasm (-6.94 % of base)
-48 : 79277.dasm (-6.94 % of base)
-48 : 82092.dasm (-6.94 % of base)
-48 : 88207.dasm (-6.94 % of base)
-48 : 93988.dasm (-2.21 % of base)
-48 : 26664.dasm (-6.94 % of base)
-48 : 27714.dasm (-6.94 % of base)
-48 : 48363.dasm (-6.94 % of base)
-48 : 48449.dasm (-6.94 % of base)
-48 : 72802.dasm (-6.94 % of base)
-48 : 90981.dasm (-6.94 % of base)
-40 : 31159.dasm (-2.92 % of base)
-36 : 48869.dasm (-0.81 % of base)
-36 : 76477.dasm (-3.28 % of base)
80 total files with Code Size differences (30 improved, 50 regressed), 20 unchanged.
Top method regressions (bytes):
296 (29.72 % of base) : 62929.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
256 (37.87 % of base) : 82670.dasm - System.Linq.Enumerable:Count[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):int (Tier1)
212 (35.57 % of base) : 49250.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1)
168 (4.75 % of base) : 83669.dasm - System.Reflection.CustomAttribute:AddCustomAttributes(byref,System.Reflection.RuntimeModule,int,System.RuntimeType,ubyte,System.RuntimeType+ListBuilder`1[System.Object]) (Tier1)
144 (4.65 % of base) : 65627.dasm - System.Reflection.CustomAttribute:AddCustomAttributes(byref,System.Reflection.RuntimeModule,int,System.RuntimeType,ubyte,System.RuntimeType+ListBuilder`1[System.Object]) (Tier1)
144 (4.65 % of base) : 91881.dasm - System.Reflection.CustomAttribute:AddCustomAttributes(byref,System.Reflection.RuntimeModule,int,System.RuntimeType,ubyte,System.RuntimeType+ListBuilder`1[System.Object]) (Tier1)
136 (3.78 % of base) : 41037.dasm - System.Reflection.CustomAttribute:AddCustomAttributes(byref,System.Reflection.RuntimeModule,int,System.RuntimeType,ubyte,System.RuntimeType+ListBuilder`1[System.Object]) (Tier1)
132 (2.94 % of base) : 45358.dasm - System.Reflection.CustomAttribute:AddCustomAttributes(byref,System.Reflection.RuntimeModule,int,System.RuntimeType,ubyte,System.RuntimeType+ListBuilder`1[System.Object]) (Tier1)
132 (2.94 % of base) : 64984.dasm - System.Reflection.CustomAttribute:AddCustomAttributes(byref,System.Reflection.RuntimeModule,int,System.RuntimeType,ubyte,System.RuntimeType+ListBuilder`1[System.Object]) (Tier1)
124 (3.01 % of base) : 82281.dasm - System.Reflection.CustomAttribute:AddCustomAttributes(byref,System.Reflection.RuntimeModule,int,System.RuntimeType,ubyte,System.RuntimeType+ListBuilder`1[System.Object]) (Tier1)
108 (3.41 % of base) : 24117.dasm - System.Reflection.CustomAttribute:AddCustomAttributes(byref,System.Reflection.RuntimeModule,int,System.RuntimeType,ubyte,System.RuntimeType+ListBuilder`1[System.Object]) (Tier1)
104 (3.37 % of base) : 75673.dasm - System.Reflection.CustomAttribute:AddCustomAttributes(byref,System.Reflection.RuntimeModule,int,System.RuntimeType,ubyte,System.RuntimeType+ListBuilder`1[System.Object]) (Tier1)
104 (3.34 % of base) : 96050.dasm - System.Reflection.CustomAttribute:AddCustomAttributes(byref,System.Reflection.RuntimeModule,int,System.RuntimeType,ubyte,System.RuntimeType+ListBuilder`1[System.Object]) (Tier1)
104 (3.37 % of base) : 44279.dasm - System.Reflection.CustomAttribute:AddCustomAttributes(byref,System.Reflection.RuntimeModule,int,System.RuntimeType,ubyte,System.RuntimeType+ListBuilder`1[System.Object]) (Tier1)
92 (2.93 % of base) : 75459.dasm - System.Reflection.CustomAttribute:AddCustomAttributes(byref,System.Reflection.RuntimeModule,int,System.RuntimeType,ubyte,System.RuntimeType+ListBuilder`1[System.Object]) (Tier1)
92 (2.95 % of base) : 75194.dasm - System.Reflection.CustomAttribute:AddCustomAttributes(byref,System.Reflection.RuntimeModule,int,System.RuntimeType,ubyte,System.RuntimeType+ListBuilder`1[System.Object]) (Tier1)
92 (2.95 % of base) : 90966.dasm - System.Reflection.CustomAttribute:AddCustomAttributes(byref,System.Reflection.RuntimeModule,int,System.RuntimeType,ubyte,System.RuntimeType+ListBuilder`1[System.Object]) (Tier1)
92 (2.93 % of base) : 33592.dasm - System.Reflection.CustomAttribute:AddCustomAttributes(byref,System.Reflection.RuntimeModule,int,System.RuntimeType,ubyte,System.RuntimeType+ListBuilder`1[System.Object]) (Tier1)
92 (2.93 % of base) : 50268.dasm - System.Reflection.CustomAttribute:AddCustomAttributes(byref,System.Reflection.RuntimeModule,int,System.RuntimeType,ubyte,System.RuntimeType+ListBuilder`1[System.Object]) (Tier1)
92 (2.95 % of base) : 76694.dasm - System.Reflection.CustomAttribute:AddCustomAttributes(byref,System.Reflection.RuntimeModule,int,System.RuntimeType,ubyte,System.RuntimeType+ListBuilder`1[System.Object]) (Tier1)
Top method improvements (bytes):
-68 (-2.39 % of base) : 48371.dasm - System.Attribute:GetCustomAttributes(System.Reflection.MemberInfo,System.Type,ubyte):System.Attribute[] (Tier1)
-68 (-1.63 % of base) : 90928.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
-68 (-1.64 % of base) : 50514.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)
-56 (-1.99 % of base) : 70836.dasm - System.Attribute:GetCustomAttributes(System.Reflection.MemberInfo,System.Type,ubyte):System.Attribute[] (Tier1)
-56 (-1.99 % of base) : 80388.dasm - System.Attribute:GetCustomAttributes(System.Reflection.MemberInfo,System.Type,ubyte):System.Attribute[] (Tier1)
-52 (-1.24 % of base) : 66482.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
-48 (-6.94 % of base) : 70909.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 79277.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 82092.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 88207.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 26664.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 27714.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 48363.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 48449.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 72802.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 90981.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-2.21 % of base) : 93988.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon,System.Decimal](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.Decimal],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.Decimal] (Tier1)
-40 (-2.92 % of base) : 31159.dasm - System.Linq.Enumerable:<AggregateByIterator>g__PopulateDictionary|75_0[System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.IEnumerator`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`3[System.__Canon,System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (Tier1)
-36 (-0.81 % of base) : 48869.dasm - NeuralJagged:read_data_file():this (Tier1)
-36 (-3.28 % of base) : 76477.dasm - System.Net.Security.SslStream:DecryptData(int):System.Net.SecurityStatusPal:this (Tier1)
Top method regressions (percentages):
256 (37.87 % of base) : 82670.dasm - System.Linq.Enumerable:Count[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):int (Tier1)
212 (35.57 % of base) : 49250.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1)
296 (29.72 % of base) : 62929.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
12 (12.00 % of base) : 68495.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:IsInDocumentationComment(Microsoft.CodeAnalysis.SyntaxNode):ubyte (Tier1)
28 (11.11 % of base) : 63518.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDependencies(System.Collections.Immutable.ImmutableArray`1[System.__Canon]):this (Tier1)
24 (10.91 % of base) : 20406.dasm - System.MemoryExtensions:Trim(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Tier1)
24 (10.91 % of base) : 48583.dasm - System.MemoryExtensions:Trim(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Tier1)
16 (9.30 % of base) : 63767.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass1:CanScheduleToStack(Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol):ubyte:this (Tier1)
28 (7.87 % of base) : 79807.dasm - System.Linq.Utilities+<>c__DisplayClass1_0`1[System.__Canon]:<CombinePredicates>b__0(System.__Canon):ubyte:this (Tier1)
12 (7.69 % of base) : 82794.dasm - System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
12 (7.69 % of base) : 43983.dasm - System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
12 (7.69 % of base) : 31577.dasm - System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
12 (7.69 % of base) : 71772.dasm - System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
12 (7.69 % of base) : 78557.dasm - System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
12 (5.45 % of base) : 63037.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:get_IsScriptConstructor():ubyte:this (Tier1)
12 (5.26 % of base) : 63152.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:IsDefaultValueTypeConstructor(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):ubyte (Tier1)
12 (5.26 % of base) : 74717.dasm - System.Reflection.TypeNameParser:get_Peek():int:this (Tier1)
12 (5.26 % of base) : 21526.dasm - System.Reflection.TypeNameParser:get_Peek():int:this (Tier1)
12 (5.26 % of base) : 3958.dasm - System.Reflection.TypeNameParser:get_Peek():int:this (Tier1)
32 (4.97 % of base) : 79812.dasm - System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
Top method improvements (percentages):
-48 (-6.94 % of base) : 70909.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 79277.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 82092.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 88207.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 26664.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 27714.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 48363.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 48449.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 72802.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-48 (-6.94 % of base) : 90981.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-28 (-5.56 % of base) : 66942.dasm - System.Collections.Concurrent.ConcurrentStack`1[System.__Canon]:TryPopCore(byref):ubyte:this (Tier1)
-24 (-5.31 % of base) : 28928.dasm - System.Threading.ThreadPoolWorkQueue:TryStartProcessingHighPriorityWorkItemsAndDequeue(System.Threading.ThreadPoolWorkQueueThreadLocals,byref):ubyte:this (Tier1)
-28 (-5.19 % of base) : 66943.dasm - System.Collections.Concurrent.ConcurrentStack`1[System.__Canon]:TryPopCore(int,byref):int:this (Tier1)
-8 (-4.88 % of base) : 4349.dasm - System.Threading.ThreadInt64PersistentCounter:Increment(System.Object) (Tier1)
-8 (-4.76 % of base) : 95111.dasm - System.Collections.Concurrent.ConcurrentQueue`1[System.__Canon]:Enqueue(System.__Canon):this (Tier1)
-8 (-4.55 % of base) : 88099.dasm - System.Reflection.MetadataEnumResult:get_Item(int):int:this (Tier1)
-36 (-4.41 % of base) : 91246.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerDoWork(System.Threading.PortableThreadPool,byref) (Tier1)
-12 (-4.29 % of base) : 82180.dasm - BenchmarksGame.KNucleotide:KFrequency(int,int):this (Tier1-OSR)
-4 (-4.17 % of base) : 68398.dasm - Microsoft.CodeAnalysis.ChildSyntaxList+Enumerator:TryMoveNextAndGetCurrent(byref):ubyte:this (Tier1)
-8 (-3.85 % of base) : 28953.dasm - System.Threading.TimerQueueTimer+<>c:<.cctor>b__30_0(System.Object):this (Tier1)
coreclr_tests.run.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 496328272 (overridden on cmd)
Total bytes of diff: 496349468 (overridden on cmd)
Total bytes of delta: 21196 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
1412 : 83383.dasm (56.66 % of base)
1404 : 83680.dasm (57.45 % of base)
1040 : 391507.dasm (29.31 % of base)
1008 : 386969.dasm (27.27 % of base)
872 : 391741.dasm (33.69 % of base)
864 : 387578.dasm (33.38 % of base)
860 : 391923.dasm (62.32 % of base)
824 : 392531.dasm (39.77 % of base)
788 : 388161.dasm (57.10 % of base)
684 : 391922.dasm (69.80 % of base)
648 : 392511.dasm (67.50 % of base)
632 : 391512.dasm (30.86 % of base)
628 : 387384.dasm (30.66 % of base)
532 : 387650.dasm (17.48 % of base)
468 : 387022.dasm (23.31 % of base)
428 : 391544.dasm (21.06 % of base)
348 : 267901.dasm (35.22 % of base)
312 : 387354.dasm (23.15 % of base)
312 : 391558.dasm (23.08 % of base)
252 : 386813.dasm (44.06 % of base)
Top file improvements (bytes):
-180 : 391550.dasm (-4.22 % of base)
-108 : 387116.dasm (-2.52 % of base)
-100 : 389859.dasm (-2.46 % of base)
-88 : 392603.dasm (-2.14 % of base)
-64 : 542347.dasm (-2.18 % of base)
-64 : 542351.dasm (-2.18 % of base)
-64 : 542353.dasm (-2.17 % of base)
-64 : 542357.dasm (-2.17 % of base)
-64 : 542332.dasm (-2.22 % of base)
-64 : 542338.dasm (-2.22 % of base)
-60 : 542340.dasm (-2.21 % of base)
-60 : 542344.dasm (-2.21 % of base)
-52 : 390490.dasm (-1.26 % of base)
-52 : 391737.dasm (-2.50 % of base)
-52 : 387549.dasm (-2.50 % of base)
-48 : 387492.dasm (-1.99 % of base)
-48 : 496056.dasm (-1.55 % of base)
-48 : 535334.dasm (-1.16 % of base)
-48 : 356655.dasm (-2.11 % of base)
-48 : 392759.dasm (-1.21 % of base)
81 total files with Code Size differences (36 improved, 45 regressed), 20 unchanged.
Top method regressions (bytes):
1412 (56.66 % of base) : 83383.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[System.__Canon,ubyte]:ToArray():ubyte[]:this (Tier1)
1404 (57.45 % of base) : 83680.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[System.__Canon,byte]:ToArray():byte[]:this (Tier1)
1040 (29.31 % of base) : 391507.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,byref):ubyte:this (Tier1)
1008 (27.27 % of base) : 386969.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,byref):ubyte:this (Tier1)
872 (33.69 % of base) : 391741.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,byref):ubyte:this (Tier1)
864 (33.38 % of base) : 387578.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,byref):ubyte:this (Tier1)
860 (62.32 % of base) : 391923.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryAddOrGetExisting(System.__Canon,byref):System.__Canon:this (Tier1-OSR)
824 (39.77 % of base) : 392531.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,byref):ubyte:this (Tier1)
788 (57.10 % of base) : 388161.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryAddOrGetExisting(System.__Canon,byref):System.__Canon:this (Tier1-OSR)
684 (69.80 % of base) : 391922.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,byref):ubyte:this (Tier1-OSR)
648 (67.50 % of base) : 392511.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,byref):ubyte:this (Tier1-OSR)
632 (30.86 % of base) : 391512.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,byref):ubyte:this (Tier1)
628 (30.66 % of base) : 387384.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,byref):ubyte:this (Tier1)
532 (17.48 % of base) : 387650.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+ArrayTypeKey,System.__Canon]:TryAddOrGetExisting(System.__Canon,byref):System.__Canon:this (Tier1)
468 (23.31 % of base) : 387022.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+ArrayTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+ArrayTypeKey,byref):ubyte:this (Tier1)
428 (21.06 % of base) : 391544.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+ArrayTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+ArrayTypeKey,byref):ubyte:this (Tier1)
348 (35.22 % of base) : 267901.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:ToArray():System.__Canon[]:this (Tier1)
312 (23.15 % of base) : 387354.dasm - Internal.TypeSystem.TypeSystemConstraintsHelpers:VerifyGenericParamConstraint(Internal.TypeSystem.InstantiationContext,Internal.TypeSystem.GenericParameterDesc,Internal.TypeSystem.InstantiationContext,Internal.TypeSystem.TypeDesc):ubyte (Tier1)
312 (23.08 % of base) : 391558.dasm - Internal.TypeSystem.TypeSystemConstraintsHelpers:VerifyGenericParamConstraint(Internal.TypeSystem.InstantiationContext,Internal.TypeSystem.GenericParameterDesc,Internal.TypeSystem.InstantiationContext,Internal.TypeSystem.TypeDesc):ubyte (Tier1)
252 (44.06 % of base) : 386813.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
Top method improvements (bytes):
-180 (-4.22 % of base) : 391550.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:TryAddOrGetExisting(System.__Canon,byref):System.__Canon:this (Tier1)
-108 (-2.52 % of base) : 387116.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:TryAddOrGetExisting(System.__Canon,byref):System.__Canon:this (Tier1)
-100 (-2.46 % of base) : 389859.dasm - ILCompiler.DependencyAnalysisFramework.DependencyAnalyzer`2[ILCompiler.DependencyAnalysisFramework.NoLogStrategy`1[System.__Canon],System.__Canon]:ProcessMarkStack():this (Tier1)
-88 (-2.14 % of base) : 392603.dasm - ILCompiler.DependencyAnalysisFramework.DependencyAnalyzer`2[ILCompiler.DependencyAnalysisFramework.NoLogStrategy`1[System.__Canon],System.__Canon]:ProcessMarkStack():this (Tier1)
-64 (-2.22 % of base) : 542332.dasm - TestShufflingThunk.TestClass:Test2(int,int,int,int,TestShufflingThunk.SIntDouble,double,double,double,double,double,double,double,double,double,double,int):System.String (FullOpts)
-64 (-2.17 % of base) : 542353.dasm - TestShufflingThunk.TestClass:Test2MRB(int,int,int,int,TestShufflingThunk.SIntDouble,double,double,double,double,double,double,double,double,double,double,int):TestShufflingThunk.SLargeReturnStruct:this (FullOpts)
-64 (-2.18 % of base) : 542347.dasm - TestShufflingThunk.TestClass:Test2RB(int,int,int,int,TestShufflingThunk.SIntDouble,double,double,double,double,double,double,double,double,double,double,int):TestShufflingThunk.SLargeReturnStruct (FullOpts)
-64 (-2.22 % of base) : 542338.dasm - TestShufflingThunk.TestClass:Test6(int,int,int,int,int,TestShufflingThunk.SIntDouble,double,double,double,double,double,double,double,double,double,double):System.String (FullOpts)
-64 (-2.17 % of base) : 542357.dasm - TestShufflingThunk.TestClass:Test6MRB(int,int,int,int,int,TestShufflingThunk.SIntDouble,double,double,double,double,double,double,double,double,double,double):TestShufflingThunk.SLargeReturnStruct:this (FullOpts)
-64 (-2.18 % of base) : 542351.dasm - TestShufflingThunk.TestClass:Test6RB(int,int,int,int,int,TestShufflingThunk.SIntDouble,double,double,double,double,double,double,double,double,double,double):TestShufflingThunk.SLargeReturnStruct (FullOpts)
-60 (-2.21 % of base) : 542340.dasm - TestShufflingThunk.TestClass:Test2M(int,int,int,int,TestShufflingThunk.SIntDouble,double,double,double,double,double,double,double,double,double,double,int):System.String:this (FullOpts)
-60 (-2.21 % of base) : 542344.dasm - TestShufflingThunk.TestClass:Test6M(int,int,int,int,int,TestShufflingThunk.SIntDouble,double,double,double,double,double,double,double,double,double,double):System.String:this (FullOpts)
-52 (-1.26 % of base) : 390490.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.SignatureBuilder:EmitTypeSignature(Internal.TypeSystem.TypeDesc,ILCompiler.DependencyAnalysis.ReadyToRun.SignatureContext):this (Tier1)
-52 (-2.50 % of base) : 391737.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+FieldForInstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+FieldForInstantiatedTypeKey,byref):ubyte:this (Tier1)
-52 (-2.50 % of base) : 387549.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+FieldForInstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+FieldForInstantiatedTypeKey,byref):ubyte:this (Tier1)
-48 (-1.21 % of base) : 392759.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.SignatureBuilder:EmitTypeSignature(Internal.TypeSystem.TypeDesc,ILCompiler.DependencyAnalysis.ReadyToRun.SignatureContext):this (Tier1)
-48 (-1.55 % of base) : 496056.dasm - ImplicitByrefTailCalls:TestEntryPoint():int (FullOpts)
-48 (-1.99 % of base) : 387492.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,System.__Canon]:TryAddOrGetExisting(System.__Canon,byref):System.__Canon:this (Tier1)
-48 (-1.16 % of base) : 535334.dasm - Runtime_34587:ValidateArm():ubyte (FullOpts)
-48 (-2.11 % of base) : 356655.dasm - System.Reflection.Emit.TypeNameBuilder:AddAssemblyQualifiedName(System.Type,int):this (Tier1)
Top method regressions (percentages):
684 (69.80 % of base) : 391922.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,byref):ubyte:this (Tier1-OSR)
648 (67.50 % of base) : 392511.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,byref):ubyte:this (Tier1-OSR)
860 (62.32 % of base) : 391923.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryAddOrGetExisting(System.__Canon,byref):System.__Canon:this (Tier1-OSR)
1404 (57.45 % of base) : 83680.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[System.__Canon,byte]:ToArray():byte[]:this (Tier1)
788 (57.10 % of base) : 388161.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryAddOrGetExisting(System.__Canon,byref):System.__Canon:this (Tier1-OSR)
1412 (56.66 % of base) : 83383.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[System.__Canon,ubyte]:ToArray():ubyte[]:this (Tier1)
88 (53.66 % of base) : 308402.dasm - k:b(c):int:this (Tier1)
84 (50.00 % of base) : 308400.dasm - $:f(a,b,c):int (Tier1)
88 (48.89 % of base) : 308416.dasm - f:b(c):int:this (Tier1)
252 (44.06 % of base) : 386813.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
252 (44.06 % of base) : 391601.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
824 (39.77 % of base) : 392531.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,byref):ubyte:this (Tier1)
348 (35.22 % of base) : 267901.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:ToArray():System.__Canon[]:this (Tier1)
872 (33.69 % of base) : 391741.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,byref):ubyte:this (Tier1)
864 (33.38 % of base) : 387578.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,byref):ubyte:this (Tier1)
632 (30.86 % of base) : 391512.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,byref):ubyte:this (Tier1)
628 (30.66 % of base) : 387384.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,byref):ubyte:this (Tier1)
1040 (29.31 % of base) : 391507.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,byref):ubyte:this (Tier1)
1008 (27.27 % of base) : 386969.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,byref):ubyte:this (Tier1)
468 (23.31 % of base) : 387022.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+ArrayTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+ArrayTypeKey,byref):ubyte:this (Tier1)
Top method improvements (percentages):
-4 (-5.88 % of base) : 253450.dasm - System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
-4 (-5.88 % of base) : 253519.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
-12 (-5.56 % of base) : 274631.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature):System.Reflection.ParameterInfo[] (Tier1)
-12 (-5.56 % of base) : 309956.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature):System.Reflection.ParameterInfo[] (Tier1)
-16 (-5.19 % of base) : 593301.dasm - Microsoft.Build.Execution.BuildParameters:Initialize(Microsoft.Build.Collections.PropertyDictionary`1[Microsoft.Build.Execution.ProjectPropertyInstance],Microsoft.Build.Evaluation.ProjectRootElementCacheBase,Microsoft.Build.Evaluation.ToolsetProvider):this (FullOpts)
-36 (-4.37 % of base) : 267736.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1)
-180 (-4.22 % of base) : 391550.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:TryAddOrGetExisting(System.__Canon,byref):System.__Canon:this (Tier1)
-24 (-3.08 % of base) : 46842.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-4 (-2.70 % of base) : 268369.dasm - System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
-16 (-2.61 % of base) : 295734.dasm - System.SpanHelpers:NonPackedIndexOfAnyValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,short,int):int (Tier1)
-4 (-2.56 % of base) : 375419.dasm - System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
-108 (-2.52 % of base) : 387116.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:TryAddOrGetExisting(System.__Canon,byref):System.__Canon:this (Tier1)
-36 (-2.51 % of base) : 211127.dasm - System.Resources.ResourceManager:GetFirstResourceSet(System.Globalization.CultureInfo):System.Resources.ResourceSet:this (Instrumented Tier1)
-52 (-2.50 % of base) : 391737.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+FieldForInstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+FieldForInstantiatedTypeKey,byref):ubyte:this (Tier1)
-52 (-2.50 % of base) : 387549.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+FieldForInstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+FieldForInstantiatedTypeKey,byref):ubyte:this (Tier1)
-4 (-2.50 % of base) : 387510.dasm - Internal.TypeSystem.InstantiatedType:IsCanonicalSubtype(int):ubyte:this (Tier1)
-4 (-2.50 % of base) : 145057.dasm - System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
-4 (-2.50 % of base) : 308998.dasm - System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
-4 (-2.50 % of base) : 3338.dasm - System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
-4 (-2.50 % of base) : 26009.dasm - System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
libraries.pmi.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 80267692 (overridden on cmd)
Total bytes of diff: 80268520 (overridden on cmd)
Total bytes of delta: 828 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
48 : 200987.dasm (2.19 % of base)
40 : 187921.dasm (0.95 % of base)
40 : 208719.dasm (0.85 % of base)
32 : 254948.dasm (2.77 % of base)
32 : 241140.dasm (3.43 % of base)
32 : 215130.dasm (1.55 % of base)
28 : 9087.dasm (1.42 % of base)
28 : 181595.dasm (2.06 % of base)
28 : 198770.dasm (1.45 % of base)
28 : 198780.dasm (1.46 % of base)
28 : 2.dasm (0.63 % of base)
24 : 123016.dasm (3.03 % of base)
24 : 73744.dasm (4.29 % of base)
24 : 178210.dasm (0.92 % of base)
20 : 72798.dasm (2.12 % of base)
20 : 277339.dasm (0.51 % of base)
20 : 150231.dasm (0.79 % of base)
20 : 290781.dasm (1.36 % of base)
20 : 290874.dasm (1.37 % of base)
20 : 198222.dasm (1.25 % of base)
Top file improvements (bytes):
-44 : 218376.dasm (-1.93 % of base)
-24 : 281837.dasm (-1.02 % of base)
-24 : 186507.dasm (-1.27 % of base)
-24 : 186515.dasm (-1.28 % of base)
-20 : 240826.dasm (-2.42 % of base)
-20 : 240850.dasm (-2.42 % of base)
-20 : 277474.dasm (-0.44 % of base)
-16 : 152723.dasm (-0.47 % of base)
-16 : 281581.dasm (-1.77 % of base)
-16 : 3149.dasm (-5.19 % of base)
-16 : 154217.dasm (-1.52 % of base)
-12 : 277338.dasm (-0.84 % of base)
-12 : 260126.dasm (-2.17 % of base)
-12 : 259569.dasm (-1.55 % of base)
-12 : 268519.dasm (-2.16 % of base)
-12 : 77488.dasm (-1.51 % of base)
-12 : 134345.dasm (-0.33 % of base)
-12 : 161669.dasm (-0.33 % of base)
-12 : 231355.dasm (-0.49 % of base)
-12 : 235969.dasm (-0.59 % of base)
69 total files with Code Size differences (30 improved, 39 regressed), 20 unchanged.
Top method regressions (bytes):
48 (2.19 % of base) : 200987.dasm - System.Xml.Schema.TypedObject:Equals(System.Xml.Schema.TypedObject):ubyte:this (FullOpts)
40 (0.95 % of base) : 187921.dasm - System.Net.Http.HttpConnectionPool+<GetHttp3ConnectionAsync>d__86:MoveNext():this (FullOpts)
40 (0.85 % of base) : 208719.dasm - System.Xml.Serialization.XmlSerializationReader:ReadArray(System.String,System.String):System.Array:this (FullOpts)
32 (3.43 % of base) : 241140.dasm - System.CommandLine.EnvironmentVariablesDirective+EnvironmentVariablesDirectiveAction:SetEnvVars(System.CommandLine.ParseResult):this (FullOpts)
32 (2.77 % of base) : 254948.dasm - System.ComponentModel.PropertyTabAttribute:InitializeTabClasses():this (FullOpts)
32 (1.55 % of base) : 215130.dasm - System.Speech.Internal.Synthesis.ConvertTextFrag:ToSapi(System.Collections.Generic.List`1[System.Speech.Synthesis.TtsEngine.TextFragment],byref):ubyte (FullOpts)
28 (0.63 % of base) : 2.dasm - PrepareMethodinator:Main(System.String[]):int (FullOpts)
28 (2.06 % of base) : 181595.dasm - System.Data.Common.ObjectStorage:CompareWithFamilies(System.Object,System.Object):int:this (FullOpts)
28 (1.42 % of base) : 9087.dasm - System.Enum:TryParseByName[short](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
28 (1.45 % of base) : 198770.dasm - System.Xml.XmlTextReaderImpl+<ReadContentAsBinHexAsync>d__485:MoveNext():this (FullOpts)
28 (1.46 % of base) : 198780.dasm - System.Xml.XmlTextReaderImpl+<ReadElementContentAsBinHexAsync>d__488:MoveNext():this (FullOpts)
24 (4.29 % of base) : 73744.dasm - Microsoft.CodeAnalysis.CSharp.ValueSetFactory+DecimalValueSetFactory:Microsoft.CodeAnalysis.CSharp.IValueSetFactory.Related(int,Microsoft.CodeAnalysis.ConstantValue):Microsoft.CodeAnalysis.CSharp.IValueSet:this (FullOpts)
24 (3.03 % of base) : 123016.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:MakeHalfWidthIdentifier(System.String):System.String (FullOpts)
24 (0.92 % of base) : 178210.dasm - System.Data.DataTable:ParseSortString(System.String):System.Data.IndexField[]:this (FullOpts)
20 (2.12 % of base) : 72798.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser+<ParseInstrumentationKinds>d__27:MoveNext():ubyte:this (FullOpts)
20 (0.79 % of base) : 150231.dasm - Newtonsoft.Json.Utilities.ConvertUtils:DecimalTryParse(ushort[],int,int,byref):int (FullOpts)
20 (0.51 % of base) : 277339.dasm - System.Management.RelationshipQuery:ParseQuery(System.String):this (FullOpts)
20 (1.36 % of base) : 290781.dasm - System.Resources.Extensions.PreserializedResourceWriter:FindTypeCode(System.Object,System.Collections.Generic.List`1[System.String]):int (FullOpts)
20 (1.37 % of base) : 290874.dasm - System.Resources.ResourceWriter:FindTypeCode(System.Object,System.Collections.Generic.List`1[System.String]):int (FullOpts)
20 (1.25 % of base) : 198222.dasm - System.Xml.XmlTextReaderImpl:ReadValueChunk(ushort[],int,int):int:this (FullOpts)
Top method improvements (bytes):
-44 (-1.93 % of base) : 218376.dasm - ILCompiler.PEWriter.MapFileBuilder:WriteSections(System.IO.StreamWriter):this (FullOpts)
-24 (-1.02 % of base) : 281837.dasm - Microsoft.Quic.QUIC_LISTENER_EVENT:ToString():System.String:this (FullOpts)
-24 (-1.27 % of base) : 186507.dasm - System.Net.Http.DiagnosticsHandler+ActivityStopData:ToString():System.String:this (FullOpts)
-24 (-1.28 % of base) : 186515.dasm - System.Net.Http.DiagnosticsHandler+RequestData:ToString():System.String:this (FullOpts)
-20 (-2.42 % of base) : 240826.dasm - System.CommandLine.Parsing.ArgumentResult:ToString():System.String:this (FullOpts)
-20 (-2.42 % of base) : 240850.dasm - System.CommandLine.Parsing.CommandResult:ToString():System.String:this (FullOpts)
-20 (-0.44 % of base) : 277474.dasm - System.Management.PropertyData:MapValueToWmiValue(System.Object,byref,byref):System.Object (FullOpts)
-16 (-5.19 % of base) : 3149.dasm - Microsoft.Build.Execution.BuildParameters:Initialize(Microsoft.Build.Collections.PropertyDictionary`1[Microsoft.Build.Execution.ProjectPropertyInstance],Microsoft.Build.Evaluation.ProjectRootElementCacheBase,Microsoft.Build.Evaluation.ToolsetProvider):this (FullOpts)
-16 (-0.47 % of base) : 152723.dasm - Newtonsoft.Json.Utilities.JavaScriptUtils+<WriteDefinitelyEscapedJavaScriptStringWithoutDelimitersAsync>d__16:MoveNext():this (FullOpts)
-16 (-1.77 % of base) : 281581.dasm - System.Net.CredentialCache:GetCredential(System.String,int,System.String):System.Net.NetworkCredential:this (FullOpts)
-16 (-1.52 % of base) : 154217.dasm - System.Reflection.Metadata.BlobReader:GetDebuggerDisplay():System.String:this (FullOpts)
-12 (-0.33 % of base) : 134345.dasm - Microsoft.CodeAnalysis.Compilation:SerializeToPeStream(Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.RebuildData,System.Func`2[Microsoft.DiaSymReader.ISymWriterMetadataProvider,Microsoft.DiaSymReader.SymUnmanagedWriter],Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.Emit.EmitOptions,System.Nullable`1[System.Security.Cryptography.RSAParameters],System.Threading.CancellationToken):ubyte:this (FullOpts)
-12 (-0.33 % of base) : 161669.dasm - Microsoft.CodeAnalysis.Compilation:SerializeToPeStream(Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.RebuildData,System.Func`2[Microsoft.DiaSymReader.ISymWriterMetadataProvider,Microsoft.DiaSymReader.SymUnmanagedWriter],Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.Emit.EmitOptions,System.Nullable`1[System.Security.Cryptography.RSAParameters],System.Threading.CancellationToken):ubyte:this (FullOpts)
-12 (-1.51 % of base) : 77488.dasm - Microsoft.Diagnostics.Tracing.ZippedETLReader:AtomicExtract(System.IO.Compression.ZipArchiveEntry,System.String) (FullOpts)
-12 (-0.49 % of base) : 231355.dasm - Microsoft.VisualBasic.CompilerServices.Utils:MethodToString(System.Reflection.MethodBase):System.String (FullOpts)
-12 (-0.55 % of base) : 237115.dasm - System.Collections.Immutable.ImmutableDictionary`2[ubyte,System.Nullable`1[int]]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-12 (-0.55 % of base) : 237277.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[ubyte,System.Nullable`1[int]]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-12 (-0.59 % of base) : 235969.dasm - System.Collections.Immutable.ImmutableHashSet`1[ubyte]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-12 (-1.55 % of base) : 259569.dasm - System.Data.Common.ADP:UnsafeCreateTimer(System.Threading.TimerCallback,System.Object,int,int):System.Threading.Timer (FullOpts)
-12 (-2.17 % of base) : 260126.dasm - System.Data.ProviderBase.DbConnectionPool:CreateCleanupTimer():System.Threading.Timer:this (FullOpts)
Top method regressions (percentages):
12 (7.32 % of base) : 249254.dasm - System.Collections.CaseInsensitiveHashCodeProvider:GetHashCode(System.Object):int:this (FullOpts)
16 (4.82 % of base) : 284197.dasm - System.Net.Sockets.Socket:set_Ttl(short):this (FullOpts)
8 (4.65 % of base) : 281777.dasm - System.Net.SocketAddress:set_Size(int):this (FullOpts)
24 (4.29 % of base) : 73744.dasm - Microsoft.CodeAnalysis.CSharp.ValueSetFactory+DecimalValueSetFactory:Microsoft.CodeAnalysis.CSharp.IValueSetFactory.Related(int,Microsoft.CodeAnalysis.ConstantValue):Microsoft.CodeAnalysis.CSharp.IValueSet:this (FullOpts)
16 (3.57 % of base) : 73741.dasm - Microsoft.CodeAnalysis.CSharp.ValueSetFactory+DecimalValueSetFactory:Related(int,System.Decimal):Microsoft.CodeAnalysis.CSharp.IValueSet`1[System.Decimal]:this (FullOpts)
32 (3.43 % of base) : 241140.dasm - System.CommandLine.EnvironmentVariablesDirective+EnvironmentVariablesDirectiveAction:SetEnvVars(System.CommandLine.ParseResult):this (FullOpts)
24 (3.03 % of base) : 123016.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:MakeHalfWidthIdentifier(System.String):System.String (FullOpts)
12 (2.94 % of base) : 278840.dasm - System.Net.WebSockets.HttpWebSocket:ValidateOptions(System.String,int,int,System.TimeSpan) (FullOpts)
32 (2.77 % of base) : 254948.dasm - System.ComponentModel.PropertyTabAttribute:InitializeTabClasses():this (FullOpts)
8 (2.56 % of base) : 1026.dasm - Microsoft.Build.Construction.XmlDocumentWithLocation:DetermineWhetherToLoadReadOnlyIfPossible():this (FullOpts)
12 (2.44 % of base) : 187123.dasm - System.Net.Http.AuthenticationHelper:ComputeHash(System.String,System.String):System.String (FullOpts)
48 (2.19 % of base) : 200987.dasm - System.Xml.Schema.TypedObject:Equals(System.Xml.Schema.TypedObject):ubyte:this (FullOpts)
20 (2.12 % of base) : 72798.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser+<ParseInstrumentationKinds>d__27:MoveNext():ubyte:this (FullOpts)
12 (2.08 % of base) : 284507.dasm - System.Net.Sockets.SocketAsyncEventArgs:SetBuffer(int,int):this (FullOpts)
12 (2.07 % of base) : 207739.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:SetCollectionObjectWithCollectionMember(byref,System.Xml.Serialization.ReflectionXmlSerializationReader+CollectionMember,System.Type) (FullOpts)
28 (2.06 % of base) : 181595.dasm - System.Data.Common.ObjectStorage:CompareWithFamilies(System.Object,System.Object):int:this (FullOpts)
12 (1.82 % of base) : 5118.dasm - Microsoft.Build.BackEnd.TaskExecutionHost:GetValueOutputs(Microsoft.Build.Framework.TaskPropertyInfo):System.String[]:this (FullOpts)
4 (1.75 % of base) : 268506.dasm - System.IO.Compression.BrotliEncoder:GetMaxCompressedLength(int):int (FullOpts)
12 (1.75 % of base) : 156228.dasm - System.Reflection.Internal.EncodingHelper:DecodeUtf8Prefixed(ulong,int,ubyte[],System.Reflection.Metadata.MetadataStringDecoder):System.String (FullOpts)
4 (1.64 % of base) : 284418.dasm - System.Net.Sockets.Socket:ValidateBufferArguments(ubyte[],int,int) (FullOpts)
Top method improvements (percentages):
-16 (-5.19 % of base) : 3149.dasm - Microsoft.Build.Execution.BuildParameters:Initialize(Microsoft.Build.Collections.PropertyDictionary`1[Microsoft.Build.Execution.ProjectPropertyInstance],Microsoft.Build.Evaluation.ProjectRootElementCacheBase,Microsoft.Build.Evaluation.ToolsetProvider):this (FullOpts)
-4 (-2.63 % of base) : 260569.dasm - System.Data.OleDb.OleDbConnection:CreateCommand():System.Data.OleDb.OleDbCommand:this (FullOpts)
-20 (-2.42 % of base) : 240826.dasm - System.CommandLine.Parsing.ArgumentResult:ToString():System.String:this (FullOpts)
-20 (-2.42 % of base) : 240850.dasm - System.CommandLine.Parsing.CommandResult:ToString():System.String:this (FullOpts)
-12 (-2.29 % of base) : 268259.dasm - System.Formats.Tar.TarEntry:AttemptSetLastWriteTime(System.String,System.DateTimeOffset) (FullOpts)
-12 (-2.29 % of base) : 268220.dasm - System.Formats.Tar.TarHelpers:AttemptDirectorySetLastWriteTime(System.String,System.DateTimeOffset) (FullOpts)
-12 (-2.17 % of base) : 260126.dasm - System.Data.ProviderBase.DbConnectionPool:CreateCleanupTimer():System.Threading.Timer:this (FullOpts)
-12 (-2.16 % of base) : 268519.dasm - System.IO.ArchivingUtils:AttemptSetLastWriteTime(System.String,System.DateTimeOffset) (FullOpts)
-44 (-1.93 % of base) : 218376.dasm - ILCompiler.PEWriter.MapFileBuilder:WriteSections(System.IO.StreamWriter):this (FullOpts)
-16 (-1.77 % of base) : 281581.dasm - System.Net.CredentialCache:GetCredential(System.String,int,System.String):System.Net.NetworkCredential:this (FullOpts)
-8 (-1.72 % of base) : 3294.dasm - Microsoft.Build.Execution.OutOfProcNode:CleanupCaches():this (FullOpts)
-12 (-1.55 % of base) : 259569.dasm - System.Data.Common.ADP:UnsafeCreateTimer(System.Threading.TimerCallback,System.Object,int,int):System.Threading.Timer (FullOpts)
-16 (-1.52 % of base) : 154217.dasm - System.Reflection.Metadata.BlobReader:GetDebuggerDisplay():System.String:this (FullOpts)
-12 (-1.51 % of base) : 77488.dasm - Microsoft.Diagnostics.Tracing.ZippedETLReader:AtomicExtract(System.IO.Compression.ZipArchiveEntry,System.String) (FullOpts)
-8 (-1.50 % of base) : 273479.dasm - System.Linq.Parallel.GrowingArray`1[System.__Canon]:Add(System.__Canon):this (FullOpts)
-8 (-1.42 % of base) : 273481.dasm - System.Linq.Parallel.GrowingArray`1[System.__Canon]:CopyFrom(System.__Canon[],int):this (FullOpts)
-8 (-1.40 % of base) : 213749.dasm - System.Security.Cryptography.X509Certificates.Asn1.TimeAsn:.ctor(System.DateTimeOffset):this (FullOpts)
-24 (-1.28 % of base) : 186515.dasm - System.Net.Http.DiagnosticsHandler+RequestData:ToString():System.String:this (FullOpts)
-24 (-1.27 % of base) : 186507.dasm - System.Net.Http.DiagnosticsHandler+ActivityStopData:ToString():System.String:this (FullOpts)
-4 (-1.18 % of base) : 226137.dasm - Xunit.LinuxOnlyTheoryAttribute:.ctor(System.String):this (FullOpts)
libraries_tests.run.windows.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 323036384 (overridden on cmd)
Total bytes of diff: 323317672 (overridden on cmd)
Total bytes of delta: 281288 (0.09 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
2724 : 513412.dasm (73.46 % of base)
2432 : 465119.dasm (87.36 % of base)
2336 : 62737.dasm (61.15 % of base)
2120 : 85078.dasm (65.51 % of base)
2096 : 51500.dasm (65.17 % of base)
2012 : 599806.dasm (33.56 % of base)
1944 : 591828.dasm (64.37 % of base)
1852 : 115485.dasm (30.68 % of base)
1776 : 155070.dasm (45.68 % of base)
1680 : 87608.dasm (47.84 % of base)
1616 : 58354.dasm (81.78 % of base)
1612 : 87532.dasm (82.08 % of base)
1524 : 627815.dasm (37.69 % of base)
1524 : 188879.dasm (37.65 % of base)
1516 : 98499.dasm (37.45 % of base)
1512 : 513487.dasm (37.31 % of base)
1512 : 68882.dasm (37.31 % of base)
1512 : 482628.dasm (37.31 % of base)
1508 : 517379.dasm (37.11 % of base)
1508 : 287514.dasm (37.11 % of base)
Top file improvements (bytes):
-704 : 153513.dasm (-4.83 % of base)
-380 : 62696.dasm (-11.00 % of base)
-252 : 88118.dasm (-2.25 % of base)
-228 : 341735.dasm (-4.09 % of base)
-228 : 298232.dasm (-2.90 % of base)
-184 : 607486.dasm (-2.42 % of base)
-180 : 600230.dasm (-2.82 % of base)
-160 : 155103.dasm (-1.67 % of base)
-156 : 367857.dasm (-2.55 % of base)
-156 : 630316.dasm (-2.55 % of base)
-156 : 620722.dasm (-2.55 % of base)
-156 : 168004.dasm (-2.55 % of base)
-156 : 49380.dasm (-2.55 % of base)
-152 : 111467.dasm (-2.49 % of base)
-148 : 320844.dasm (-2.42 % of base)
-148 : 76185.dasm (-1.16 % of base)
-148 : 76904.dasm (-1.90 % of base)
-144 : 518014.dasm (-2.36 % of base)
-144 : 353845.dasm (-1.85 % of base)
-144 : 567265.dasm (-1.85 % of base)
90 total files with Code Size differences (39 improved, 51 regressed), 20 unchanged.
Top method regressions (bytes):
2724 (73.46 % of base) : 513412.dasm - System.Text.DBCSCodePageEncoding:ReadBestFitTable():this (Tier1-OSR)
2432 (87.36 % of base) : 465119.dasm - System.Reflection.NullabilityInfoContext:CheckNullabilityAttributes(System.Reflection.NullabilityInfo,System.Collections.Generic.IList`1[System.Reflection.CustomAttributeData]) (Tier1)
2336 (61.15 % of base) : 62737.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.BaseTypeAnalysis:<GetManagedKind>g__dependsOnDefinitelyManagedType|4_0(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.CSharp.Symbol],byref):System.ValueTuple`2[ubyte,ubyte] (Tier1)
2120 (65.51 % of base) : 85078.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]]],System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]],int):System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]] (Tier1)
2096 (65.17 % of base) : 51500.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]]],System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]],int):System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]] (Tier1)
2012 (33.56 % of base) : 599806.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:ComputeAbstractMembers():System.Collections.Immutable.ImmutableHashSet`1[Microsoft.CodeAnalysis.CSharp.Symbol]:this (Tier1)
1944 (64.37 % of base) : 591828.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:MakeAndCheckTypeModifiers(uint,uint,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):uint:this (Tier1)
1852 (30.68 % of base) : 115485.dasm - System.String:JoinCore[System.__Canon](System.ReadOnlySpan`1[ushort],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.String (Tier1)
1776 (45.68 % of base) : 155070.dasm - Microsoft.CodeAnalysis.Workspace:<UpdateReferencesAfterAdd>g__UpdateReferencesAfterAdd|90_1(Microsoft.CodeAnalysis.Solution):Microsoft.CodeAnalysis.Solution (Tier1)
1680 (47.84 % of base) : 87608.dasm - Microsoft.Interop.TypePositionInfo:GetByValueContentsMarshalKind(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.AttributeData],Microsoft.CodeAnalysis.Compilation):System.ValueTuple`3[int,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.Location] (Tier1)
1616 (81.78 % of base) : 58354.dasm - System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.SyntaxToken]:UnionWith(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxToken]):this (Tier1)
1612 (82.08 % of base) : 87532.dasm - System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.SyntaxToken]:UnionWith(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxToken]):this (Tier1)
1524 (37.69 % of base) : 627815.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
1524 (37.65 % of base) : 188879.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
1516 (37.45 % of base) : 98499.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
1512 (37.31 % of base) : 513487.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
1512 (37.31 % of base) : 68882.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
1512 (37.31 % of base) : 482628.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
1508 (37.11 % of base) : 517379.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
1508 (37.11 % of base) : 287514.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
Top method improvements (bytes):
-704 (-4.83 % of base) : 153513.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (Tier1)
-380 (-11.00 % of base) : 62696.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte) (Tier1)
-252 (-2.25 % of base) : 88118.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MemberSignatureComparer:Equals(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):ubyte:this (Tier1)
-228 (-4.09 % of base) : 341735.dasm - System.Net.Mail.MailWriter:WriteHeaders(System.Collections.Specialized.NameValueCollection,ubyte):this (Tier1)
-228 (-2.90 % of base) : 298232.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-184 (-2.42 % of base) : 607486.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindForOrUsingOrFixedDeclarations(Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclarationSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (Tier1)
-180 (-2.82 % of base) : 600230.dasm - Microsoft.CodeAnalysis.CSharp.RefSafetyAnalysis:CheckValEscape(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,uint,uint,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
-160 (-1.67 % of base) : 155103.dasm - Microsoft.CodeAnalysis.SolutionCompilationState:AddDocumentsToMultipleProjects[System.__Canon](System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.DocumentInfo],System.Func`3[System.__Canon,System.__Canon,System.__Canon],System.Func`3[System.__Canon,System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.ValueTuple`2[System.__Canon,System.__Canon]]):Microsoft.CodeAnalysis.SolutionCompilationState:this (Tier1)
-156 (-2.55 % of base) : 367857.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-156 (-2.55 % of base) : 630316.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-156 (-2.55 % of base) : 620722.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-156 (-2.55 % of base) : 168004.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-156 (-2.55 % of base) : 49380.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-152 (-2.49 % of base) : 111467.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-148 (-1.16 % of base) : 76185.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
-148 (-2.42 % of base) : 320844.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-148 (-1.90 % of base) : 76904.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-144 (-2.36 % of base) : 518014.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-144 (-1.85 % of base) : 353845.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-144 (-1.85 % of base) : 567265.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
Top method regressions (percentages):
2432 (87.36 % of base) : 465119.dasm - System.Reflection.NullabilityInfoContext:CheckNullabilityAttributes(System.Reflection.NullabilityInfo,System.Collections.Generic.IList`1[System.Reflection.CustomAttributeData]) (Tier1)
1236 (84.66 % of base) : 517266.dasm - System.Text.Encodings.Web.TextEncoder:EncodeCore(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref,byref,ubyte):int:this (Tier1-OSR)
1612 (82.08 % of base) : 87532.dasm - System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.SyntaxToken]:UnionWith(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxToken]):this (Tier1)
1616 (81.78 % of base) : 58354.dasm - System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.SyntaxToken]:UnionWith(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxToken]):this (Tier1)
160 (78.43 % of base) : 393251.dasm - System.Xml.XPath.XPathNavigator:MoveToRoot():this (Tier1)
408 (76.12 % of base) : 313889.dasm - System.Linq.Enumerable+EnumerablePartition`1[System.__Canon]:SkipAndCount(uint,System.Collections.Generic.IEnumerator`1[System.__Canon]):uint (Tier1)
1264 (75.78 % of base) : 328693.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
832 (74.02 % of base) : 400918.dasm - System.Xml.Xsl.Qil.QilCloneVisitor:VisitChildren(System.Xml.Xsl.Qil.QilNode):System.Xml.Xsl.Qil.QilNode:this (Tier1)
2724 (73.46 % of base) : 513412.dasm - System.Text.DBCSCodePageEncoding:ReadBestFitTable():this (Tier1-OSR)
216 (71.05 % of base) : 309445.dasm - System.Linq.Enumerable+EnumerablePartition`1[int]:SkipAndCount(uint,System.Collections.Generic.IEnumerator`1[int]):uint (Tier1)
936 (70.27 % of base) : 400758.dasm - System.Xml.Xsl.Qil.QilReplaceVisitor:VisitChildren(System.Xml.Xsl.Qil.QilNode):System.Xml.Xsl.Qil.QilNode:this (Tier1)
1200 (70.26 % of base) : 366729.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
1192 (69.63 % of base) : 460187.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
1188 (69.56 % of base) : 517969.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
1188 (69.56 % of base) : 628676.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
1188 (69.56 % of base) : 289351.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
1188 (69.56 % of base) : 343752.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
1184 (69.32 % of base) : 124128.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
1184 (69.32 % of base) : 387819.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
1184 (69.32 % of base) : 111090.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
Top method improvements (percentages):
-120 (-12.45 % of base) : 151200.dasm - Microsoft.CodeAnalysis.ProjectInfo:With(Microsoft.CodeAnalysis.ProjectInfo+ProjectAttributes,Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.CompilationOptions],Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.ParseOptions],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.ProjectReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.MetadataReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],Microsoft.CodeAnalysis.Optional`1[System.Type]):Microsoft.CodeAnalysis.ProjectInfo:this (Tier1)
-40 (-11.11 % of base) : 119481.dasm - System.IO.FileSystemWatcher:Dispose(ubyte):this (Tier1)
-380 (-11.00 % of base) : 62696.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte) (Tier1)
-24 (-10.91 % of base) : 598054.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (Tier1)
-8 (-10.53 % of base) : 573406.dasm - System.Text.Json.JsonHelpers:SkipWithVerify(byref) (Tier1)
-20 (-9.62 % of base) : 61395.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.ValueTuple`2[System.__Canon,System.__Canon]]:ItemRef(int):byref:this (Tier1)
-32 (-8.25 % of base) : 344566.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<TKey,TValue>>.Remove(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]):ubyte:this (Tier1)
-12 (-7.69 % of base) : 598664.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:get_IsImplicitConstructor():ubyte:this (Tier1)
-4 (-7.69 % of base) : 570037.dasm - System.Text.Json.Utf8JsonReader:get_CurrentDepth():int:this (Tier1)
-28 (-7.53 % of base) : 159536.dasm - Microsoft.CodeAnalysis.CSharp.LocalDataFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:VariableSlot(Microsoft.CodeAnalysis.CSharp.Symbol,int):int:this (Tier1)
-12 (-7.50 % of base) : 159095.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:get_IsImplicitConstructor():ubyte:this (Tier1)
-92 (-7.42 % of base) : 593970.dasm - Microsoft.CodeAnalysis.CSharp.BoundConversion:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.CSharp.ConversionGroup,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundConversion:this (Tier1)
-12 (-7.32 % of base) : 350506.dasm - System.Threading.Tasks.TaskExceptionHolder:GetCancellationExceptionDispatchInfo():System.Runtime.ExceptionServices.ExceptionDispatchInfo:this (Tier1)
-80 (-7.14 % of base) : 309655.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[int]:TryGetLast(byref):int:this (Tier1)
-20 (-6.85 % of base) : 590170.dasm - Microsoft.CodeAnalysis.CSharp.Binder:IsMethodOrIndexer(Microsoft.CodeAnalysis.CSharp.Symbol):ubyte (Tier1)
-24 (-6.82 % of base) : 160819.dasm - Microsoft.Cci.MetadataWriter:CheckNameLength(System.String,Microsoft.Cci.INamedEntity):this (Tier1)
-24 (-6.45 % of base) : 160881.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMethodSymbolWithAttributes:get_HasSpecialName():ubyte:this (Tier1)
-20 (-6.41 % of base) : 86791.dasm - Microsoft.CodeAnalysis.CSharp.Binder:IsMethodOrIndexer(Microsoft.CodeAnalysis.CSharp.Symbol):ubyte (Tier1)
-8 (-6.25 % of base) : 61152.dasm - Microsoft.CodeAnalysis.SolutionCompilationState:<CreateCompilationTrackerMap>g__CanReuse|30_0(Microsoft.CodeAnalysis.ProjectId,byref):ubyte (Tier1)
-4 (-5.88 % of base) : 48185.dasm - System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
librariestestsnotieredcompilation.run.windows.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 171257132 (overridden on cmd)
Total bytes of diff: 171258612 (overridden on cmd)
Total bytes of delta: 1480 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
68 : 178602.dasm (3.23 % of base)
56 : 178646.dasm (3.65 % of base)
56 : 190834.dasm (4.70 % of base)
56 : 190869.dasm (5.00 % of base)
56 : 190871.dasm (5.00 % of base)
56 : 190877.dasm (5.15 % of base)
56 : 190906.dasm (5.32 % of base)
56 : 190966.dasm (5.00 % of base)
48 : 178445.dasm (2.19 % of base)
48 : 179240.dasm (3.61 % of base)
48 : 190874.dasm (4.43 % of base)
48 : 291223.dasm (1.22 % of base)
44 : 222387.dasm (1.10 % of base)
44 : 200336.dasm (1.10 % of base)
40 : 220802.dasm (1.79 % of base)
40 : 160188.dasm (1.04 % of base)
40 : 171100.dasm (0.89 % of base)
40 : 199559.dasm (1.79 % of base)
40 : 217162.dasm (0.33 % of base)
36 : 184044.dasm (3.44 % of base)
Top file improvements (bytes):
-112 : 300437.dasm (-1.38 % of base)
-76 : 266899.dasm (-1.91 % of base)
-48 : 125474.dasm (-1.30 % of base)
-48 : 207655.dasm (-0.72 % of base)
-48 : 123196.dasm (-1.30 % of base)
-44 : 182405.dasm (-1.28 % of base)
-44 : 19109.dasm (-1.39 % of base)
-36 : 282693.dasm (-0.94 % of base)
-32 : 209349.dasm (-0.48 % of base)
-32 : 121933.dasm (-0.65 % of base)
-28 : 232012.dasm (-0.74 % of base)
-28 : 175502.dasm (-1.35 % of base)
-28 : 175610.dasm (-1.41 % of base)
-28 : 198364.dasm (-3.74 % of base)
-28 : 207674.dasm (-1.80 % of base)
-28 : 209152.dasm (-1.80 % of base)
-28 : 42802.dasm (-0.80 % of base)
-24 : 305968.dasm (-0.80 % of base)
-24 : 226316.dasm (-1.69 % of base)
-24 : 128147.dasm (-3.12 % of base)
66 total files with Code Size differences (34 improved, 32 regressed), 20 unchanged.
Top method regressions (bytes):
68 (3.23 % of base) : 178602.dasm - System.Xml.XmlSchemaValidatorApiTests.TCXmlSchemaValidatorMisc:CreateSchema2(System.String) (FullOpts)
56 (4.70 % of base) : 190834.dasm - System.Reflection.Tests.ModuleTests:LoadMultiModuleFromDisk_GetModuleNull() (FullOpts)
56 (5.00 % of base) : 190869.dasm - System.Reflection.Tests.ModuleTests:ModuleGetTypesReturnsNewObjectEachType() (FullOpts)
56 (5.15 % of base) : 190877.dasm - System.Reflection.Tests.ModuleTests:MultiModule_AssemblyDefinedTypes() (FullOpts)
56 (5.00 % of base) : 190966.dasm - System.Reflection.Tests.ModuleTests:MultiModule_AssemblyDefinedTypes_ReturnsDifferentObjectEachType() (FullOpts)
56 (5.32 % of base) : 190906.dasm - System.Reflection.Tests.ModuleTests:MultiModule_AssemblyGetTypes() (FullOpts)
56 (5.00 % of base) : 190871.dasm - System.Reflection.Tests.ModuleTests:MultiModule_AssemblyGetTypes_ReturnsDifferentObjectEachType() (FullOpts)
56 (3.65 % of base) : 178646.dasm - System.Xml.XmlSchemaValidatorApiTests.TCXmlSchemaValidatorMisc:CreateSchema1(System.String) (FullOpts)
48 (4.43 % of base) : 190874.dasm - System.Reflection.Tests.ModuleTests:LoadMultiModuleFromDisk_GetModuleNameNotInManifest() (FullOpts)
48 (1.22 % of base) : 291223.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29484_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
48 (2.19 % of base) : 178445.dasm - System.Xml.Schema.TypedObject:Equals(System.Xml.Schema.TypedObject):ubyte:this (FullOpts)
48 (3.61 % of base) : 179240.dasm - System.Xml.XmlSchemaTests.TC_SchemaSet_ProhibitDTD:v15():this (FullOpts)
44 (1.10 % of base) : 222387.dasm - System.Tests.ArrayTests+<Sort_Array_TestData>d__158:MoveNext():ubyte:this (FullOpts)
44 (1.10 % of base) : 200336.dasm - System.Tests.ArrayTests+<Sort_Array_TestData>d__158:MoveNext():ubyte:this (FullOpts)
40 (1.04 % of base) : 160188.dasm - System.Net.Quic.Tests.MsQuicTests+<ConnectWithCertificate_MissingTargetHost_Succeeds>d__12:MoveNext():this (FullOpts)
40 (0.33 % of base) : 217162.dasm - System.Tests.EnumTests+<Parse_TestData>d__0:MoveNext():ubyte:this (FullOpts)
40 (1.79 % of base) : 220802.dasm - System.Tests.StringTests:WhiteSpaceAtStartAndEndTrim() (FullOpts)
40 (1.79 % of base) : 199559.dasm - System.Tests.StringTests:WhiteSpaceAtStartAndEndTrim() (FullOpts)
40 (0.89 % of base) : 171100.dasm - System.Xml.Serialization.XmlSerializationReader:ReadArray(System.String,System.String):System.Array:this (FullOpts)
36 (3.44 % of base) : 184044.dasm - System.Xml.XmlWriterApiTests.TCFullEndElement+TCWriteValue+TCXmlLang:XmlLang_5(System.Xml.XmlWriterApiTests.XmlWriterUtils):this (FullOpts)
Top method improvements (bytes):
-112 (-1.38 % of base) : 300437.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex30732_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-76 (-1.91 % of base) : 266899.dasm - System.Text.Json.Nodes.Tests.ToStringTests:NodeToString() (FullOpts)
-48 (-0.72 % of base) : 207655.dasm - DataContractSerializerTests:DCS_BasicPerSerializerRoundTripAndCompare_EnumStruct() (FullOpts)
-48 (-1.30 % of base) : 125474.dasm - System.Globalization.Tests.CompareInfoCompareTests:TestIgnoreKanaAndWidthCases():this (FullOpts)
-48 (-1.30 % of base) : 123196.dasm - System.Globalization.Tests.CompareInfoCompareTests:TestIgnoreKanaAndWidthCases():this (FullOpts)
-44 (-1.39 % of base) : 19109.dasm - LibraryImportGenerator.UnitTests.CodeSnippets:MarshalAsParametersAndModifiers(System.String,int):System.String (FullOpts)
-44 (-1.28 % of base) : 182405.dasm - System.Xml.RwFactoryWriterTests.CReaderFactory:SetupSettings():this (FullOpts)
-36 (-0.94 % of base) : 282693.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex492_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-32 (-0.48 % of base) : 209349.dasm - DataContractSerializerTests:DCS_BasicPerSerializerRoundTripAndCompare_EnumStruct() (FullOpts)
-32 (-0.65 % of base) : 121933.dasm - System.Formats.Tar.Tests.TarFile_ExtractToDirectoryAsync_File_Tests+<SetsLastModifiedTimeOnExtractedDirectories>d__5:MoveNext():this (FullOpts)
-28 (-1.80 % of base) : 207674.dasm - DataContractSerializerTests:DCS_TypeWithCollectionAndDateTimeOffset() (FullOpts)
-28 (-1.80 % of base) : 209152.dasm - DataContractSerializerTests:DCS_TypeWithCollectionAndDateTimeOffset() (FullOpts)
-28 (-0.80 % of base) : 42802.dasm - Microsoft.CodeAnalysis.SolutionState:AddProject(Microsoft.CodeAnalysis.ProjectId,Microsoft.CodeAnalysis.ProjectState):Microsoft.CodeAnalysis.SolutionState:this (FullOpts)
-28 (-3.74 % of base) : 198364.dasm - System.Runtime.Loader.Tests.RefEmitLoadContextTests:Init() (FullOpts)
-28 (-0.74 % of base) : 232012.dasm - System.Security.Cryptography.X509Certificates.Tests.CertTests:PublicPrivateKey_IndependentLifetimes_ECDiffieHellman() (FullOpts)
-28 (-1.41 % of base) : 175610.dasm - System.Xml.XslTransformApiTests.CArgAddParam:AddParam14(int,int,int,int):this (FullOpts)
-28 (-1.35 % of base) : 175502.dasm - System.Xml.XslTransformApiTests.CArgAddParam:AddParam20(int,int,int,int):this (FullOpts)
-24 (-0.80 % of base) : 305968.dasm - HandleFactory:CreateHandle(ubyte,System.String):Win32Handle (FullOpts)
-24 (-3.12 % of base) : 128147.dasm - System.IO.Tests.Enumeration.GetTimesTests+AllEntries:TransformEntry(byref):System.ValueTuple`3[System.DateTimeOffset,System.DateTimeOffset,System.DateTimeOffset]:this (FullOpts)
-24 (-1.69 % of base) : 226316.dasm - System.Security.Cryptography.Cose.Tests.CoseHeaderMapTests:SetValue_InvalidCoseHeaderValue():this (FullOpts)
Top method regressions (percentages):
12 (7.32 % of base) : 73214.dasm - System.Collections.CaseInsensitiveHashCodeProvider:GetHashCode(System.Object):int:this (FullOpts)
56 (5.32 % of base) : 190906.dasm - System.Reflection.Tests.ModuleTests:MultiModule_AssemblyGetTypes() (FullOpts)
56 (5.15 % of base) : 190877.dasm - System.Reflection.Tests.ModuleTests:MultiModule_AssemblyDefinedTypes() (FullOpts)
56 (5.00 % of base) : 190869.dasm - System.Reflection.Tests.ModuleTests:ModuleGetTypesReturnsNewObjectEachType() (FullOpts)
56 (5.00 % of base) : 190966.dasm - System.Reflection.Tests.ModuleTests:MultiModule_AssemblyDefinedTypes_ReturnsDifferentObjectEachType() (FullOpts)
56 (5.00 % of base) : 190871.dasm - System.Reflection.Tests.ModuleTests:MultiModule_AssemblyGetTypes_ReturnsDifferentObjectEachType() (FullOpts)
56 (4.70 % of base) : 190834.dasm - System.Reflection.Tests.ModuleTests:LoadMultiModuleFromDisk_GetModuleNull() (FullOpts)
8 (4.65 % of base) : 150905.dasm - System.Net.SocketAddress:set_Size(int):this (FullOpts)
48 (4.43 % of base) : 190874.dasm - System.Reflection.Tests.ModuleTests:LoadMultiModuleFromDisk_GetModuleNameNotInManifest() (FullOpts)
56 (3.65 % of base) : 178646.dasm - System.Xml.XmlSchemaValidatorApiTests.TCXmlSchemaValidatorMisc:CreateSchema1(System.String) (FullOpts)
48 (3.61 % of base) : 179240.dasm - System.Xml.XmlSchemaTests.TC_SchemaSet_ProhibitDTD:v15():this (FullOpts)
36 (3.44 % of base) : 184044.dasm - System.Xml.XmlWriterApiTests.TCFullEndElement+TCWriteValue+TCXmlLang:XmlLang_5(System.Xml.XmlWriterApiTests.XmlWriterUtils):this (FullOpts)
16 (3.36 % of base) : 178528.dasm - System.Xml.XmlSchemaValidatorApiTests.TCValidateAfterAddInvalidSchema:.cctor() (FullOpts)
12 (3.30 % of base) : 226460.dasm - System.Security.Cryptography.Cose.Tests.CoseMessageTests_Sign`1[System.__Canon]:SignWithNullContent():this (FullOpts)
68 (3.23 % of base) : 178602.dasm - System.Xml.XmlSchemaValidatorApiTests.TCXmlSchemaValidatorMisc:CreateSchema2(System.String) (FullOpts)
12 (2.94 % of base) : 156663.dasm - System.Net.WebSockets.HttpWebSocket:ValidateOptions(System.String,int,int,System.TimeSpan) (FullOpts)
16 (2.63 % of base) : 189798.dasm - System.Reflection.Tests.CustomAttributeInstantiator:Convert(System.Reflection.CustomAttributeTypedArgument):System.Object (FullOpts)
12 (2.40 % of base) : 152524.dasm - System.Net.Http.AuthenticationHelper:ComputeHash(System.String,System.String):System.String (FullOpts)
12 (2.38 % of base) : 182080.dasm - System.Xml.XmlWriterApiTests.XmlWriterUtils:FullPath(System.String):System.String (FullOpts)
24 (2.36 % of base) : 182266.dasm - System.Xml.XmlWriterApiTests.TCWriteNode_XmlReader:writeNode_XmlReader6(System.Xml.XmlWriterApiTests.XmlWriterUtils):this (FullOpts)
Top method improvements (percentages):
-28 (-3.74 % of base) : 198364.dasm - System.Runtime.Loader.Tests.RefEmitLoadContextTests:Init() (FullOpts)
-16 (-3.17 % of base) : 177887.dasm - System.Xml.XslCompiledTransformApiTests.CTransformTestGeneric:TransformGeneric1(System.Object,int,int,int,int):this (FullOpts)
-24 (-3.12 % of base) : 128147.dasm - System.IO.Tests.Enumeration.GetTimesTests+AllEntries:TransformEntry(byref):System.ValueTuple`3[System.DateTimeOffset,System.DateTimeOffset,System.DateTimeOffset]:this (FullOpts)
-20 (-2.29 % of base) : 130633.dasm - System.IO.IsolatedStorage.DeleteDirectoryTests:DeleteDirectory_DeleteNested():this (FullOpts)
-12 (-2.29 % of base) : 120455.dasm - System.Formats.Tar.TarEntry:AttemptSetLastWriteTime(System.String,System.DateTimeOffset) (FullOpts)
-12 (-2.29 % of base) : 120486.dasm - System.Formats.Tar.TarHelpers:AttemptDirectorySetLastWriteTime(System.String,System.DateTimeOffset) (FullOpts)
-20 (-2.21 % of base) : 130637.dasm - System.IO.IsolatedStorage.DeleteDirectoryTests:DeleteDirectory_CannotDeleteWithContent(int):this (FullOpts)
-12 (-2.16 % of base) : 126565.dasm - System.IO.ArchivingUtils:AttemptSetLastWriteTime(System.String,System.DateTimeOffset) (FullOpts)
-76 (-1.91 % of base) : 266899.dasm - System.Text.Json.Nodes.Tests.ToStringTests:NodeToString() (FullOpts)
-12 (-1.90 % of base) : 122646.dasm - System.Globalization.Tests.Factory:GetConformanceIdnaTest(System.String,int):System.Globalization.Tests.IConformanceIdnaTest (FullOpts)
-12 (-1.90 % of base) : 122725.dasm - System.Globalization.Tests.Factory:GetConformanceIdnaTest(System.String,int):System.Globalization.Tests.IConformanceIdnaTest (FullOpts)
-8 (-1.87 % of base) : 149814.dasm - System.Memory.Tests.Span.StringSearchValuesTests:Create_OnlyOrdinalComparisonIsSupported() (FullOpts)
-4 (-1.85 % of base) : 109665.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.context.property.autoproperty.genclass.genclass001.genclass001.Test:MainMethod():int (FullOpts)
-28 (-1.80 % of base) : 207674.dasm - DataContractSerializerTests:DCS_TypeWithCollectionAndDateTimeOffset() (FullOpts)
-28 (-1.80 % of base) : 209152.dasm - DataContractSerializerTests:DCS_TypeWithCollectionAndDateTimeOffset() (FullOpts)
-12 (-1.69 % of base) : 122640.dasm - System.Globalization.Tests.Factory:GetIdnaTestTxt():System.IO.Stream (FullOpts)
-12 (-1.69 % of base) : 122721.dasm - System.Globalization.Tests.Factory:GetIdnaTestTxt():System.IO.Stream (FullOpts)
-24 (-1.69 % of base) : 226316.dasm - System.Security.Cryptography.Cose.Tests.CoseHeaderMapTests:SetValue_InvalidCoseHeaderValue():this (FullOpts)
-8 (-1.68 % of base) : 128681.dasm - System.IO.Tests.Directory_GetSetTimes+<>c:<TimeFunctions>b__4_0(System.String,System.DateTime):this (FullOpts)
-8 (-1.68 % of base) : 128685.dasm - System.IO.Tests.Directory_GetSetTimes+<>c:<TimeFunctions>b__4_6(System.String,System.DateTime):this (FullOpts)
windows x64
Diffs are based on 2,908,360 contexts (1,240,334 MinOpts, 1,668,026 FullOpts).
MISSED contexts: base: 133 (0.00%), diff: 223 (0.01%)
Overall (+239,961 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| aspnet.run.windows.x64.checked.mch |
46,759,029 |
+26,975 |
| benchmarks.run_pgo.windows.x64.checked.mch |
45,780,921 |
-82,475 |
| coreclr_tests.run.windows.x64.checked.mch |
464,618,729 |
+19,542 |
| libraries.pmi.windows.x64.checked.mch |
64,172,055 |
+3,231 |
| libraries_tests.run.windows.x64.Release.mch |
309,629,720 |
+259,697 |
| librariestestsnotieredcompilation.run.windows.x64.Release.mch |
149,849,548 |
+12,991 |
FullOpts (+239,961 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| aspnet.run.windows.x64.checked.mch |
28,268,214 |
+26,975 |
| benchmarks.run_pgo.windows.x64.checked.mch |
23,454,275 |
-82,475 |
| coreclr_tests.run.windows.x64.checked.mch |
130,697,415 |
+19,542 |
| libraries.pmi.windows.x64.checked.mch |
64,058,534 |
+3,231 |
| libraries_tests.run.windows.x64.Release.mch |
110,763,662 |
+259,697 |
| librariestestsnotieredcompilation.run.windows.x64.Release.mch |
138,621,801 |
+12,991 |
Example diffs
aspnet.run.windows.x64.checked.mch
-31 (-7.49%) : 19572.dasm - System.Net.Http.HttpConnectionPool:SendWithProxyAuthAsync(System.Net.Http.HttpRequestMessage,ubyte,ubyte,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[System.Net.Http.HttpResponseMessage]:this (Tier1)
@@ -9,7 +9,7 @@
; 3 inlinees with PGO data; 9 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 8, 4 ) ref -> rcx this class-hnd single-def <System.Net.Http.HttpConnectionPool>
+; V00 this [V00,T01] ( 8, 5 ) ref -> rcx this class-hnd single-def <System.Net.Http.HttpConnectionPool>
; V01 RetBuf [V01,T00] ( 9, 7 ) byref -> rbx single-def
; V02 arg1 [V02,T02] ( 4, 3 ) ref -> rdx class-hnd single-def <System.Net.Http.HttpRequestMessage>
; V03 arg2 [V03,T03] ( 4, 3 ) ubyte -> r9 single-def
@@ -17,7 +17,7 @@
;* V05 arg4 [V05 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Threading.CancellationToken>
; V06 OutArgs [V06 ] ( 1, 1 ) struct (64) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Uri>
-;* V08 tmp2 [V08,T12] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V08 tmp2 [V08,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V09 tmp3 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.Http.HttpConnectionPoolManager>
;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.Http.HttpConnectionPoolManager>
; V11 tmp5 [V11 ] ( 11, 9 ) struct (200) [rbp-0xD8] do-not-enreg[XSF] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Net.Http.HttpConnectionPool+<SendWithVersionDetectionAndRetryAsync>d__89>
@@ -27,7 +27,7 @@
; V15 tmp9 [V15,T04] ( 6, 4 ) ref -> rdx
;* V16 tmp10 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <<unknown class>>
;* V17 tmp11 [V17 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask`1[System.Net.Http.HttpResponseMessage]>
-; V18 tmp12 [V18,T13] ( 4, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V18 tmp12 [V18,T12] ( 4, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V19 tmp13 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
;* V20 tmp14 [V20 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask`1[System.Net.Http.HttpResponseMessage]>
;* V21 tmp15 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon>
@@ -39,7 +39,7 @@
;* V27 tmp21 [V27 ] ( 0, 0 ) short -> zero-ref "field V17._token (fldOffset=0x10)" P-INDEP
;* V28 tmp22 [V28 ] ( 0, 0 ) ubyte -> zero-ref "field V17._continueOnCapturedContext (fldOffset=0x12)" P-INDEP
;* V29 tmp23 [V29 ] ( 0, 0 ) ref -> zero-ref single-def "field V20._obj (fldOffset=0x0)" P-INDEP
-; V30 tmp24 [V30,T14] ( 2, 0 ) ref -> rsi single-def "field V20._result (fldOffset=0x8)" P-INDEP
+; V30 tmp24 [V30,T13] ( 2, 0 ) ref -> rsi single-def "field V20._result (fldOffset=0x8)" P-INDEP
;* V31 tmp25 [V31 ] ( 0, 0 ) short -> zero-ref "field V20._token (fldOffset=0x10)" P-INDEP
;* V32 tmp26 [V32 ] ( 0, 0 ) ubyte -> zero-ref "field V20._continueOnCapturedContext (fldOffset=0x12)" P-INDEP
; V33 tmp27 [V33,T08] ( 3, 2 ) ref -> rdx "V13.[000..008)"
@@ -69,76 +69,24 @@ G_M41878_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rdx, r8
; gcrRegs +[rdx]
;; size=70 bbWeight=1 PerfScore 12.83
-G_M41878_IG02: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0008 {rbx}, byref
+G_M41878_IG02: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs +[rcx]
movzx rax, byte ptr [rcx+0xD0]
cmp eax, 2
- je G_M41878_IG07
+ je SHORT G_M41878_IG03
cmp eax, 5
- je G_M41878_IG07
- ;; size=25 bbWeight=1 PerfScore 4.50
-G_M41878_IG03: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0008 {rbx}, byref
- vxorps xmm0, xmm0, xmm0
- vmovdqu xmmword ptr [rbp-0x90], xmm0
- mov gword ptr [rbp-0xD8], rcx
- mov gword ptr [rbp-0xD0], rdx
- mov byte ptr [rbp-0x98], r9b
- movzx rax, byte ptr [rbp+0x30]
- mov byte ptr [rbp-0x97], al
- mov rdx, gword ptr [rbp+0x38]
- mov gword ptr [rbp-0x80], rdx
- mov dword ptr [rbp-0xA0], -1
- lea rcx, [rbp-0xD8]
- ; gcrRegs -[rcx]
- call [<unknown method>]
- ; gcrRegs -[rdx]
- mov rdx, gword ptr [rbp-0x90]
- ; gcrRegs +[rdx]
- mov rcx, 0xD1FFAB1E ; const ptr
- cmp rdx, gword ptr [rcx]
- je G_M41878_IG09
- test rdx, rdx
- je G_M41878_IG10
- test rdx, rdx
- je G_M41878_IG11
- ;; size=118 bbWeight=1 PerfScore 20.58
-G_M41878_IG04: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx}, byref
- xor rsi, rsi
- ; gcrRegs +[rsi]
- ;; size=2 bbWeight=1 PerfScore 0.25
-G_M41878_IG05: ; bbWeight=1, gcrefRegs=0044 {rdx rsi}, byrefRegs=0008 {rbx}, byref
- mov rcx, rbx
- ; byrRegs +[rcx]
- call CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[rdx]
- ; byrRegs -[rcx]
- lea rcx, bword ptr [rbx+0x08]
- ; byrRegs +[rcx]
- mov rdx, rsi
- ; gcrRegs +[rdx]
- call CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[rdx rsi]
- ; byrRegs -[rcx]
- mov word ptr [rbx+0x10], 0
- mov byte ptr [rbx+0x12], 1
- mov rax, rbx
- ; byrRegs +[rax]
- ;; size=33 bbWeight=1 PerfScore 5.25
-G_M41878_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 272
- pop rbx
- pop rsi
- pop rbp
- ret
- ;; size=11 bbWeight=1 PerfScore 2.75
-G_M41878_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0008 {rbx}, gcvars, byref
- ; gcrRegs +[rcx rdx]
- ; byrRegs -[rax]
+ jne SHORT G_M41878_IG06
+ ;; size=17 bbWeight=1 PerfScore 4.50
+G_M41878_IG03: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0008 {rbx}, byref, isz
+ mov rax, gword ptr [rcx+0x08]
+ ; gcrRegs +[rax]
+ cmp gword ptr [rax+0x30], 0
+ je SHORT G_M41878_IG06
+ ;; size=11 bbWeight=1 PerfScore 6.00
+G_M41878_IG04: ; bbWeight=0, gcrefRegs=0006 {rcx rdx}, byrefRegs=0008 {rbx}, byref
+ ; gcrRegs -[rax]
mov r8, gword ptr [rcx+0x08]
; gcrRegs +[r8]
- cmp gword ptr [r8+0x30], 0
- je G_M41878_IG03
- mov r8, gword ptr [rcx+0x08]
mov r8, gword ptr [r8+0x30]
mov gword ptr [rsp+0x20], r8
movzx r8, byte ptr [rbp+0x30]
@@ -158,23 +106,79 @@ G_M41878_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0006 {
; byrRegs -[rcx]
mov rax, rbx
; byrRegs +[rax]
- ;; size=72 bbWeight=0 PerfScore 0.00
-G_M41878_IG08: ; bbWeight=0, epilog, nogc, extend
+ ;; size=57 bbWeight=0 PerfScore 0.00
+G_M41878_IG05: ; bbWeight=0, epilog, nogc, extend
add rsp, 272
pop rbx
pop rsi
pop rbp
ret
;; size=11 bbWeight=0 PerfScore 0.00
-G_M41878_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
+G_M41878_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0008 {rbx}, gcvars, byref, isz
+ ; gcrRegs +[rcx rdx]
+ ; byrRegs -[rax]
+ vxorps xmm0, xmm0, xmm0
+ vmovdqu xmmword ptr [rbp-0x90], xmm0
+ mov gword ptr [rbp-0xD8], rcx
+ mov gword ptr [rbp-0xD0], rdx
+ mov byte ptr [rbp-0x98], r9b
+ movzx rax, byte ptr [rbp+0x30]
+ mov byte ptr [rbp-0x97], al
+ mov rdx, gword ptr [rbp+0x38]
+ mov gword ptr [rbp-0x80], rdx
+ mov dword ptr [rbp-0xA0], -1
+ lea rcx, [rbp-0xD8]
+ ; gcrRegs -[rcx]
+ call [<unknown method>]
+ ; gcrRegs -[rdx]
+ mov rdx, gword ptr [rbp-0x90]
+ ; gcrRegs +[rdx]
+ mov rcx, 0xD1FFAB1E ; const ptr
+ cmp rdx, gword ptr [rcx]
+ je SHORT G_M41878_IG10
+ test rdx, rdx
+ je SHORT G_M41878_IG11
+ test rdx, rdx
+ je SHORT G_M41878_IG12
+ ;; size=106 bbWeight=1 PerfScore 20.58
+G_M41878_IG07: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx}, byref
+ xor rsi, rsi
+ ; gcrRegs +[rsi]
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M41878_IG08: ; bbWeight=1, gcrefRegs=0044 {rdx rsi}, byrefRegs=0008 {rbx}, byref
+ mov rcx, rbx
+ ; byrRegs +[rcx]
+ call CORINFO_HELP_CHECKED_ASSIGN_REF
+ ; gcrRegs -[rdx]
+ ; byrRegs -[rcx]
+ lea rcx, bword ptr [rbx+0x08]
+ ; byrRegs +[rcx]
+ mov rdx, rsi
+ ; gcrRegs +[rdx]
+ call CORINFO_HELP_CHECKED_ASSIGN_REF
+ ; gcrRegs -[rdx rsi]
+ ; byrRegs -[rcx]
+ mov word ptr [rbx+0x10], 0
+ mov byte ptr [rbx+0x12], 1
+ mov rax, rbx
+ ; byrRegs +[rax]
+ ;; size=33 bbWeight=1 PerfScore 5.25
+G_M41878_IG09: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 272
+ pop rbx
+ pop rsi
+ pop rbp
+ ret
+ ;; size=11 bbWeight=1 PerfScore 2.75
+G_M41878_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref, isz
; byrRegs -[rax]
mov rsi, gword ptr [rbp-0x88]
; gcrRegs +[rsi]
xor rdx, rdx
; gcrRegs +[rdx]
- jmp G_M41878_IG05
- ;; size=14 bbWeight=0 PerfScore 0.00
-G_M41878_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+ jmp SHORT G_M41878_IG08
+ ;; size=11 bbWeight=0 PerfScore 0.00
+G_M41878_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs -[rdx rsi]
mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
@@ -189,9 +193,9 @@ G_M41878_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
mov rdx, rsi
; gcrRegs +[rdx]
test rdx, rdx
- jne G_M41878_IG04
- ;; size=46 bbWeight=0 PerfScore 0.00
-G_M41878_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jne SHORT G_M41878_IG07
+ ;; size=42 bbWeight=0 PerfScore 0.00
+G_M41878_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx rsi]
; byrRegs -[rbx]
mov ecx, 9
@@ -199,7 +203,7 @@ G_M41878_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 414, prolog size 64, PerfScore 46.17, instruction count 89, allocated bytes for code 414 (MethodHash=e4695c69) for method System.Net.Http.HttpConnectionPool:SendWithProxyAuthAsync(System.Net.Http.HttpRequestMessage,ubyte,ubyte,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[System.Net.Http.HttpResponseMessage]:this (Tier1)
+; Total bytes of code 383, prolog size 64, PerfScore 52.17, instruction count 89, allocated bytes for code 383 (MethodHash=e4695c69) for method System.Net.Http.HttpConnectionPool:SendWithProxyAuthAsync(System.Net.Http.HttpRequestMessage,ubyte,ubyte,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[System.Net.Http.HttpResponseMessage]:this (Tier1)
; ============================================================
Unwind Info:
-2 (-6.45%) : 118712.dasm - OrchardCore.ResourceManagement.RequireSettings:UseVersion(System.String):OrchardCore.ResourceManagement.RequireSettings:this (Tier1)
@@ -9,8 +9,8 @@
; 1 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 4, 3.34) ref -> rbx this class-hnd single-def <OrchardCore.ResourceManagement.RequireSettings>
-; V01 arg1 [V01,T00] ( 5, 3.88) ref -> rdx class-hnd single-def <System.String>
+; V00 this [V00,T01] ( 4, 3.54) ref -> rbx this class-hnd single-def <OrchardCore.ResourceManagement.RequireSettings>
+; V01 arg1 [V01,T00] ( 5, 4.08) ref -> rdx class-hnd single-def <System.String>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03,T02] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;
@@ -28,10 +28,14 @@ G_M32576_IG02: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {},
;; size=5 bbWeight=1 PerfScore 1.25
G_M32576_IG03: ; bbWeight=0.54, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rdx+0x08], 0
- jne SHORT G_M32576_IG06
- ;; size=6 bbWeight=0.54 PerfScore 2.16
-G_M32576_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ je SHORT G_M32576_IG04
+ lea rcx, bword ptr [rbx+0x40]
+ ; byrRegs +[rcx]
+ call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rdx]
+ ; byrRegs -[rcx]
+ ;; size=15 bbWeight=0.54 PerfScore 2.98
+G_M32576_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rax, rbx
; gcrRegs +[rax]
;; size=3 bbWeight=1 PerfScore 0.25
@@ -39,17 +43,8 @@ G_M32576_IG05: ; bbWeight=1, epilog, nogc, extend
pop rbx
ret
;; size=2 bbWeight=1 PerfScore 1.50
-G_M32576_IG06: ; bbWeight=0.34, gcVars=0000000000000000 {}, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax] +[rdx]
- lea rcx, bword ptr [rbx+0x40]
- ; byrRegs +[rcx]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rdx]
- ; byrRegs -[rcx]
- jmp SHORT G_M32576_IG04
- ;; size=11 bbWeight=0.34 PerfScore 1.19
-; Total bytes of code 31, prolog size 1, PerfScore 7.61, instruction count 12, allocated bytes for code 31 (MethodHash=565580bf) for method OrchardCore.ResourceManagement.RequireSettings:UseVersion(System.String):OrchardCore.ResourceManagement.RequireSettings:this (Tier1)
+; Total bytes of code 29, prolog size 1, PerfScore 7.23, instruction count 11, allocated bytes for code 29 (MethodHash=565580bf) for method OrchardCore.ResourceManagement.RequireSettings:UseVersion(System.String):OrchardCore.ResourceManagement.RequireSettings:this (Tier1)
; ============================================================
Unwind Info:
-7 (-5.88%) : 84806.dasm - System.Threading.CancellationTokenSource:NotifyCancellation(ubyte):this (Tier1)
@@ -5,16 +5,16 @@
; optimized using Dynamic PGO
; rsp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 768
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 768
; 1 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 9, 7.33) ref -> rbx this class-hnd single-def <System.Threading.CancellationTokenSource>
+; V00 this [V00,T00] ( 8, 7.33) ref -> rbx this class-hnd single-def <System.Threading.CancellationTokenSource>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> rsi single-def
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V04 tmp2 [V04,T03] ( 3, 2.33) ref -> rcx class-hnd single-def "Inline stloc first use temp" <System.Threading.ITimer>
-; V05 tmp3 [V05,T02] ( 5, 4.00) ref -> rcx class-hnd exact single-def "dup spill" <<unknown class>>
+; V05 tmp3 [V05,T02] ( 3, 4 ) ref -> rcx class-hnd exact single-def "dup spill" <<unknown class>>
;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref single-def
;
; Lcl frame size = 40
@@ -29,7 +29,7 @@ G_M908_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n
;; size=11 bbWeight=1 PerfScore 2.75
G_M908_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rbx+0x20], 0
- jne SHORT G_M908_IG08
+ jne SHORT G_M908_IG07
lea rcx, bword ptr [rbx+0x20]
; byrRegs +[rcx]
mov r11d, 1
@@ -37,20 +37,20 @@ G_M908_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
lock
cmpxchg dword ptr [rcx], r11d
test eax, eax
- jne SHORT G_M908_IG08
+ jne SHORT G_M908_IG07
mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
; byrRegs -[rcx]
test rcx, rcx
jne SHORT G_M908_IG06
;; size=36 bbWeight=1 PerfScore 27.50
-G_M908_IG03: ; bbWeight=0.67, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M908_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx]
mov rcx, gword ptr [rbx+0x10]
; gcrRegs +[rcx]
test rcx, rcx
- jne SHORT G_M908_IG07
- ;; size=9 bbWeight=0.67 PerfScore 2.17
+ jne SHORT G_M908_IG08
+ ;; size=9 bbWeight=1 PerfScore 3.25
G_M908_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
movzx rdx, sil
@@ -73,26 +73,24 @@ G_M908_IG06: ; bbWeight=0.33, gcVars=0000000000000000 {}, gcrefRegs=000A
call [r11]<unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
- mov rcx, gword ptr [rbx+0x10]
- ; gcrRegs +[rcx]
- test rcx, rcx
- je SHORT G_M908_IG04
- ;; size=29 bbWeight=0.33 PerfScore 2.58
-G_M908_IG07: ; bbWeight=0, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
- call [System.Threading.EventWaitHandle:Set():ubyte:this]
- ; gcrRegs -[rcx]
- ; gcr arg pop 0
- jmp SHORT G_M908_IG04
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M908_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ jmp SHORT G_M908_IG03
+ ;; size=22 bbWeight=0.33 PerfScore 2.17
+G_M908_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx]
add rsp, 40
pop rbx
pop rsi
ret
;; size=7 bbWeight=0 PerfScore 0.00
+G_M908_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[rcx rbx]
+ call [System.Threading.EventWaitHandle:Set():ubyte:this]
+ ; gcrRegs -[rcx]
+ ; gcr arg pop 0
+ jmp SHORT G_M908_IG04
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 119, prolog size 11, PerfScore 38.75, instruction count 39, allocated bytes for code 119 (MethodHash=9a58fc73) for method System.Threading.CancellationTokenSource:NotifyCancellation(ubyte):this (Tier1)
+; Total bytes of code 112, prolog size 11, PerfScore 39.42, instruction count 37, allocated bytes for code 112 (MethodHash=9a58fc73) for method System.Threading.CancellationTokenSource:NotifyCancellation(ubyte):this (Tier1)
; ============================================================
Unwind Info:
+22 (+26.83%) : 24854.dasm - System.Threading.AsyncMutex:EnterAsync(System.Threading.CancellationToken):System.Threading.Tasks.Task:this (Tier1)
@@ -5,11 +5,11 @@
; optimized using Dynamic PGO
; rsp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 614792
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 614792
; 1 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 5, 4 ) ref -> rcx this class-hnd single-def <System.Threading.AsyncMutex>
+; V00 this [V00,T00] ( 7, 4 ) ref -> rcx this class-hnd single-def <System.Threading.AsyncMutex>
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.Threading.CancellationToken>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03,T02] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
@@ -19,15 +19,15 @@
;
; Lcl frame size = 40
-G_M29220_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M29220_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
sub rsp, 40
;; size=4 bbWeight=1 PerfScore 0.25
G_M29220_IG02: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx rdx]
test rdx, rdx
- jne SHORT G_M29220_IG05
+ jne SHORT G_M29220_IG06
;; size=5 bbWeight=1 PerfScore 1.25
-G_M29220_IG03: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
+G_M29220_IG03: ; bbWeight=1.00, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [rcx], cl
lea rax, bword ptr [rcx+0x10]
; byrRegs +[rax]
@@ -35,22 +35,25 @@ G_M29220_IG03: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {},
lock
xadd dword ptr [rax], r8d
dec r8d
- js SHORT G_M29220_IG08
- mov rax, 0xD1FFAB1E ; const ptr
+ js SHORT G_M29220_IG10
+ ;; size=22 bbWeight=1.00 PerfScore 22.00
+G_M29220_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rcx rdx]
; byrRegs -[rax]
+ mov rax, 0xD1FFAB1E ; const ptr
mov rax, gword ptr [rax]
; gcrRegs +[rax]
- ;; size=35 bbWeight=1 PerfScore 24.25
-G_M29220_IG04: ; bbWeight=1, epilog, nogc, extend
+ ;; size=13 bbWeight=1 PerfScore 2.25
+G_M29220_IG05: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
-G_M29220_IG05: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax]
+G_M29220_IG06: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rax] +[rcx rdx]
cmp dword ptr [rdx+0x20], 0
- je SHORT G_M29220_IG03
+ je SHORT G_M29220_IG09
;; size=6 bbWeight=0.00 PerfScore 0.00
-G_M29220_IG06: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
+G_M29220_IG07: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
mov rcx, rdx
; gcrRegs +[rcx]
@@ -59,23 +62,34 @@ G_M29220_IG06: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byr
; gcr arg pop 0
nop
;; size=10 bbWeight=0 PerfScore 0.00
-G_M29220_IG07: ; bbWeight=0, epilog, nogc, extend
+G_M29220_IG08: ; bbWeight=0, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=0 PerfScore 0.00
-G_M29220_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref
+G_M29220_IG09: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] +[rcx rdx]
+ cmp byte ptr [rcx], cl
+ lea rax, bword ptr [rcx+0x10]
+ ; byrRegs +[rax]
+ mov r8d, -1
+ lock
+ xadd dword ptr [rax], r8d
+ dec r8d
+ jns SHORT G_M29220_IG04
+ ;; size=22 bbWeight=0.00 PerfScore 0.00
+G_M29220_IG10: ; bbWeight=0, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref
+ ; byrRegs -[rax]
call [<unknown method>]
; gcrRegs -[rcx rdx] +[rax]
; gcr arg pop 0
nop
;; size=7 bbWeight=0 PerfScore 0.00
-G_M29220_IG09: ; bbWeight=0, epilog, nogc, extend
+G_M29220_IG11: ; bbWeight=0, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=0 PerfScore 0.00
-; Total bytes of code 82, prolog size 4, PerfScore 27.00, instruction count 25, allocated bytes for code 82 (MethodHash=7e578ddb) for method System.Threading.AsyncMutex:EnterAsync(System.Threading.CancellationToken):System.Threading.Tasks.Task:this (Tier1)
+; Total bytes of code 104, prolog size 4, PerfScore 27.00, instruction count 32, allocated bytes for code 104 (MethodHash=7e578ddb) for method System.Threading.AsyncMutex:EnterAsync(System.Threading.CancellationToken):System.Threading.Tasks.Task:this (Tier1)
; ============================================================
Unwind Info:
+22 (+26.83%) : 23951.dasm - System.Threading.AsyncMutex:EnterAsync(System.Threading.CancellationToken):System.Threading.Tasks.Task:this (Tier1)
@@ -5,11 +5,11 @@
; optimized using Dynamic PGO
; rsp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 613632
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 613632
; 1 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 5, 4 ) ref -> rcx this class-hnd single-def <System.Threading.AsyncMutex>
+; V00 this [V00,T00] ( 7, 4 ) ref -> rcx this class-hnd single-def <System.Threading.AsyncMutex>
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.Threading.CancellationToken>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03,T02] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
@@ -19,15 +19,15 @@
;
; Lcl frame size = 40
-G_M29220_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M29220_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
sub rsp, 40
;; size=4 bbWeight=1 PerfScore 0.25
G_M29220_IG02: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx rdx]
test rdx, rdx
- jne SHORT G_M29220_IG05
+ jne SHORT G_M29220_IG06
;; size=5 bbWeight=1 PerfScore 1.25
-G_M29220_IG03: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
+G_M29220_IG03: ; bbWeight=1.00, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [rcx], cl
lea rax, bword ptr [rcx+0x10]
; byrRegs +[rax]
@@ -35,22 +35,25 @@ G_M29220_IG03: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {},
lock
xadd dword ptr [rax], r8d
dec r8d
- js SHORT G_M29220_IG08
- mov rax, 0xD1FFAB1E ; const ptr
+ js SHORT G_M29220_IG10
+ ;; size=22 bbWeight=1.00 PerfScore 22.00
+G_M29220_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rcx rdx]
; byrRegs -[rax]
+ mov rax, 0xD1FFAB1E ; const ptr
mov rax, gword ptr [rax]
; gcrRegs +[rax]
- ;; size=35 bbWeight=1 PerfScore 24.25
-G_M29220_IG04: ; bbWeight=1, epilog, nogc, extend
+ ;; size=13 bbWeight=1 PerfScore 2.25
+G_M29220_IG05: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
-G_M29220_IG05: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax]
+G_M29220_IG06: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rax] +[rcx rdx]
cmp dword ptr [rdx+0x20], 0
- je SHORT G_M29220_IG03
+ je SHORT G_M29220_IG09
;; size=6 bbWeight=0.00 PerfScore 0.00
-G_M29220_IG06: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
+G_M29220_IG07: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
mov rcx, rdx
; gcrRegs +[rcx]
@@ -59,23 +62,34 @@ G_M29220_IG06: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byr
; gcr arg pop 0
nop
;; size=10 bbWeight=0 PerfScore 0.00
-G_M29220_IG07: ; bbWeight=0, epilog, nogc, extend
+G_M29220_IG08: ; bbWeight=0, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=0 PerfScore 0.00
-G_M29220_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref
+G_M29220_IG09: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] +[rcx rdx]
+ cmp byte ptr [rcx], cl
+ lea rax, bword ptr [rcx+0x10]
+ ; byrRegs +[rax]
+ mov r8d, -1
+ lock
+ xadd dword ptr [rax], r8d
+ dec r8d
+ jns SHORT G_M29220_IG04
+ ;; size=22 bbWeight=0.00 PerfScore 0.00
+G_M29220_IG10: ; bbWeight=0, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref
+ ; byrRegs -[rax]
call [<unknown method>]
; gcrRegs -[rcx rdx] +[rax]
; gcr arg pop 0
nop
;; size=7 bbWeight=0 PerfScore 0.00
-G_M29220_IG09: ; bbWeight=0, epilog, nogc, extend
+G_M29220_IG11: ; bbWeight=0, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=0 PerfScore 0.00
-; Total bytes of code 82, prolog size 4, PerfScore 27.00, instruction count 25, allocated bytes for code 82 (MethodHash=7e578ddb) for method System.Threading.AsyncMutex:EnterAsync(System.Threading.CancellationToken):System.Threading.Tasks.Task:this (Tier1)
+; Total bytes of code 104, prolog size 4, PerfScore 27.00, instruction count 32, allocated bytes for code 104 (MethodHash=7e578ddb) for method System.Threading.AsyncMutex:EnterAsync(System.Threading.CancellationToken):System.Threading.Tasks.Task:this (Tier1)
; ============================================================
Unwind Info:
+22 (+26.83%) : 24388.dasm - System.Threading.AsyncMutex:EnterAsync(System.Threading.CancellationToken):System.Threading.Tasks.Task:this (Tier1)
@@ -5,11 +5,11 @@
; optimized using Dynamic PGO
; rsp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 725760
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 725760
; 1 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 5, 4 ) ref -> rcx this class-hnd single-def <System.Threading.AsyncMutex>
+; V00 this [V00,T00] ( 7, 4 ) ref -> rcx this class-hnd single-def <System.Threading.AsyncMutex>
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.Threading.CancellationToken>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03,T02] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
@@ -19,15 +19,15 @@
;
; Lcl frame size = 40
-G_M29220_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M29220_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
sub rsp, 40
;; size=4 bbWeight=1 PerfScore 0.25
G_M29220_IG02: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx rdx]
test rdx, rdx
- jne SHORT G_M29220_IG05
+ jne SHORT G_M29220_IG06
;; size=5 bbWeight=1 PerfScore 1.25
-G_M29220_IG03: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
+G_M29220_IG03: ; bbWeight=1.00, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [rcx], cl
lea rax, bword ptr [rcx+0x10]
; byrRegs +[rax]
@@ -35,22 +35,25 @@ G_M29220_IG03: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {},
lock
xadd dword ptr [rax], r8d
dec r8d
- js SHORT G_M29220_IG08
- mov rax, 0xD1FFAB1E ; const ptr
+ js SHORT G_M29220_IG10
+ ;; size=22 bbWeight=1.00 PerfScore 22.00
+G_M29220_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rcx rdx]
; byrRegs -[rax]
+ mov rax, 0xD1FFAB1E ; const ptr
mov rax, gword ptr [rax]
; gcrRegs +[rax]
- ;; size=35 bbWeight=1 PerfScore 24.25
-G_M29220_IG04: ; bbWeight=1, epilog, nogc, extend
+ ;; size=13 bbWeight=1 PerfScore 2.25
+G_M29220_IG05: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
-G_M29220_IG05: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax]
+G_M29220_IG06: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rax] +[rcx rdx]
cmp dword ptr [rdx+0x20], 0
- je SHORT G_M29220_IG03
+ je SHORT G_M29220_IG09
;; size=6 bbWeight=0.00 PerfScore 0.00
-G_M29220_IG06: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
+G_M29220_IG07: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
mov rcx, rdx
; gcrRegs +[rcx]
@@ -59,23 +62,34 @@ G_M29220_IG06: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byr
; gcr arg pop 0
nop
;; size=10 bbWeight=0 PerfScore 0.00
-G_M29220_IG07: ; bbWeight=0, epilog, nogc, extend
+G_M29220_IG08: ; bbWeight=0, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=0 PerfScore 0.00
-G_M29220_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref
+G_M29220_IG09: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] +[rcx rdx]
+ cmp byte ptr [rcx], cl
+ lea rax, bword ptr [rcx+0x10]
+ ; byrRegs +[rax]
+ mov r8d, -1
+ lock
+ xadd dword ptr [rax], r8d
+ dec r8d
+ jns SHORT G_M29220_IG04
+ ;; size=22 bbWeight=0.00 PerfScore 0.00
+G_M29220_IG10: ; bbWeight=0, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref
+ ; byrRegs -[rax]
call [<unknown method>]
; gcrRegs -[rcx rdx] +[rax]
; gcr arg pop 0
nop
;; size=7 bbWeight=0 PerfScore 0.00
-G_M29220_IG09: ; bbWeight=0, epilog, nogc, extend
+G_M29220_IG11: ; bbWeight=0, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=0 PerfScore 0.00
-; Total bytes of code 82, prolog size 4, PerfScore 27.00, instruction count 25, allocated bytes for code 82 (MethodHash=7e578ddb) for method System.Threading.AsyncMutex:EnterAsync(System.Threading.CancellationToken):System.Threading.Tasks.Task:this (Tier1)
+; Total bytes of code 104, prolog size 4, PerfScore 27.00, instruction count 32, allocated bytes for code 104 (MethodHash=7e578ddb) for method System.Threading.AsyncMutex:EnterAsync(System.Threading.CancellationToken):System.Threading.Tasks.Task:this (Tier1)
; ============================================================
Unwind Info:
benchmarks.run_pgo.windows.x64.checked.mch
-26 (-9.77%) : 91658.dasm - System.String:Substring(int):System.String:this (Tier1)
@@ -39,34 +39,52 @@ G_M5637_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rsi]
mov ebx, edx
;; size=13 bbWeight=1 PerfScore 4.75
-G_M5637_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+G_M5637_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
test ebx, ebx
- je G_M5637_IG09
+ je G_M5637_IG11
mov edi, dword ptr [rsi+0x08]
mov ebp, edi
sub ebp, ebx
- je G_M5637_IG11
+ je G_M5637_IG13
cmp edi, ebx
- jb G_M5637_IG13
+ jb G_M5637_IG15
test ebx, ebx
- jl G_M5637_IG14
+ jl SHORT G_M5637_IG03
xor ecx, ecx
cmp edi, ebx
setge cl
test cl, cl
- je G_M5637_IG14
- ;; size=52 bbWeight=1 PerfScore 10.00
+ jne SHORT G_M5637_IG04
+ ;; size=44 bbWeight=1 PerfScore 10.00
G_M5637_IG03: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+ mov rcx, 0xD1FFAB1E
+ ; gcrRegs +[rcx]
+ mov rdx, 0xD1FFAB1E
+ ; gcrRegs +[rdx]
+ call [<unknown method>]
+ ; gcrRegs -[rcx rdx]
+ ; gcr arg pop 0
+ ;; size=26 bbWeight=1 PerfScore 3.50
+G_M5637_IG04: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
test ebp, ebp
- jl G_M5637_IG15
+ jl SHORT G_M5637_IG05
sub edi, ebp
xor ecx, ecx
cmp edi, ebx
setge cl
test cl, cl
- je G_M5637_IG15
- ;; size=25 bbWeight=1 PerfScore 4.25
-G_M5637_IG04: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M5637_IG06
+ ;; size=17 bbWeight=1 PerfScore 4.25
+G_M5637_IG05: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+ mov rcx, 0xD1FFAB1E
+ ; gcrRegs +[rcx]
+ mov rdx, 0xD1FFAB1E
+ ; gcrRegs +[rdx]
+ call [<unknown method>]
+ ; gcrRegs -[rcx rdx]
+ ; gcr arg pop 0
+ ;; size=26 bbWeight=1 PerfScore 3.50
+G_M5637_IG06: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
mov ecx, ebp
call <unknown method>
; gcrRegs +[rax]
@@ -82,26 +100,26 @@ G_M5637_IG04: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byre
; byrRegs +[rdx]
add r8, r8
cmp r8, 6
- jne SHORT G_M5637_IG06
+ jne SHORT G_M5637_IG08
;; size=36 bbWeight=1 PerfScore 8.00
-G_M5637_IG05: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0006 {rcx rdx}, byref, isz
+G_M5637_IG07: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0006 {rcx rdx}, byref, isz
; gcrRegs -[rax rsi]
mov eax, dword ptr [rdx]
mov r8d, dword ptr [rdx+0x02]
mov dword ptr [rcx], eax
mov dword ptr [rcx+0x02], r8d
- jmp SHORT G_M5637_IG07
+ jmp SHORT G_M5637_IG09
;; size=14 bbWeight=0.50 PerfScore 4.00
-G_M5637_IG06: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0006 {rcx rdx}, byref
+G_M5637_IG08: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0006 {rcx rdx}, byref
call [<unknown method>]
; byrRegs -[rcx rdx]
; gcr arg pop 0
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M5637_IG07: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+G_M5637_IG09: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
mov rax, rdi
; gcrRegs +[rax]
;; size=3 bbWeight=1 PerfScore 0.25
-G_M5637_IG08: ; bbWeight=1, epilog, nogc, extend
+G_M5637_IG10: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
@@ -109,24 +127,11 @@ G_M5637_IG08: ; bbWeight=1, epilog, nogc, extend
pop rdi
ret
;; size=9 bbWeight=1 PerfScore 3.25
-G_M5637_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
+G_M5637_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rdi] +[rsi]
mov rax, rsi
; gcrRegs +[rax]
;; size=3 bbWeight=0 PerfScore 0.00
-G_M5637_IG10: ; bbWeight=0, epilog, nogc, extend
- add rsp, 40
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- ret
- ;; size=9 bbWeight=0 PerfScore 0.00
-G_M5637_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax rsi]
- mov rax, 0xD1FFAB1E
- ; gcrRegs +[rax]
- ;; size=10 bbWeight=0 PerfScore 0.00
G_M5637_IG12: ; bbWeight=0, epilog, nogc, extend
add rsp, 40
pop rbx
@@ -135,7 +140,20 @@ G_M5637_IG12: ; bbWeight=0, epilog, nogc, extend
pop rdi
ret
;; size=9 bbWeight=0 PerfScore 0.00
-G_M5637_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
+G_M5637_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax rsi]
+ mov rax, 0xD1FFAB1E
+ ; gcrRegs +[rax]
+ ;; size=10 bbWeight=0 PerfScore 0.00
+G_M5637_IG14: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 40
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ ret
+ ;; size=9 bbWeight=0 PerfScore 0.00
+G_M5637_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax] +[rsi]
mov rcx, rsi
; gcrRegs +[rcx]
@@ -146,29 +164,8 @@ G_M5637_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {r
; gcr arg pop 0
int3
;; size=15 bbWeight=0 PerfScore 0.00
-G_M5637_IG14: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rsi]
- mov rcx, 0xD1FFAB1E
- ; gcrRegs +[rcx]
- mov rdx, 0xD1FFAB1E
- ; gcrRegs +[rdx]
- call [<unknown method>]
- ; gcrRegs -[rcx rdx]
- ; gcr arg pop 0
- jmp G_M5637_IG03
- ;; size=31 bbWeight=0 PerfScore 0.00
-G_M5637_IG15: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
- mov rcx, 0xD1FFAB1E
- ; gcrRegs +[rcx]
- mov rdx, 0xD1FFAB1E
- ; gcrRegs +[rdx]
- call [<unknown method>]
- ; gcrRegs -[rcx rdx]
- ; gcr arg pop 0
- jmp G_M5637_IG04
- ;; size=31 bbWeight=0 PerfScore 0.00
-; Total bytes of code 266, prolog size 8, PerfScore 36.00, instruction count 81, allocated bytes for code 266 (MethodHash=28a4e9fa) for method System.String:Substring(int):System.String:this (Tier1)
+; Total bytes of code 240, prolog size 8, PerfScore 43.00, instruction count 79, allocated bytes for code 240 (MethodHash=28a4e9fa) for method System.String:Substring(int):System.String:this (Tier1)
; ============================================================
Unwind Info:
-26 (-9.06%) : 64594.dasm - System.Text.RegularExpressions.Capture:get_Value():System.String:this (Tier1)
@@ -13,11 +13,11 @@
; V01 loc0 [V01,T04] ( 6, 4 ) ref -> rbx class-hnd exact single-def <System.String>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 8, 12 ) int -> rsi "impAppendStmt"
-; V04 tmp2 [V04,T10] ( 4, 2 ) ref -> rax class-hnd "Inline return value spill temp" <System.String>
+; V04 tmp2 [V04,T08] ( 4, 2 ) ref -> rax class-hnd "Inline return value spill temp" <System.String>
; V05 tmp3 [V05,T00] ( 9, 16 ) int -> rdi "Inlining Arg"
;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
-; V07 tmp5 [V07,T08] ( 2, 2 ) int -> rcx
-; V08 tmp6 [V08,T09] ( 2, 2 ) int -> rcx
+; V07 tmp5 [V07,T09] ( 2, 2 ) int -> rcx
+; V08 tmp6 [V08,T10] ( 2, 2 ) int -> rcx
; V09 tmp7 [V09,T05] ( 4, 4 ) ref -> rbp class-hnd exact single-def "Inline stloc first use temp" <System.String>
; V10 tmp8 [V10,T11] ( 2, 2 ) long -> r8 "Inline stloc first use temp"
;* V11 tmp9 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -37,45 +37,63 @@ G_M53842_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbx
sub rsp, 40
;; size=8 bbWeight=1 PerfScore 4.25
-G_M53842_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+G_M53842_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx]
mov rbx, gword ptr [rcx+0x08]
; gcrRegs +[rbx]
test rbx, rbx
- je G_M53842_IG06
+ je G_M53842_IG08
mov esi, dword ptr [rcx+0x10]
mov edi, dword ptr [rcx+0x14]
mov ecx, esi
; gcrRegs -[rcx]
- mov eax, edi
- add rcx, rax
+ mov edx, edi
+ add rcx, rdx
mov ebp, dword ptr [rbx+0x08]
- mov eax, ebp
- cmp rcx, rax
- ja G_M53842_IG08
+ mov edx, ebp
+ cmp rcx, rdx
+ ja G_M53842_IG10
test edi, edi
- je G_M53842_IG09
+ je G_M53842_IG11
cmp ebp, edi
- je G_M53842_IG10
+ je G_M53842_IG12
test esi, esi
- jl G_M53842_IG11
+ jl SHORT G_M53842_IG03
xor ecx, ecx
cmp ebp, esi
setge cl
test cl, cl
- je G_M53842_IG11
- ;; size=79 bbWeight=1 PerfScore 18.00
+ jne SHORT G_M53842_IG04
+ ;; size=71 bbWeight=1 PerfScore 18.00
G_M53842_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov rcx, 0xD1FFAB1E
+ ; gcrRegs +[rcx]
+ mov rdx, 0xD1FFAB1E
+ ; gcrRegs +[rdx]
+ call [<unknown method>]
+ ; gcrRegs -[rcx rdx]
+ ; gcr arg pop 0
+ ;; size=26 bbWeight=1 PerfScore 3.50
+G_M53842_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
test edi, edi
- jl G_M53842_IG12
+ jl SHORT G_M53842_IG05
sub ebp, edi
xor ecx, ecx
cmp ebp, esi
setge cl
test cl, cl
- je G_M53842_IG12
- ;; size=25 bbWeight=1 PerfScore 4.25
-G_M53842_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ jne SHORT G_M53842_IG06
+ ;; size=17 bbWeight=1 PerfScore 4.25
+G_M53842_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov rcx, 0xD1FFAB1E
+ ; gcrRegs +[rcx]
+ mov rdx, 0xD1FFAB1E
+ ; gcrRegs +[rdx]
+ call [<unknown method>]
+ ; gcrRegs -[rcx rdx]
+ ; gcr arg pop 0
+ ;; size=26 bbWeight=1 PerfScore 3.50
+G_M53842_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov ecx, edi
call <unknown method>
; gcrRegs +[rax]
@@ -97,7 +115,7 @@ G_M53842_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
mov rax, rbp
; gcrRegs +[rax]
;; size=40 bbWeight=1 PerfScore 10.00
-G_M53842_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M53842_IG07: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbp]
add rsp, 40
pop rbx
@@ -106,12 +124,12 @@ G_M53842_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byr
pop rdi
ret
;; size=9 bbWeight=1 PerfScore 3.25
-G_M53842_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M53842_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
mov rax, 0xD1FFAB1E
; gcrRegs +[rax]
;; size=10 bbWeight=0 PerfScore 0.00
-G_M53842_IG07: ; bbWeight=0, epilog, nogc, extend
+G_M53842_IG09: ; bbWeight=0, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
@@ -119,7 +137,7 @@ G_M53842_IG07: ; bbWeight=0, epilog, nogc, extend
pop rdi
ret
;; size=9 bbWeight=0 PerfScore 0.00
-G_M53842_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M53842_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax] +[rbx]
mov rcx, rbx
; gcrRegs +[rcx]
@@ -130,12 +148,12 @@ G_M53842_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {
; gcr arg pop 0
int3
;; size=15 bbWeight=0 PerfScore 0.00
-G_M53842_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M53842_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rax, 0xD1FFAB1E
; gcrRegs +[rax]
- jmp SHORT G_M53842_IG05
+ jmp SHORT G_M53842_IG07
;; size=12 bbWeight=0 PerfScore 0.00
-G_M53842_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M53842_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] +[rbx]
xor ecx, ecx
test esi, esi
@@ -144,31 +162,10 @@ G_M53842_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcr arg pop 0
mov rax, rbx
; gcrRegs +[rax]
- jmp SHORT G_M53842_IG05
+ jmp SHORT G_M53842_IG07
;; size=18 bbWeight=0 PerfScore 0.00
-G_M53842_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rcx, 0xD1FFAB1E
- ; gcrRegs +[rcx]
- mov rdx, 0xD1FFAB1E
- ; gcrRegs +[rdx]
- call [<unknown method>]
- ; gcrRegs -[rcx rdx]
- ; gcr arg pop 0
- jmp G_M53842_IG03
- ;; size=31 bbWeight=0 PerfScore 0.00
-G_M53842_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- mov rcx, 0xD1FFAB1E
- ; gcrRegs +[rcx]
- mov rdx, 0xD1FFAB1E
- ; gcrRegs +[rdx]
- call [<unknown method>]
- ; gcrRegs -[rcx rdx]
- ; gcr arg pop 0
- jmp G_M53842_IG04
- ;; size=31 bbWeight=0 PerfScore 0.00
-; Total bytes of code 287, prolog size 8, PerfScore 39.75, instruction count 81, allocated bytes for code 287 (MethodHash=66b42dad) for method System.Text.RegularExpressions.Capture:get_Value():System.String:this (Tier1)
+; Total bytes of code 261, prolog size 8, PerfScore 46.75, instruction count 79, allocated bytes for code 261 (MethodHash=66b42dad) for method System.Text.RegularExpressions.Capture:get_Value():System.String:this (Tier1)
; ============================================================
Unwind Info:
-26 (-9.06%) : 78204.dasm - System.String:Substring(int,int):System.String:this (Tier1)
@@ -29,7 +29,7 @@
;
; Lcl frame size = 40
-G_M1562_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M1562_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rdi
push rsi
push rbp
@@ -40,37 +40,55 @@ G_M1562_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov esi, edx
mov ebx, r8d
;; size=16 bbWeight=1 PerfScore 5.00
-G_M1562_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+G_M1562_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
mov ecx, esi
- mov eax, ebx
- add rcx, rax
+ mov edx, ebx
+ add rcx, rdx
mov ebp, dword ptr [rdi+0x08]
- mov eax, ebp
- cmp rcx, rax
- ja G_M1562_IG09
+ mov edx, ebp
+ cmp rcx, rdx
+ ja G_M1562_IG11
test ebx, ebx
- je G_M1562_IG10
- cmp ebp, ebx
je G_M1562_IG12
+ cmp ebp, ebx
+ je G_M1562_IG14
test esi, esi
- jl G_M1562_IG14
+ jl SHORT G_M1562_IG03
xor ecx, ecx
cmp ebp, esi
setge cl
test cl, cl
- je G_M1562_IG14
- ;; size=60 bbWeight=1 PerfScore 10.75
+ jne SHORT G_M1562_IG04
+ ;; size=52 bbWeight=1 PerfScore 10.75
G_M1562_IG03: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ mov rcx, 0xD1FFAB1E
+ ; gcrRegs +[rcx]
+ mov rdx, 0xD1FFAB1E
+ ; gcrRegs +[rdx]
+ call [<unknown method>]
+ ; gcrRegs -[rcx rdx]
+ ; gcr arg pop 0
+ ;; size=26 bbWeight=1 PerfScore 3.50
+G_M1562_IG04: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
test ebx, ebx
- jl G_M1562_IG15
+ jl SHORT G_M1562_IG05
sub ebp, ebx
xor ecx, ecx
cmp ebp, esi
setge cl
test cl, cl
- je G_M1562_IG15
- ;; size=25 bbWeight=1 PerfScore 4.25
-G_M1562_IG04: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M1562_IG06
+ ;; size=17 bbWeight=1 PerfScore 4.25
+G_M1562_IG05: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ mov rcx, 0xD1FFAB1E
+ ; gcrRegs +[rcx]
+ mov rdx, 0xD1FFAB1E
+ ; gcrRegs +[rdx]
+ call [<unknown method>]
+ ; gcrRegs -[rcx rdx]
+ ; gcr arg pop 0
+ ;; size=26 bbWeight=1 PerfScore 3.50
+G_M1562_IG06: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
mov ecx, ebx
call <unknown method>
; gcrRegs +[rax]
@@ -86,24 +104,24 @@ G_M1562_IG04: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byre
; byrRegs +[rdx]
add r8, r8
cmp r8, 2
- jne SHORT G_M1562_IG06
+ jne SHORT G_M1562_IG08
;; size=37 bbWeight=1 PerfScore 8.00
-G_M1562_IG05: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0006 {rcx rdx}, byref, isz
+G_M1562_IG07: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0006 {rcx rdx}, byref, isz
; gcrRegs -[rax rdi]
movzx r8, word ptr [rdx]
mov word ptr [rcx], r8w
- jmp SHORT G_M1562_IG07
+ jmp SHORT G_M1562_IG09
;; size=10 bbWeight=0.50 PerfScore 2.50
-G_M1562_IG06: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0006 {rcx rdx}, byref
+G_M1562_IG08: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0006 {rcx rdx}, byref
call [<unknown method>]
; byrRegs -[rcx rdx]
; gcr arg pop 0
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M1562_IG07: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref
+G_M1562_IG09: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref
mov rax, rbp
; gcrRegs +[rax]
;; size=3 bbWeight=1 PerfScore 0.25
-G_M1562_IG08: ; bbWeight=1, epilog, nogc, extend
+G_M1562_IG10: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
@@ -111,7 +129,7 @@ G_M1562_IG08: ; bbWeight=1, epilog, nogc, extend
pop rdi
ret
;; size=9 bbWeight=1 PerfScore 3.25
-G_M1562_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
+G_M1562_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rbp] +[rdi]
mov rcx, rdi
; gcrRegs +[rcx]
@@ -122,28 +140,10 @@ G_M1562_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0080 {r
; gcr arg pop 0
int3
;; size=15 bbWeight=0 PerfScore 0.00
-G_M1562_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M1562_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rax, 0xD1FFAB1E
; gcrRegs +[rax]
;; size=10 bbWeight=0 PerfScore 0.00
-G_M1562_IG11: ; bbWeight=0, epilog, nogc, extend
- add rsp, 40
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- ret
- ;; size=9 bbWeight=0 PerfScore 0.00
-G_M1562_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax] +[rdi]
- xor ecx, ecx
- test esi, esi
- sete cl
- call [System.Diagnostics.Debug:Assert(ubyte)]
- ; gcr arg pop 0
- mov rax, rdi
- ; gcrRegs +[rax]
- ;; size=16 bbWeight=0 PerfScore 0.00
G_M1562_IG13: ; bbWeight=0, epilog, nogc, extend
add rsp, 40
pop rbx
@@ -153,28 +153,25 @@ G_M1562_IG13: ; bbWeight=0, epilog, nogc, extend
ret
;; size=9 bbWeight=0 PerfScore 0.00
G_M1562_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax]
- mov rcx, 0xD1FFAB1E
- ; gcrRegs +[rcx]
- mov rdx, 0xD1FFAB1E
- ; gcrRegs +[rdx]
- call [<unknown method>]
- ; gcrRegs -[rcx rdx]
+ ; gcrRegs -[rax] +[rdi]
+ xor ecx, ecx
+ test esi, esi
+ sete cl
+ call [System.Diagnostics.Debug:Assert(ubyte)]
; gcr arg pop 0
- jmp G_M1562_IG03
- ;; size=31 bbWeight=0 PerfScore 0.00
-G_M1562_IG15: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
- mov rcx, 0xD1FFAB1E
- ; gcrRegs +[rcx]
- mov rdx, 0xD1FFAB1E
- ; gcrRegs +[rdx]
- call [<unknown method>]
- ; gcrRegs -[rcx rdx]
- ; gcr arg pop 0
- jmp G_M1562_IG04
- ;; size=31 bbWeight=0 PerfScore 0.00
+ mov rax, rdi
+ ; gcrRegs +[rax]
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M1562_IG15: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 40
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ ret
+ ;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 287, prolog size 8, PerfScore 35.50, instruction count 87, allocated bytes for code 287 (MethodHash=c7e4f9e5) for method System.String:Substring(int,int):System.String:this (Tier1)
+; Total bytes of code 261, prolog size 8, PerfScore 42.50, instruction count 85, allocated bytes for code 261 (MethodHash=c7e4f9e5) for method System.String:Substring(int,int):System.String:this (Tier1)
; ============================================================
Unwind Info:
+41 (+9.58%) : 95191.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder:Translate(System.Collections.Immutable.ImmutableArray1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol]):System.Collections.Immutable.ImmutableArray1[Microsoft.Cci.IParameterTypeInformation]:this (Tier1)
@@ -9,254 +9,182 @@
; 8 inlinees with PGO data; 13 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 3, 2 ) ref -> rsi this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder>
+; V00 this [V00,T02] ( 3, 2 ) ref -> rsi this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder>
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol]>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T10] ( 2, 1.60) int -> rdi
+; V03 tmp1 [V03,T10] ( 2, 1.20) int -> r13
;* V04 tmp2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol]>
-; V05 tmp3 [V05,T08] ( 6, 2.41) ref -> rdi class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol>
+; V05 tmp3 [V05,T07] ( 6, 2.41) ref -> rdi class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol>
;* V06 tmp4 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol]>
-; V07 tmp5 [V07,T14] ( 3, 1.20) ubyte -> rdi "Inline return value spill temp"
-; V08 tmp6 [V08,T05] ( 8, 3.01) ref -> rbp "guarded devirt return temp"
+; V07 tmp5 [V07,T12] ( 3, 1.20) ubyte -> r13 "Inline return value spill temp"
+; V08 tmp6 [V08,T05] ( 8, 2.41) ref -> rbp "guarded devirt return temp"
;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEParameterSymbol>
-; V10 tmp8 [V10,T07] ( 7, 2.41) ref -> rcx "guarded devirt return temp"
+; V10 tmp8 [V10,T06] ( 7, 2.41) ref -> rcx "guarded devirt return temp"
;* V11 tmp9 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEParameterSymbol>
-; V12 tmp10 [V12,T15] ( 2, 1.20) ubyte -> rdi "Inline return value spill temp"
-; V13 tmp11 [V13,T06] ( 3, 3.01) long -> rcx "fgMakeTemp is creating a new local variable"
-; V14 tmp12 [V14,T04] ( 4, 3.61) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol>
-; V15 tmp13 [V15,T11] ( 2, 1.20) int -> rax "guarded devirt return temp"
+; V12 tmp10 [V12,T13] ( 2, 1.20) ubyte -> r13 "Inline return value spill temp"
+; V13 tmp11 [V13,T04] ( 3, 3.01) long -> rcx "fgMakeTemp is creating a new local variable"
+; V14 tmp12 [V14,T09] ( 4, 2.41) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol>
+; V15 tmp13 [V15,T15] ( 2, 0 ) int -> rax "guarded devirt return temp"
;* V16 tmp14 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol>
-; V17 tmp15 [V17,T16] ( 2, 1.20) int -> rax "guarded devirt return temp"
+; V17 tmp15 [V17,T18] ( 2, 0 ) int -> rax "guarded devirt return temp"
;* V18 tmp16 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol>
-; V19 tmp17 [V19,T13] ( 3, 1.20) ref -> r15 "guarded devirt return temp"
+; V19 tmp17 [V19,T11] ( 3, 1.20) ref -> r15 "guarded devirt return temp"
;* V20 tmp18 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol>
-; V21 tmp19 [V21,T12] ( 3, 1.47) ubyte -> rdi "Inline return value spill temp"
-; V22 tmp20 [V22,T00] ( 10, 5.62) ref -> r15 class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
-; V23 tmp21 [V23,T17] ( 2, 0.54) int -> rax "guarded devirt return temp"
+; V21 tmp19 [V21,T14] ( 3, 1.20) ubyte -> r13 "Inline return value spill temp"
+; V22 tmp20 [V22,T01] ( 10, 4.55) ref -> r15 class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
+; V23 tmp21 [V23,T17] ( 2, 0 ) int -> rax "guarded devirt return temp"
;* V24 tmp22 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolNonGeneric>
-; V25 tmp23 [V25,T18] ( 3, 0.54) ref -> rax "guarded devirt return temp"
+; V25 tmp23 [V25,T16] ( 3, 0.54) ref -> r15 "guarded devirt return temp"
;* V26 tmp24 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolNonGeneric>
;* V27 tmp25 [V27 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.IParameterTypeInformation]>
;* V28 tmp26 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
;* V29 tmp27 [V29 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.IParameterTypeInformation]>
-; V30 tmp28 [V30,T01] ( 5, 3.60) ref -> rbx single-def "field V01.array (fldOffset=0x0)" P-INDEP
+; V30 tmp28 [V30,T00] ( 5, 3.60) ref -> rbx single-def "field V01.array (fldOffset=0x0)" P-INDEP
;* V31 tmp29 [V31 ] ( 0, 0 ) ref -> zero-ref single-def "field V04.array (fldOffset=0x0)" P-INDEP
;* V32 tmp30 [V32 ] ( 0, 0 ) ref -> zero-ref single-def "field V06.array (fldOffset=0x0)" P-INDEP
;* V33 tmp31 [V33 ] ( 0, 0 ) ref -> zero-ref "field V27.array (fldOffset=0x0)" P-INDEP
;* V34 tmp32 [V34 ] ( 0, 0 ) ref -> zero-ref single-def "field V29.array (fldOffset=0x0)" P-INDEP
-; V35 cse0 [V35,T02] ( 8, 4.21) long -> r14 "CSE - aggressive"
-; V36 cse1 [V36,T09] ( 4, 2.41) long -> rdi "CSE - moderate"
+; V35 cse0 [V35,T03] ( 9, 3.01) long -> r14 "CSE - aggressive"
+; V36 cse1 [V36,T08] ( 5, 2.41) long -> r15 "CSE - moderate"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M61961_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
push r14
+ push r13
push rdi
push rsi
push rbp
push rbx
- sub rsp, 40
+ sub rsp, 32
mov rsi, rcx
; gcrRegs +[rsi]
mov rbx, rdx
; gcrRegs +[rbx]
- ;; size=18 bbWeight=1 PerfScore 6.75
-G_M61961_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ;; size=20 bbWeight=1 PerfScore 7.75
+G_M61961_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
cmp dword ptr [rbx+0x08], 0
- jle SHORT G_M61961_IG08
- ;; size=6 bbWeight=1 PerfScore 4.00
+ jle G_M61961_IG16
+ ;; size=10 bbWeight=1 PerfScore 4.00
G_M61961_IG03: ; bbWeight=0.60, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbx+0x10]
; gcrRegs +[rdi]
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEParameterSymbol
cmp qword ptr [rdi], rcx
- jne G_M61961_IG29
+ jne G_M61961_IG20
mov rcx, rdi
; gcrRegs +[rcx]
;; size=26 bbWeight=0.60 PerfScore 3.91
G_M61961_IG04: ; bbWeight=0.60, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref
cmp rdi, rcx
- jne G_M61961_IG19
- mov rax, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEParameterSymbol
- cmp qword ptr [rcx], rax
- jne G_M61961_IG30
+ jne G_M61961_IG14
+ mov rdx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEParameterSymbol
+ cmp qword ptr [rcx], rdx
+ jne G_M61961_IG21
mov rbp, gword ptr [rcx+0x10]
; gcrRegs +[rbp]
;; size=32 bbWeight=0.60 PerfScore 4.51
-G_M61961_IG05: ; bbWeight=0.60, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M61961_IG05: ; bbWeight=0.60, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx rdi]
mov r14, qword ptr [rbp]
- mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol
- cmp r14, rdi
- je SHORT G_M61961_IG12
- ;; size=19 bbWeight=0.60 PerfScore 2.10
+ mov r15, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol
+ cmp r14, r15
+ jne G_M61961_IG22
+ ;; size=23 bbWeight=0.60 PerfScore 2.10
G_M61961_IG06: ; bbWeight=0.60, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
- mov rcx, rbp
- ; gcrRegs +[rcx]
- mov rax, qword ptr [r14+0x58]
- call [rax]<unknown method>
- ; gcrRegs -[rcx]
- ; gcr arg pop 0
- cmp eax, 9
- jne G_M61961_IG31
- jmp SHORT G_M61961_IG12
- ;; size=20 bbWeight=0.60 PerfScore 5.11
-G_M61961_IG07: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbp]
- test edi, edi
- jne G_M61961_IG27
- ;; size=8 bbWeight=1 PerfScore 1.25
-G_M61961_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rsi]
- mov rax, rbx
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M61961_IG09: ; bbWeight=1, epilog, nogc, extend
- add rsp, 40
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- pop r14
- pop r15
- ret
- ;; size=13 bbWeight=1 PerfScore 4.25
-G_M61961_IG10: ; bbWeight=0.60, gcVars=0000000000000000 {}, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax] +[rsi r15]
- test r15, r15
- je G_M61961_IG23
- ;; size=9 bbWeight=0.60 PerfScore 0.75
-G_M61961_IG11: ; bbWeight=0.19, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M61961_IG21
- ;; size=2 bbWeight=0.19 PerfScore 0.37
-G_M61961_IG12: ; bbWeight=0.60, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r15] +[rbp]
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol
cmp r14, rcx
- je SHORT G_M61961_IG14
+ je SHORT G_M61961_IG08
;; size=15 bbWeight=0.60 PerfScore 0.90
-G_M61961_IG13: ; bbWeight=0.30, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M61961_IG07: ; bbWeight=0.30, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
mov rdx, rbp
; gcrRegs +[rdx]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
- jmp SHORT G_M61961_IG15
+ jmp SHORT G_M61961_IG09
;; size=10 bbWeight=0.30 PerfScore 0.98
-G_M61961_IG14: ; bbWeight=0.30, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
+G_M61961_IG08: ; bbWeight=0.30, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov rax, rbp
; gcrRegs +[rax]
;; size=3 bbWeight=0.30 PerfScore 0.08
-G_M61961_IG15: ; bbWeight=0.60, gcrefRegs=0069 {rax rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
- cmp r14, rdi
- jne SHORT G_M61961_IG16
+G_M61961_IG09: ; bbWeight=0.60, gcrefRegs=0069 {rax rbx rbp rsi}, byrefRegs=0000 {}, byref
+ cmp r14, r15
+ jne G_M61961_IG23
mov rcx, rax
; gcrRegs +[rcx]
call [<unknown method>]
; gcrRegs -[rax rcx]
; gcr arg pop 0
test eax, eax
- jg SHORT G_M61961_IG26
- jmp SHORT G_M61961_IG17
- ;; size=20 bbWeight=0.60 PerfScore 4.66
-G_M61961_IG16: ; bbWeight=0.60, gcrefRegs=0069 {rax rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rax]
- mov rcx, rax
- ; gcrRegs +[rcx]
- mov rax, qword ptr [r14+0xD0]
- ; gcrRegs -[rax]
- call [rax+0x30]<unknown method>
- ; gcrRegs -[rcx]
- ; gcr arg pop 0
- test eax, eax
- jne SHORT G_M61961_IG26
- ;; size=17 bbWeight=0.60 PerfScore 3.91
-G_M61961_IG17: ; bbWeight=0.60, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
- cmp r14, rdi
- jne G_M61961_IG31
+ jg G_M61961_IG25
+ cmp r14, r15
+ jne G_M61961_IG24
+ ;; size=35 bbWeight=0.60 PerfScore 4.21
+G_M61961_IG10: ; bbWeight=0.60, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
mov r15, gword ptr [rbp+0x20]
; gcrRegs +[r15]
- jmp SHORT G_M61961_IG10
- ;; size=15 bbWeight=0.60 PerfScore 3.16
-G_M61961_IG18: ; bbWeight=0.60, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbp r15]
- test edi, edi
- jne SHORT G_M61961_IG26
- ;; size=4 bbWeight=0.60 PerfScore 0.75
-G_M61961_IG19: ; bbWeight=0.60, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- xor edi, edi
- ;; size=2 bbWeight=0.60 PerfScore 0.15
-G_M61961_IG20: ; bbWeight=0.60, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M61961_IG07
- ;; size=2 bbWeight=0.60 PerfScore 1.20
-G_M61961_IG21: ; bbWeight=0.27, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r15]
+ ;; size=4 bbWeight=0.60 PerfScore 1.20
+G_M61961_IG11: ; bbWeight=0.60, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rbp]
+ test r15, r15
+ jne SHORT G_M61961_IG18
+ ;; size=5 bbWeight=0.60 PerfScore 0.75
+G_M61961_IG12: ; bbWeight=0.60, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r15]
+ xor r13d, r13d
+ ;; size=3 bbWeight=0.60 PerfScore 0.15
+G_M61961_IG13: ; bbWeight=0.60, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ test r13d, r13d
+ jne G_M61961_IG25
+ ;; size=9 bbWeight=0.60 PerfScore 0.75
...
+41 (+11.08%) : 96051.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder:MustBeWrapped(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol):ubyte (Tier1)
@@ -9,71 +9,65 @@
; 6 inlinees with PGO data; 6 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 7, 5 ) ref -> rbx class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol>
+; V00 arg0 [V00,T01] ( 7, 5 ) ref -> rbx class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol>
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T04] ( 8, 5 ) ref -> rsi "guarded devirt return temp"
+; V02 tmp1 [V02,T04] ( 8, 4 ) ref -> rsi "guarded devirt return temp"
;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEParameterSymbol>
-; V04 tmp3 [V04,T06] ( 7, 4 ) ref -> rcx "guarded devirt return temp"
+; V04 tmp3 [V04,T05] ( 7, 4 ) ref -> rcx "guarded devirt return temp"
;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEParameterSymbol>
-; V06 tmp5 [V06,T11] ( 2, 2 ) ubyte -> rcx "Inline return value spill temp"
-; V07 tmp6 [V07,T05] ( 3, 5 ) long -> rcx "fgMakeTemp is creating a new local variable"
-; V08 tmp7 [V08,T03] ( 4, 6 ) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol>
-; V09 tmp8 [V09,T08] ( 2, 2 ) int -> rax "guarded devirt return temp"
+; V06 tmp5 [V06,T09] ( 2, 2 ) ubyte -> r14 "Inline return value spill temp"
+; V07 tmp6 [V07,T03] ( 3, 5 ) long -> rcx "fgMakeTemp is creating a new local variable"
+; V08 tmp7 [V08,T07] ( 4, 4 ) ref -> rax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol>
+; V09 tmp8 [V09,T11] ( 2, 0 ) int -> rax "guarded devirt return temp"
;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol>
-; V11 tmp10 [V11,T12] ( 2, 2 ) int -> rax "guarded devirt return temp"
+; V11 tmp10 [V11,T14] ( 2, 0 ) int -> rax "guarded devirt return temp"
;* V12 tmp11 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol>
-; V13 tmp12 [V13,T10] ( 3, 2 ) ref -> rbx "guarded devirt return temp"
+; V13 tmp12 [V13,T08] ( 3, 2 ) ref -> rbp "guarded devirt return temp"
;* V14 tmp13 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol>
-; V15 tmp14 [V15,T09] ( 3, 2.45) ubyte -> rcx "Inline return value spill temp"
-; V16 tmp15 [V16,T00] ( 10, 9.35) ref -> rbx class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
-; V17 tmp16 [V17,T13] ( 2, 0.89) int -> rax "guarded devirt return temp"
+; V15 tmp14 [V15,T10] ( 3, 2 ) ubyte -> r14 "Inline return value spill temp"
+; V16 tmp15 [V16,T00] ( 10, 7.57) ref -> rbp class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
+; V17 tmp16 [V17,T13] ( 2, 0 ) int -> rax "guarded devirt return temp"
;* V18 tmp17 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolNonGeneric>
-; V19 tmp18 [V19,T14] ( 3, 0.89) ref -> rax "guarded devirt return temp"
+; V19 tmp18 [V19,T12] ( 3, 0.89) ref -> rbp "guarded devirt return temp"
;* V20 tmp19 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolNonGeneric>
-; V21 cse0 [V21,T01] ( 8, 7 ) long -> rdi "CSE - aggressive"
-; V22 cse1 [V22,T07] ( 4, 4 ) long -> rbx "CSE - aggressive"
+; V21 cse0 [V21,T02] ( 9, 5 ) long -> rdi "CSE - aggressive"
+; V22 cse1 [V22,T06] ( 5, 4 ) long -> rbp "CSE - aggressive"
;
; Lcl frame size = 32
G_M51640_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push r14
push rdi
push rsi
+ push rbp
push rbx
sub rsp, 32
mov rbx, rcx
; gcrRegs +[rbx]
- ;; size=10 bbWeight=1 PerfScore 3.50
+ ;; size=13 bbWeight=1 PerfScore 5.50
G_M51640_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEParameterSymbol
cmp qword ptr [rbx], rcx
- jne G_M51640_IG19
+ jne G_M51640_IG18
mov rcx, rbx
; gcrRegs +[rcx]
;; size=22 bbWeight=1 PerfScore 4.50
G_M51640_IG03: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref
cmp rbx, rcx
- jne G_M51640_IG14
- mov rax, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEParameterSymbol
- cmp qword ptr [rcx], rax
- jne G_M51640_IG20
+ jne G_M51640_IG13
+ mov rdx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEParameterSymbol
+ cmp qword ptr [rcx], rdx
+ jne G_M51640_IG19
mov rsi, gword ptr [rcx+0x10]
; gcrRegs +[rsi]
;; size=32 bbWeight=1 PerfScore 7.50
-G_M51640_IG04: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+G_M51640_IG04: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx rbx]
mov rdi, qword ptr [rsi]
- mov rbx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol
- cmp rdi, rbx
- je SHORT G_M51640_IG05
- mov rcx, rsi
- ; gcrRegs +[rcx]
- mov rax, qword ptr [rdi+0x58]
- call [rax]<unknown method>
- ; gcrRegs -[rcx]
- ; gcr arg pop 0
- cmp eax, 9
- jne G_M51640_IG21
- ;; size=36 bbWeight=1 PerfScore 10.00
+ mov rbp, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol
+ cmp rdi, rbp
+ jne G_M51640_IG20
+ ;; size=22 bbWeight=1 PerfScore 3.50
G_M51640_IG05: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol
cmp rdi, rcx
@@ -92,93 +86,75 @@ G_M51640_IG07: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {},
mov rax, rsi
; gcrRegs +[rax]
;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M51640_IG08: ; bbWeight=1, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
- cmp rdi, rbx
- jne SHORT G_M51640_IG09
+G_M51640_IG08: ; bbWeight=1, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref
+ cmp rdi, rbp
+ jne G_M51640_IG21
mov rcx, rax
; gcrRegs +[rcx]
call [<unknown method>]
; gcrRegs -[rax rcx]
; gcr arg pop 0
test eax, eax
- jg G_M51640_IG22
- jmp SHORT G_M51640_IG10
- ;; size=24 bbWeight=1 PerfScore 7.75
-G_M51640_IG09: ; bbWeight=1, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rax]
- mov rcx, rax
- ; gcrRegs +[rcx]
- mov rax, qword ptr [rdi+0xD0]
- ; gcrRegs -[rax]
- call [rax+0x30]<unknown method>
- ; gcrRegs -[rcx]
- ; gcr arg pop 0
- test eax, eax
+ jg G_M51640_IG23
+ cmp rdi, rbp
jne G_M51640_IG22
- ;; size=21 bbWeight=1 PerfScore 6.50
-G_M51640_IG10: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
- cmp rdi, rbx
- jne G_M51640_IG21
- mov rbx, gword ptr [rsi+0x20]
- ; gcrRegs +[rbx]
- ;; size=13 bbWeight=1 PerfScore 3.25
-G_M51640_IG11: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=35 bbWeight=1 PerfScore 7.00
+G_M51640_IG09: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+ mov rbp, gword ptr [rsi+0x20]
+ ; gcrRegs +[rbp]
+ ;; size=4 bbWeight=1 PerfScore 2.00
+G_M51640_IG10: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi]
- test rbx, rbx
- jne SHORT G_M51640_IG16
+ test rbp, rbp
+ jne SHORT G_M51640_IG15
;; size=5 bbWeight=1 PerfScore 1.25
+G_M51640_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbp]
+ xor r14d, r14d
+ ;; size=3 bbWeight=1 PerfScore 0.25
G_M51640_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
- xor ecx, ecx
- ;; size=2 bbWeight=1 PerfScore 0.25
+ test r14d, r14d
+ jne G_M51640_IG23
+ ;; size=9 bbWeight=1 PerfScore 1.25
G_M51640_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- test ecx, ecx
- jne G_M51640_IG22
- ;; size=8 bbWeight=1 PerfScore 1.25
-G_M51640_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor eax, eax
;; size=2 bbWeight=1 PerfScore 0.25
-G_M51640_IG15: ; bbWeight=1, epilog, nogc, extend
+G_M51640_IG14: ; bbWeight=1, epilog, nogc, extend
add rsp, 32
pop rbx
+ pop rbp
pop rsi
pop rdi
+ pop r14
ret
- ;; size=8 bbWeight=1 PerfScore 2.75
-G_M51640_IG16: ; bbWeight=0.45, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rbx]
+ ;; size=11 bbWeight=1 PerfScore 3.75
+G_M51640_IG15: ; bbWeight=0.45, gcVars=0000000000000000 {}, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[rbp]
mov rdx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolNonGeneric
- cmp qword ptr [rbx], rdx
- jne SHORT G_M51640_IG18
- mov rdx, gword ptr [rbx+0x38]
+ cmp qword ptr [rbp], rdx
+ jne G_M51640_IG25
+ mov rdx, gword ptr [rbp+0x38]
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol
call CORINFO_HELP_ISINSTANCEOFCLASS
- ; gcrRegs -[rdx rbx] +[rax]
+ ; gcrRegs -[rdx rbp] +[rax]
; gcr arg pop 0
- ;; size=34 bbWeight=0.45 PerfScore 3.35
-G_M51640_IG17: ; bbWeight=0.45, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
- mov rbx, rax
- ; gcrRegs +[rbx]
- test rbx, rbx
- jne SHORT G_M51640_IG16
- jmp SHORT G_M51640_IG12
- ;; size=10 bbWeight=0.45 PerfScore 1.56
-G_M51640_IG18: ; bbWeight=0.45, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov rbp, rax
+ ; gcrRegs +[rbp]
+ ;; size=42 bbWeight=0.45 PerfScore 3.46
+G_M51640_IG16: ; bbWeight=0.45, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- mov rcx, rbx
- ; gcrRegs +[rcx]
- mov rax, qword ptr [rbx]
- mov rax, qword ptr [rax+0x100]
- call [rax+0x20]<unknown method>
- ; gcrRegs -[rcx]
- ; gcr arg pop 0
- test eax, eax
- jle SHORT G_M51640_IG24
- mov ecx, 1
- jmp SHORT G_M51640_IG13
- ;; size=27 bbWeight=0.45 PerfScore 4.79
-G_M51640_IG19: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ test rbp, rbp
+ jne SHORT G_M51640_IG15
+ jmp SHORT G_M51640_IG11
+ ;; size=7 bbWeight=0.45 PerfScore 1.45
+G_M51640_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rbp]
+ mov r14d, 1
+ jmp SHORT G_M51640_IG12
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M51640_IG18: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rbx]
mov rcx, rbx
; gcrRegs +[rcx]
mov rax, qword ptr [rbx]
@@ -190,7 +166,7 @@ G_M51640_IG19: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs +[rcx]
jmp G_M51640_IG03
;; size=24 bbWeight=0 PerfScore 0.00
-G_M51640_IG20: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+G_M51640_IG19: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rbx]
mov rax, qword ptr [rcx]
mov rax, qword ptr [rax+0x58]
@@ -201,42 +177,80 @@ G_M51640_IG20: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
; gcrRegs +[rsi]
...
+8 (+13.11%) : 102866.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:IsInDocumentationComment(Microsoft.CodeAnalysis.SyntaxNode):ubyte (Tier1)
@@ -12,7 +12,7 @@
; V00 arg0 [V00,T03] ( 3, 3 ) ref -> rcx class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode>
; V01 loc0 [V01,T00] ( 6, 22 ) ref -> rcx class-hnd <Microsoft.CodeAnalysis.SyntaxNode>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 4, 15 ) ushort -> rdx "Inline return value spill temp"
+; V03 tmp1 [V03,T01] ( 5, 15 ) ushort -> rdx "Inline return value spill temp"
; V04 tmp2 [V04,T02] ( 3, 15 ) int -> rdx "Inline stloc first use temp"
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
;* V06 tmp4 [V06,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
@@ -24,7 +24,7 @@ G_M65070_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M65070_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx]
test rcx, rcx
- je SHORT G_M65070_IG05
+ je SHORT G_M65070_IG08
;; size=5 bbWeight=1 PerfScore 1.25
G_M65070_IG03: ; bbWeight=5, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
mov rax, gword ptr [rcx+0x18]
@@ -33,37 +33,43 @@ G_M65070_IG03: ; bbWeight=5, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
lea eax, [rdx-0x02]
; gcrRegs -[rax]
cmp eax, 0x1FFE
- jbe SHORT G_M65070_IG09
- ;; size=18 bbWeight=5 PerfScore 28.75
-G_M65070_IG04: ; bbWeight=5, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ jbe SHORT G_M65070_IG10
cmp edx, 0x2160
- je SHORT G_M65070_IG07
+ je SHORT G_M65070_IG05
+ ;; size=26 bbWeight=5 PerfScore 35.00
+G_M65070_IG04: ; bbWeight=5, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
cmp edx, 0x2161
- je SHORT G_M65070_IG07
+ jne SHORT G_M65070_IG07
+ ;; size=8 bbWeight=5 PerfScore 6.25
+G_M65070_IG05: ; bbWeight=5, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rcx]
+ mov eax, 1
+ ;; size=5 bbWeight=5 PerfScore 1.25
+G_M65070_IG06: ; bbWeight=5, epilog, nogc, extend
+ ret
+ ;; size=1 bbWeight=5 PerfScore 5.00
+G_M65070_IG07: ; bbWeight=5, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[rcx]
mov rcx, gword ptr [rcx+0x08]
test rcx, rcx
jne SHORT G_M65070_IG03
- ;; size=25 bbWeight=5 PerfScore 28.75
-G_M65070_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=9 bbWeight=5 PerfScore 16.25
+G_M65070_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
xor eax, eax
;; size=2 bbWeight=1 PerfScore 0.25
-G_M65070_IG06: ; bbWeight=1, epilog, nogc, extend
+G_M65070_IG09: ; bbWeight=1, epilog, nogc, extend
ret
;; size=1 bbWeight=1 PerfScore 1.00
-G_M65070_IG07: ; bbWeight=5, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov eax, 1
- ;; size=5 bbWeight=5 PerfScore 1.25
-G_M65070_IG08: ; bbWeight=5, epilog, nogc, extend
- ret
- ;; size=1 bbWeight=5 PerfScore 5.00
-G_M65070_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M65070_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rcx]
xor edx, edx
- jmp SHORT G_M65070_IG04
- ;; size=4 bbWeight=0 PerfScore 0.00
+ cmp edx, 0x2160
+ jne SHORT G_M65070_IG04
+ jmp SHORT G_M65070_IG05
+ ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 61, prolog size 0, PerfScore 66.25, instruction count 20, allocated bytes for code 61 (MethodHash=f34b01d1) for method Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:IsInDocumentationComment(Microsoft.CodeAnalysis.SyntaxNode):ubyte (Tier1)
+; Total bytes of code 69, prolog size 0, PerfScore 66.25, instruction count 22, allocated bytes for code 69 (MethodHash=f34b01d1) for method Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:IsInDocumentationComment(Microsoft.CodeAnalysis.SyntaxNode):ubyte (Tier1)
; ============================================================
Unwind Info:
coreclr_tests.run.windows.x64.checked.mch
-25 (-9.92%) : 261745.dasm - BinderTracingTests.BinderTracingTest+CustomALC:Load(System.Reflection.AssemblyName):System.Reflection.Assembly:this (Tier1)
@@ -12,24 +12,23 @@
; V00 this [V00,T00] ( 8, 6 ) ref -> rbx this class-hnd single-def <BinderTracingTests.BinderTracingTest+CustomALC>
; V01 arg1 [V01,T04] ( 3, 3 ) ref -> rdx class-hnd single-def <System.Reflection.AssemblyName>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T10] ( 3, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-;* V04 tmp2 [V04,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V05 tmp3 [V05,T03] ( 3, 6 ) ref -> r8 class-hnd exact single-def "Inlining Arg" <System.String>
-; V06 tmp4 [V06,T01] ( 5, 7.76) ref -> r8 class-hnd exact single-def "Inlining Arg" <System.String>
-; V07 tmp5 [V07,T02] ( 4, 6.87) ref -> rdx class-hnd exact single-def "Inlining Arg" <System.String>
-; V08 tmp6 [V08,T07] ( 2, 2 ) ubyte -> rax "Inline return value spill temp"
-; V09 tmp7 [V09,T05] ( 2, 4 ) byref -> rax single-def "impAppendStmt"
+; V03 tmp1 [V03,T08] ( 3, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;* V04 tmp2 [V04,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V05 tmp3 [V05,T02] ( 3, 6 ) ref -> rcx class-hnd exact single-def "Inlining Arg" <System.String>
+; V06 tmp4 [V06,T01] ( 6, 7.10) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
+; V07 tmp5 [V07,T03] ( 4, 5.54) ref -> rdx class-hnd exact single-def "Inlining Arg" <System.String>
+; V08 tmp6 [V08,T07] ( 2, 0.67) ubyte -> rax "Inline return value spill temp"
+; V09 tmp7 [V09,T06] ( 2, 1.34) byref -> rcx single-def "impAppendStmt"
;* V10 tmp8 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V11 tmp9 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp10 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp11 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp12 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V15 tmp13 [V15,T11] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V16 tmp14 [V16,T12] ( 2, 0 ) ref -> rbx single-def "argument with side effect"
-; V17 tmp15 [V17,T13] ( 2, 0 ) ref -> r8 single-def "argument with side effect"
-; V18 tmp16 [V18,T14] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V19 cse0 [V19,T06] ( 3, 3 ) ref -> rcx "CSE - aggressive"
-; V20 cse1 [V20,T08] ( 3, 1.87) int -> rcx "CSE - moderate"
+; V15 tmp13 [V15,T09] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
+; V16 tmp14 [V16,T10] ( 2, 0 ) ref -> rbx single-def "argument with side effect"
+; V17 tmp15 [V17,T11] ( 2, 0 ) ref -> r8 single-def "argument with side effect"
+; V18 tmp16 [V18,T12] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V19 cse0 [V19,T05] ( 3, 3 ) ref -> rax "CSE - aggressive"
;
; Lcl frame size = 32
@@ -44,57 +43,29 @@ G_M49197_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M49197_IG02: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdx]
cmp byte ptr [rbx+0x45], 0
- jne SHORT G_M49197_IG08
- mov rcx, gword ptr [rbx+0x48]
- ; gcrRegs +[rcx]
- mov r8, rcx
- ; gcrRegs +[r8]
- test r8, r8
- je G_M49197_IG09
- cmp dword ptr [r8+0x08], 0
- je G_M49197_IG09
- mov r8, gword ptr [rdx+0x08]
- mov rdx, rcx
- cmp r8, rdx
- je SHORT G_M49197_IG06
- ;; size=45 bbWeight=1 PerfScore 15.00
-G_M49197_IG03: ; bbWeight=0.45, gcrefRegs=010C {rdx rbx r8}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rcx]
- test r8, r8
- je G_M49197_IG09
- ;; size=9 bbWeight=0.45 PerfScore 0.56
-G_M49197_IG04: ; bbWeight=0.43, gcrefRegs=010C {rdx rbx r8}, byrefRegs=0000 {}, byref
- mov ecx, dword ptr [r8+0x08]
- cmp ecx, dword ptr [rdx+0x08]
- jne G_M49197_IG09
- ;; size=13 bbWeight=0.43 PerfScore 2.60
-G_M49197_IG05: ; bbWeight=1, gcrefRegs=010C {rdx rbx r8}, byrefRegs=0000 {}, byref
- add r8, 12
- ; gcrRegs -[r8]
- ; byrRegs +[r8]
- mov rax, r8
- ; byrRegs +[rax]
- add ecx, ecx
- mov r8d, ecx
- ; byrRegs -[r8]
- add rdx, 12
- ; gcrRegs -[rdx]
- ; byrRegs +[rdx]
+ jne SHORT G_M49197_IG10
+ mov rax, gword ptr [rbx+0x48]
+ ; gcrRegs +[rax]
mov rcx, rax
- ; byrRegs +[rcx]
- call [<unknown method>]
- ; byrRegs -[rax rcx rdx]
- ; gcr arg pop 0
- test eax, eax
- je G_M49197_IG09
- ;; size=33 bbWeight=1 PerfScore 5.75
-G_M49197_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rcx]
+ test rcx, rcx
+ je SHORT G_M49197_IG08
+ cmp dword ptr [rcx+0x08], 0
+ je SHORT G_M49197_IG08
+ mov rsi, gword ptr [rdx+0x08]
+ ; gcrRegs +[rsi]
+ mov rdx, rax
+ cmp rsi, rdx
+ jne SHORT G_M49197_IG05
+ ;; size=36 bbWeight=1 PerfScore 15.00
+G_M49197_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rcx rdx rsi]
mov rdx, gword ptr [rbx+0x50]
; gcrRegs +[rdx]
mov rcx, rbx
; gcrRegs +[rcx]
;; size=7 bbWeight=1 PerfScore 2.25
-G_M49197_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M49197_IG04: ; bbWeight=1, epilog, nogc, extend
add rsp, 32
pop rbx
pop rsi
@@ -102,8 +73,45 @@ G_M49197_IG07: ; bbWeight=1, epilog, nogc, extend
tail.jmp [<unknown method>]
; gcr arg pop 0
;; size=13 bbWeight=1 PerfScore 3.75
-G_M49197_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rcx rdx]
+G_M49197_IG05: ; bbWeight=0.45, gcVars=0000000000000000 {}, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rcx] +[rsi]
+ test rsi, rsi
+ je SHORT G_M49197_IG08
+ ;; size=5 bbWeight=0.45 PerfScore 0.56
+G_M49197_IG06: ; bbWeight=0.43, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref, isz
+ mov eax, dword ptr [rsi+0x08]
+ cmp eax, dword ptr [rdx+0x08]
+ jne SHORT G_M49197_IG08
+ ;; size=8 bbWeight=0.43 PerfScore 2.60
+G_M49197_IG07: ; bbWeight=0.34, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref, isz
+ lea rcx, bword ptr [rsi+0x0C]
+ ; byrRegs +[rcx]
+ mov r8d, dword ptr [rsi+0x08]
+ add r8d, r8d
+ add rdx, 12
+ ; gcrRegs -[rdx]
+ ; byrRegs +[rdx]
+ call [<unknown method>]
+ ; gcrRegs -[rsi]
+ ; byrRegs -[rcx rdx]
+ ; gcr arg pop 0
+ test eax, eax
+ jne SHORT G_M49197_IG03
+ ;; size=25 bbWeight=0.34 PerfScore 2.43
+G_M49197_IG08: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx]
+ xor rax, rax
+ ; gcrRegs +[rax]
+ ;; size=2 bbWeight=0.11 PerfScore 0.03
+G_M49197_IG09: ; bbWeight=0.11, epilog, nogc, extend
+ add rsp, 32
+ pop rbx
+ pop rsi
+ pop rdi
+ ret
+ ;; size=8 bbWeight=0.11 PerfScore 0.30
+G_M49197_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax] +[rbx]
mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -151,20 +159,10 @@ G_M49197_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {
call CORINFO_HELP_THROW
; gcrRegs -[rcx rsi]
; gcr arg pop 0
- ;; size=112 bbWeight=0 PerfScore 0.00
-G_M49197_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- xor rax, rax
- ; gcrRegs +[rax]
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M49197_IG10: ; bbWeight=0, epilog, nogc, extend
- add rsp, 32
- pop rbx
- pop rsi
- pop rdi
- ret
- ;; size=8 bbWeight=0 PerfScore 0.00
+ int3
+ ;; size=113 bbWeight=0 PerfScore 0.00
-; Total bytes of code 252, prolog size 10, PerfScore 33.40, instruction count 68, allocated bytes for code 252 (MethodHash=e9df3fd2) for method BinderTracingTests.BinderTracingTest+CustomALC:Load(System.Reflection.AssemblyName):System.Reflection.Assembly:this (Tier1)
+; Total bytes of code 227, prolog size 10, PerfScore 30.42, instruction count 67, allocated bytes for code 227 (MethodHash=e9df3fd2) for method BinderTracingTests.BinderTracingTest+CustomALC:Load(System.Reflection.AssemblyName):System.Reflection.Assembly:this (Tier1)
; ============================================================
Unwind Info:
-38 (-9.87%) : 32429.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
@@ -5,20 +5,20 @@
; optimized using Dynamic PGO
; rsp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 16
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 16
; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T02] ( 7, 5 ) byref -> rbx this single-def
; V01 arg1 [V01,T05] ( 6, 3 ) ref -> rsi class-hnd single-def <System.Runtime.CompilerServices.IAsyncStateMachineBox>
; V02 loc0 [V02,T00] ( 12, 8 ) ref -> rdi class-hnd single-def <System.Object>
-; V03 loc1 [V03,T09] ( 5, 2 ) ref -> rcx class-hnd single-def <<unknown class>>
+; V03 loc1 [V03,T08] ( 3, 2 ) ref -> rcx class-hnd single-def <<unknown class>>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T08] ( 2, 2 ) int -> rcx
+; V05 tmp1 [V05,T10] ( 2, 2 ) int -> rcx
;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <<unknown class>>
; V07 tmp3 [V07,T06] ( 3, 4 ) int -> r9 "impAppendStmt"
;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref single-def
-; V09 tmp5 [V09,T10] ( 3, 2 ) ref -> rdx single-def
+; V09 tmp5 [V09,T09] ( 3, 2 ) ref -> rdx single-def
;* V10 tmp6 [V10 ] ( 0, 0 ) ref -> zero-ref single-def
;* V11 tmp7 [V11 ] ( 0, 0 ) int -> zero-ref
;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref single-def
@@ -33,7 +33,7 @@
; V21 cse0 [V21,T07] ( 3, 3 ) ref -> rdx "CSE - aggressive"
; V22 rat0 [V22,T03] ( 5, 7 ) ref -> rax "replacement local"
; V23 rat1 [V23,T04] ( 4, 6 ) ref -> r8 "replacement local"
-; V24 rat2 [V24,T01] ( 7, 8 ) ref -> rcx "replacement local"
+; V24 rat2 [V24,T01] ( 6, 8 ) ref -> rcx "replacement local"
;
; Lcl frame size = 40
@@ -52,34 +52,55 @@ G_M21260_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx},
mov rdi, gword ptr [rbx]
; gcrRegs +[rdi]
test rdi, rdi
- je SHORT G_M21260_IG06
+ je SHORT G_M21260_IG08
mov rax, rdi
; gcrRegs +[rax]
mov rcx, 0xD1FFAB1E ; System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1+StateMachineBox`1[int,System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__8`2[System.ValueTuple`4[Microsoft.Win32.SafeHandles.SafeFileHandle,System.Memory`1[ubyte],long,System.IO.Strategies.OSFileStreamStrategy],int]]
cmp qword ptr [rax], rcx
- jne G_M21260_IG14
- ;; size=30 bbWeight=1 PerfScore 7.75
-G_M21260_IG03: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
+ je SHORT G_M21260_IG04
+ ;; size=26 bbWeight=1 PerfScore 7.75
+G_M21260_IG03: ; bbWeight=0, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
+ ; gcrRegs -[rax]
+ mov rdx, rdi
+ ; gcrRegs +[rdx]
+ mov rcx, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs -[rdx] +[rax]
+ ; gcr arg pop 0
+ jmp SHORT G_M21260_IG05
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M21260_IG04: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
; gcrRegs -[rax]
xor rax, rax
; gcrRegs +[rax]
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M21260_IG04: ; bbWeight=1, gcrefRegs=00C1 {rax rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
+G_M21260_IG05: ; bbWeight=1, gcrefRegs=00C1 {rax rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
test rax, rax
- jne SHORT G_M21260_IG06
+ jne SHORT G_M21260_IG08
mov r8, rdi
; gcrRegs +[r8]
mov rcx, 0xD1FFAB1E ; System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1+StateMachineBox`1[int,System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__8`2[System.ValueTuple`4[Microsoft.Win32.SafeHandles.SafeFileHandle,System.Memory`1[ubyte],long,System.IO.Strategies.OSFileStreamStrategy],int]]
cmp qword ptr [r8], rcx
- jne G_M21260_IG15
- ;; size=27 bbWeight=1 PerfScore 5.75
-G_M21260_IG05: ; bbWeight=1, gcrefRegs=01C0 {rsi rdi r8}, byrefRegs=0008 {rbx}, byref, isz
+ je SHORT G_M21260_IG07
+ ;; size=23 bbWeight=1 PerfScore 5.75
+G_M21260_IG06: ; bbWeight=0, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
+ ; gcrRegs -[rax r8]
+ mov rdx, rdi
+ ; gcrRegs +[rdx]
+ mov rcx, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_ISINSTANCEOFANY
+ ; gcrRegs -[rdx] +[rax]
+ ; gcr arg pop 0
+ mov r8, rax
+ ; gcrRegs +[r8]
+ ;; size=21 bbWeight=0 PerfScore 0.00
+G_M21260_IG07: ; bbWeight=1, gcrefRegs=01C0 {rsi rdi r8}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs -[rax]
xor ecx, ecx
test r8, r8
setne cl
test cl, cl
- jne SHORT G_M21260_IG06
+ jne SHORT G_M21260_IG08
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
mov rcx, rdx
@@ -88,28 +109,42 @@ G_M21260_IG05: ; bbWeight=1, gcrefRegs=01C0 {rsi rdi r8}, byrefRegs=0008
; gcrRegs -[rcx rdx r8]
; gcr arg pop 0
;; size=31 bbWeight=1 PerfScore 6.25
-G_M21260_IG06: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
+G_M21260_IG08: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
mov rcx, rdi
; gcrRegs +[rcx]
test rcx, rcx
- je SHORT G_M21260_IG08
+ je SHORT G_M21260_IG12
;; size=8 bbWeight=1 PerfScore 1.50
-G_M21260_IG07: ; bbWeight=0.50, gcrefRegs=00C2 {rcx rsi rdi}, byrefRegs=0008 {rbx}, byref
+G_M21260_IG09: ; bbWeight=0.50, gcrefRegs=00C2 {rcx rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
mov r9, 0xD1FFAB1E ; System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1+StateMachineBox`1[int,System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__8`2[System.ValueTuple`4[Microsoft.Win32.SafeHandles.SafeFileHandle,System.Memory`1[ubyte],long,System.IO.Strategies.OSFileStreamStrategy],int]]
cmp qword ptr [rcx], r9
- jne G_M21260_IG16
- xor rcx, rcx
- ;; size=21 bbWeight=0.50 PerfScore 2.25
-G_M21260_IG08: ; bbWeight=1, gcrefRegs=00C2 {rcx rsi rdi}, byrefRegs=0008 {rbx}, byref
- test rcx, rcx
- jne G_M21260_IG17
- ;; size=9 bbWeight=1 PerfScore 1.25
-G_M21260_IG09: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
+ je SHORT G_M21260_IG11
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M21260_IG10: ; bbWeight=0, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs -[rcx]
+ mov rdx, rdi
+ ; gcrRegs +[rdx]
+ mov rcx, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs -[rdx] +[rax]
+ ; gcr arg pop 0
+ mov rcx, rax
+ ; gcrRegs +[rcx]
+ jmp SHORT G_M21260_IG12
+ ;; size=23 bbWeight=0 PerfScore 0.00
+G_M21260_IG11: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
+ ; gcrRegs -[rax rcx]
+ xor rcx, rcx
+ ; gcrRegs +[rcx]
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M21260_IG12: ; bbWeight=1, gcrefRegs=00C2 {rcx rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
+ test rcx, rcx
+ jne SHORT G_M21260_IG17
test rdi, rdi
- je SHORT G_M21260_IG12
+ je SHORT G_M21260_IG15
movsx r9, word ptr [rbx+0x0C]
mov rcx, 0xD1FFAB1E ; const ptr
+ ; gcrRegs -[rcx]
mov rdx, gword ptr [rcx]
; gcrRegs +[rdx]
xor ebp, ebp
@@ -117,7 +152,7 @@ G_M21260_IG09: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rb
setne bpl
mov rcx, 0xD1FFAB1E ; System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1+StateMachineBox`1[int,System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__8`2[System.ValueTuple`4[Microsoft.Win32.SafeHandles.SafeFileHandle,System.Memory`1[ubyte],long,System.IO.Strategies.OSFileStreamStrategy],int]]
cmp qword ptr [rdi], rcx
- jne G_M21260_IG19
+ jne SHORT G_M21260_IG19
mov dword ptr [rsp+0x20], ebp
lea rcx, bword ptr [rdi+0x18]
; byrRegs +[rcx]
@@ -127,11 +162,11 @@ G_M21260_IG09: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rb
; gcrRegs -[rdx rsi rdi r8]
; byrRegs -[rcx rbx]
; gcr arg pop 0
- ;; size=69 bbWeight=1 PerfScore 20.75
-G_M21260_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=70 bbWeight=1 PerfScore 22.00
+G_M21260_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M21260_IG11: ; bbWeight=1, epilog, nogc, extend
+G_M21260_IG14: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
@@ -139,7 +174,7 @@ G_M21260_IG11: ; bbWeight=1, epilog, nogc, extend
pop rdi
ret
;; size=9 bbWeight=1 PerfScore 3.25
-G_M21260_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, gcvars, byref
+G_M21260_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, gcvars, byref
; gcrRegs +[rsi]
; byrRegs +[rbx]
movzx r8, byte ptr [rbx+0x0E]
@@ -149,7 +184,7 @@ G_M21260_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {
mov rdx, rsi
; gcrRegs +[rdx]
;; size=21 bbWeight=0 PerfScore 0.00
-G_M21260_IG13: ; bbWeight=0, epilog, nogc, extend
+G_M21260_IG16: ; bbWeight=0, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
@@ -158,43 +193,8 @@ G_M21260_IG13: ; bbWeight=0, epilog, nogc, extend
tail.jmp [System.Runtime.CompilerServices.TaskAwaiter:UnsafeOnCompletedInternal(System.Threading.Tasks.Task,System.Runtime.CompilerServices.IAsyncStateMachineBox,ubyte)]
; gcr arg pop 0
;; size=14 bbWeight=0 PerfScore 0.00
-G_M21260_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, gcvars, byref
- ; gcrRegs -[rcx rdx] +[rdi]
- mov rdx, rdi
- ; gcrRegs +[rdx]
- mov rcx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFCLASS
- ; gcrRegs -[rdx] +[rax]
- ; gcr arg pop 0
- jmp G_M21260_IG04
- ;; size=23 bbWeight=0 PerfScore 0.00
-G_M21260_IG15: ; bbWeight=0, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
- ; gcrRegs -[rax]
- mov rdx, rdi
- ; gcrRegs +[rdx]
- mov rcx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFANY
- ; gcrRegs -[rdx] +[rax]
- ; gcr arg pop 0
- mov r8, rax
- ; gcrRegs +[r8]
- jmp G_M21260_IG05
- ;; size=26 bbWeight=0 PerfScore 0.00
-G_M21260_IG16: ; bbWeight=0, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
- ; gcrRegs -[rax r8]
- mov rdx, rdi
- ; gcrRegs +[rdx]
- mov rcx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFCLASS
- ; gcrRegs -[rdx] +[rax]
- ; gcr arg pop 0
- mov rcx, rax
- ; gcrRegs +[rcx]
- test rcx, rcx
- je G_M21260_IG09
- ;; size=30 bbWeight=0 PerfScore 0.00
-G_M21260_IG17: ; bbWeight=0, gcrefRegs=0042 {rcx rsi}, byrefRegs=0008 {rbx}, byref
- ; gcrRegs -[rax rdi]
+G_M21260_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0042 {rcx rsi}, byrefRegs=0008 {rbx}, gcvars, byref
+ ; gcrRegs -[rdx]
movzx r8, byte ptr [rbx+0x0E]
mov rdx, rsi
; gcrRegs +[rdx]
@@ -208,7 +208,7 @@ G_M21260_IG18: ; bbWeight=0, epilog, nogc, extend
tail.jmp [System.Runtime.CompilerServices.TaskAwaiter:UnsafeOnCompletedInternal(System.Threading.Tasks.Task,System.Runtime.CompilerServices.IAsyncStateMachineBox,ubyte)]
; gcr arg pop 0
;; size=14 bbWeight=0 PerfScore 0.00
-G_M21260_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, gcvars, byref
+G_M21260_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rcx] +[rdi]
...
-38 (-9.87%) : 262581.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
@@ -5,20 +5,20 @@
; optimized using Dynamic PGO
; rsp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 20
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 20
; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T02] ( 7, 5 ) byref -> rbx this single-def
; V01 arg1 [V01,T05] ( 6, 3 ) ref -> rsi class-hnd single-def <System.Runtime.CompilerServices.IAsyncStateMachineBox>
; V02 loc0 [V02,T00] ( 12, 8 ) ref -> rdi class-hnd single-def <System.Object>
-; V03 loc1 [V03,T09] ( 5, 2 ) ref -> rcx class-hnd single-def <<unknown class>>
+; V03 loc1 [V03,T08] ( 3, 2 ) ref -> rcx class-hnd single-def <<unknown class>>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T08] ( 2, 2 ) int -> rcx
+; V05 tmp1 [V05,T10] ( 2, 2 ) int -> rcx
;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <<unknown class>>
; V07 tmp3 [V07,T06] ( 3, 4 ) int -> r9 "impAppendStmt"
;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref single-def
-; V09 tmp5 [V09,T10] ( 3, 2 ) ref -> rdx single-def
+; V09 tmp5 [V09,T09] ( 3, 2 ) ref -> rdx single-def
;* V10 tmp6 [V10 ] ( 0, 0 ) ref -> zero-ref single-def
;* V11 tmp7 [V11 ] ( 0, 0 ) int -> zero-ref
;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref single-def
@@ -33,7 +33,7 @@
; V21 cse0 [V21,T07] ( 3, 3 ) ref -> rdx "CSE - aggressive"
; V22 rat0 [V22,T03] ( 5, 7 ) ref -> rax "replacement local"
; V23 rat1 [V23,T04] ( 4, 6 ) ref -> r8 "replacement local"
-; V24 rat2 [V24,T01] ( 7, 8 ) ref -> rcx "replacement local"
+; V24 rat2 [V24,T01] ( 6, 8 ) ref -> rcx "replacement local"
;
; Lcl frame size = 40
@@ -52,34 +52,55 @@ G_M21260_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx},
mov rdi, gword ptr [rbx]
; gcrRegs +[rdi]
test rdi, rdi
- je SHORT G_M21260_IG06
+ je SHORT G_M21260_IG08
mov rax, rdi
; gcrRegs +[rax]
mov rcx, 0xD1FFAB1E ; System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1+StateMachineBox`1[int,System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__8`2[System.ValueTuple`4[Microsoft.Win32.SafeHandles.SafeFileHandle,System.Memory`1[ubyte],long,System.IO.Strategies.OSFileStreamStrategy],int]]
cmp qword ptr [rax], rcx
- jne G_M21260_IG14
- ;; size=30 bbWeight=1 PerfScore 7.75
-G_M21260_IG03: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
+ je SHORT G_M21260_IG04
+ ;; size=26 bbWeight=1 PerfScore 7.75
+G_M21260_IG03: ; bbWeight=0, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
+ ; gcrRegs -[rax]
+ mov rdx, rdi
+ ; gcrRegs +[rdx]
+ mov rcx, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs -[rdx] +[rax]
+ ; gcr arg pop 0
+ jmp SHORT G_M21260_IG05
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M21260_IG04: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
; gcrRegs -[rax]
xor rax, rax
; gcrRegs +[rax]
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M21260_IG04: ; bbWeight=1, gcrefRegs=00C1 {rax rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
+G_M21260_IG05: ; bbWeight=1, gcrefRegs=00C1 {rax rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
test rax, rax
- jne SHORT G_M21260_IG06
+ jne SHORT G_M21260_IG08
mov r8, rdi
; gcrRegs +[r8]
mov rcx, 0xD1FFAB1E ; System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1+StateMachineBox`1[int,System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__8`2[System.ValueTuple`4[Microsoft.Win32.SafeHandles.SafeFileHandle,System.Memory`1[ubyte],long,System.IO.Strategies.OSFileStreamStrategy],int]]
cmp qword ptr [r8], rcx
- jne G_M21260_IG15
- ;; size=27 bbWeight=1 PerfScore 5.75
-G_M21260_IG05: ; bbWeight=1, gcrefRegs=01C0 {rsi rdi r8}, byrefRegs=0008 {rbx}, byref, isz
+ je SHORT G_M21260_IG07
+ ;; size=23 bbWeight=1 PerfScore 5.75
+G_M21260_IG06: ; bbWeight=0, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
+ ; gcrRegs -[rax r8]
+ mov rdx, rdi
+ ; gcrRegs +[rdx]
+ mov rcx, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_ISINSTANCEOFANY
+ ; gcrRegs -[rdx] +[rax]
+ ; gcr arg pop 0
+ mov r8, rax
+ ; gcrRegs +[r8]
+ ;; size=21 bbWeight=0 PerfScore 0.00
+G_M21260_IG07: ; bbWeight=1, gcrefRegs=01C0 {rsi rdi r8}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs -[rax]
xor ecx, ecx
test r8, r8
setne cl
test cl, cl
- jne SHORT G_M21260_IG06
+ jne SHORT G_M21260_IG08
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
mov rcx, rdx
@@ -88,28 +109,42 @@ G_M21260_IG05: ; bbWeight=1, gcrefRegs=01C0 {rsi rdi r8}, byrefRegs=0008
; gcrRegs -[rcx rdx r8]
; gcr arg pop 0
;; size=31 bbWeight=1 PerfScore 6.25
-G_M21260_IG06: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
+G_M21260_IG08: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
mov rcx, rdi
; gcrRegs +[rcx]
test rcx, rcx
- je SHORT G_M21260_IG08
+ je SHORT G_M21260_IG12
;; size=8 bbWeight=1 PerfScore 1.50
-G_M21260_IG07: ; bbWeight=0.50, gcrefRegs=00C2 {rcx rsi rdi}, byrefRegs=0008 {rbx}, byref
+G_M21260_IG09: ; bbWeight=0.50, gcrefRegs=00C2 {rcx rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
mov r9, 0xD1FFAB1E ; System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1+StateMachineBox`1[int,System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__8`2[System.ValueTuple`4[Microsoft.Win32.SafeHandles.SafeFileHandle,System.Memory`1[ubyte],long,System.IO.Strategies.OSFileStreamStrategy],int]]
cmp qword ptr [rcx], r9
- jne G_M21260_IG16
- xor rcx, rcx
- ;; size=21 bbWeight=0.50 PerfScore 2.25
-G_M21260_IG08: ; bbWeight=1, gcrefRegs=00C2 {rcx rsi rdi}, byrefRegs=0008 {rbx}, byref
- test rcx, rcx
- jne G_M21260_IG17
- ;; size=9 bbWeight=1 PerfScore 1.25
-G_M21260_IG09: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
+ je SHORT G_M21260_IG11
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M21260_IG10: ; bbWeight=0, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs -[rcx]
+ mov rdx, rdi
+ ; gcrRegs +[rdx]
+ mov rcx, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs -[rdx] +[rax]
+ ; gcr arg pop 0
+ mov rcx, rax
+ ; gcrRegs +[rcx]
+ jmp SHORT G_M21260_IG12
+ ;; size=23 bbWeight=0 PerfScore 0.00
+G_M21260_IG11: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
+ ; gcrRegs -[rax rcx]
+ xor rcx, rcx
+ ; gcrRegs +[rcx]
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M21260_IG12: ; bbWeight=1, gcrefRegs=00C2 {rcx rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
+ test rcx, rcx
+ jne SHORT G_M21260_IG17
test rdi, rdi
- je SHORT G_M21260_IG12
+ je SHORT G_M21260_IG15
movsx r9, word ptr [rbx+0x0C]
mov rcx, 0xD1FFAB1E ; const ptr
+ ; gcrRegs -[rcx]
mov rdx, gword ptr [rcx]
; gcrRegs +[rdx]
xor ebp, ebp
@@ -117,7 +152,7 @@ G_M21260_IG09: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rb
setne bpl
mov rcx, 0xD1FFAB1E ; System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1+StateMachineBox`1[int,System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__8`2[System.ValueTuple`4[Microsoft.Win32.SafeHandles.SafeFileHandle,System.Memory`1[ubyte],long,System.IO.Strategies.OSFileStreamStrategy],int]]
cmp qword ptr [rdi], rcx
- jne G_M21260_IG19
+ jne SHORT G_M21260_IG19
mov dword ptr [rsp+0x20], ebp
lea rcx, bword ptr [rdi+0x18]
; byrRegs +[rcx]
@@ -127,11 +162,11 @@ G_M21260_IG09: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rb
; gcrRegs -[rdx rsi rdi r8]
; byrRegs -[rcx rbx]
; gcr arg pop 0
- ;; size=69 bbWeight=1 PerfScore 20.75
-G_M21260_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=70 bbWeight=1 PerfScore 22.00
+G_M21260_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M21260_IG11: ; bbWeight=1, epilog, nogc, extend
+G_M21260_IG14: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
@@ -139,7 +174,7 @@ G_M21260_IG11: ; bbWeight=1, epilog, nogc, extend
pop rdi
ret
;; size=9 bbWeight=1 PerfScore 3.25
-G_M21260_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, gcvars, byref
+G_M21260_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, gcvars, byref
; gcrRegs +[rsi]
; byrRegs +[rbx]
movzx r8, byte ptr [rbx+0x0E]
@@ -149,7 +184,7 @@ G_M21260_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {
mov rdx, rsi
; gcrRegs +[rdx]
;; size=21 bbWeight=0 PerfScore 0.00
-G_M21260_IG13: ; bbWeight=0, epilog, nogc, extend
+G_M21260_IG16: ; bbWeight=0, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
@@ -158,43 +193,8 @@ G_M21260_IG13: ; bbWeight=0, epilog, nogc, extend
tail.jmp [System.Runtime.CompilerServices.TaskAwaiter:UnsafeOnCompletedInternal(System.Threading.Tasks.Task,System.Runtime.CompilerServices.IAsyncStateMachineBox,ubyte)]
; gcr arg pop 0
;; size=14 bbWeight=0 PerfScore 0.00
-G_M21260_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, gcvars, byref
- ; gcrRegs -[rcx rdx] +[rdi]
- mov rdx, rdi
- ; gcrRegs +[rdx]
- mov rcx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFCLASS
- ; gcrRegs -[rdx] +[rax]
- ; gcr arg pop 0
- jmp G_M21260_IG04
- ;; size=23 bbWeight=0 PerfScore 0.00
-G_M21260_IG15: ; bbWeight=0, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
- ; gcrRegs -[rax]
- mov rdx, rdi
- ; gcrRegs +[rdx]
- mov rcx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFANY
- ; gcrRegs -[rdx] +[rax]
- ; gcr arg pop 0
- mov r8, rax
- ; gcrRegs +[r8]
- jmp G_M21260_IG05
- ;; size=26 bbWeight=0 PerfScore 0.00
-G_M21260_IG16: ; bbWeight=0, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
- ; gcrRegs -[rax r8]
- mov rdx, rdi
- ; gcrRegs +[rdx]
- mov rcx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFCLASS
- ; gcrRegs -[rdx] +[rax]
- ; gcr arg pop 0
- mov rcx, rax
- ; gcrRegs +[rcx]
- test rcx, rcx
- je G_M21260_IG09
- ;; size=30 bbWeight=0 PerfScore 0.00
-G_M21260_IG17: ; bbWeight=0, gcrefRegs=0042 {rcx rsi}, byrefRegs=0008 {rbx}, byref
- ; gcrRegs -[rax rdi]
+G_M21260_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0042 {rcx rsi}, byrefRegs=0008 {rbx}, gcvars, byref
+ ; gcrRegs -[rdx]
movzx r8, byte ptr [rbx+0x0E]
mov rdx, rsi
; gcrRegs +[rdx]
@@ -208,7 +208,7 @@ G_M21260_IG18: ; bbWeight=0, epilog, nogc, extend
tail.jmp [System.Runtime.CompilerServices.TaskAwaiter:UnsafeOnCompletedInternal(System.Threading.Tasks.Task,System.Runtime.CompilerServices.IAsyncStateMachineBox,ubyte)]
; gcr arg pop 0
;; size=14 bbWeight=0 PerfScore 0.00
-G_M21260_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, gcvars, byref
+G_M21260_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rcx] +[rdi]
...
+20 (+12.20%) : 407240.dasm - System.MemoryExtensions:Trim(System.ReadOnlySpan1[ushort]):System.ReadOnlySpan1ushort
@@ -9,12 +9,12 @@
; 8 inlinees with PGO data; 20 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 RetBuf [V00,T03] ( 7, 5 ) byref -> rbx single-def
+; V00 RetBuf [V00,T01] ( 7, 5 ) byref -> rbx single-def
; V01 arg0 [V01,T00] ( 4, 8 ) byref -> rdx ld-addr-op single-def
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T06] ( 2, 4 ) int -> rcx "Span.get_Item index"
-; V04 tmp2 [V04,T07] ( 2, 2 ) ubyte -> rax "Inline return value spill temp"
-; V05 tmp3 [V05,T01] ( 4, 8 ) ushort -> rcx "Inlining Arg"
+; V03 tmp1 [V03,T06] ( 4, 4 ) int -> rbp "Span.get_Item index"
+; V04 tmp2 [V04,T07] ( 2, 0 ) ubyte -> rax "Inline return value spill temp"
+; V05 tmp3 [V05,T03] ( 4, 6 ) ushort -> rcx "Inlining Arg"
;* V06 tmp4 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V07 tmp5 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V08 tmp6 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -22,8 +22,8 @@
;* V10 tmp8 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V11 tmp9 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp10 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V13 tmp11 [V13,T08] ( 2, 2 ) ubyte -> rax "Inline return value spill temp"
-; V14 tmp12 [V14,T02] ( 4, 8 ) ushort -> rcx "Inlining Arg"
+; V13 tmp11 [V13,T08] ( 2, 0 ) ubyte -> rax "Inline return value spill temp"
+; V14 tmp12 [V14,T02] ( 6, 6 ) ushort -> rcx "Inlining Arg"
;* V15 tmp13 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V16 tmp14 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V17 tmp15 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -31,8 +31,8 @@
;* V19 tmp17 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V20 tmp18 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp19 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V22 tmp20 [V22,T04] ( 5, 4 ) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V23 tmp21 [V23,T05] ( 5, 4 ) int -> rdi "field V01._length (fldOffset=0x8)" P-INDEP
+; V22 tmp20 [V22,T04] ( 6, 4 ) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V23 tmp21 [V23,T05] ( 6, 4 ) int -> rdi "field V01._length (fldOffset=0x8)" P-INDEP
;* V24 tmp22 [V24 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP
;* V25 tmp23 [V25 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
;* V26 tmp24 [V26 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP
@@ -58,78 +58,67 @@
;* V46 tmp44 [V46 ] ( 0, 0 ) byref -> zero-ref single-def "field V21._reference (fldOffset=0x0)" P-INDEP
;* V47 tmp45 [V47 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x8)" P-INDEP
;* V48 tmp46 [V48 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
-; V49 tmp47 [V49 ] ( 3, 0 ) struct (16) [rsp+0x20] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V49 tmp47 [V49 ] ( 3, 0 ) struct (16) [rsp+0x28] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
;
-; Lcl frame size = 48
+; Lcl frame size = 56
-G_M37241_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M37241_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rdi
push rsi
+ push rbp
push rbx
- sub rsp, 48
+ sub rsp, 56
xor eax, eax
- mov qword ptr [rsp+0x20], rax
+ mov qword ptr [rsp+0x28], rax
mov rbx, rcx
; byrRegs +[rbx]
- ;; size=17 bbWeight=1 PerfScore 4.75
+ ;; size=18 bbWeight=1 PerfScore 5.75
G_M37241_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=000C {rdx rbx}, byref, isz
; byrRegs +[rdx]
mov rsi, bword ptr [rdx]
; byrRegs +[rsi]
mov edi, dword ptr [rdx+0x08]
test edi, edi
- je SHORT G_M37241_IG06
+ je SHORT G_M37241_IG04
movzx rcx, word ptr [rsi]
cmp ecx, 256
- jb SHORT G_M37241_IG03
- call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
- ; byrRegs -[rdx]
- ; gcr arg pop 0
- test eax, eax
- jne SHORT G_M37241_IG08
- jmp SHORT G_M37241_IG04
- ;; size=33 bbWeight=1 PerfScore 14.75
-G_M37241_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
- mov ecx, ecx
- mov rax, 0xD1FFAB1E ; static handle
- test byte ptr [rcx+rax], 128
- jne SHORT G_M37241_IG08
- ;; size=18 bbWeight=1 PerfScore 4.50
-G_M37241_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
- lea ecx, [rdi-0x01]
- movzx rcx, word ptr [rsi+2*rcx]
- cmp ecx, 256
- jb SHORT G_M37241_IG05
- call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
- ; gcr arg pop 0
- test eax, eax
- jne SHORT G_M37241_IG08
- jmp SHORT G_M37241_IG06
- ;; size=27 bbWeight=1 PerfScore 10.00
-G_M37241_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
+ jae SHORT G_M37241_IG08
mov eax, ecx
mov rcx, 0xD1FFAB1E ; static handle
test byte ptr [rax+rcx], 128
- jne SHORT G_M37241_IG08
+ jne SHORT G_M37241_IG06
+ lea ebp, [rdi-0x01]
+ mov eax, ebp
+ movzx rcx, word ptr [rsi+2*rax]
+ cmp ecx, 256
+ jae SHORT G_M37241_IG09
+ ;; size=56 bbWeight=1 PerfScore 17.00
+G_M37241_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
+ ; byrRegs -[rdx]
+ mov eax, ecx
+ mov rcx, 0xD1FFAB1E ; static handle
+ test byte ptr [rax+rcx], 128
+ jne SHORT G_M37241_IG06
;; size=18 bbWeight=1 PerfScore 4.50
-G_M37241_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
+G_M37241_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
mov bword ptr [rbx], rsi
mov dword ptr [rbx+0x08], edi
mov rax, rbx
; byrRegs +[rax]
;; size=9 bbWeight=1 PerfScore 2.25
-G_M37241_IG07: ; bbWeight=1, epilog, nogc, extend
- add rsp, 48
+G_M37241_IG05: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 56
pop rbx
+ pop rbp
pop rsi
pop rdi
ret
- ;; size=8 bbWeight=1 PerfScore 2.75
-G_M37241_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, gcvars, byref
+ ;; size=9 bbWeight=1 PerfScore 3.25
+G_M37241_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, gcvars, byref
; byrRegs -[rax]
- mov bword ptr [rsp+0x20], rsi
- mov dword ptr [rsp+0x28], edi
- lea rdx, [rsp+0x20]
+ mov bword ptr [rsp+0x28], rsi
+ mov dword ptr [rsp+0x30], edi
+ lea rdx, [rsp+0x28]
mov rcx, rbx
; byrRegs +[rcx]
call [<unknown method>]
@@ -138,15 +127,35 @@ G_M37241_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
mov rax, rbx
; byrRegs +[rax]
;; size=26 bbWeight=0 PerfScore 0.00
-G_M37241_IG09: ; bbWeight=0, epilog, nogc, extend
- add rsp, 48
+G_M37241_IG07: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 56
pop rbx
+ pop rbp
pop rsi
pop rdi
ret
- ;; size=8 bbWeight=0 PerfScore 0.00
+ ;; size=9 bbWeight=0 PerfScore 0.00
+G_M37241_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, gcvars, byref, isz
+ ; byrRegs -[rax] +[rsi]
+ call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
+ ; gcr arg pop 0
+ test eax, eax
+ jne SHORT G_M37241_IG06
+ lea ebp, [rdi-0x01]
+ mov eax, ebp
+ movzx rcx, word ptr [rsi+2*rax]
+ cmp ecx, 256
+ jb SHORT G_M37241_IG03
+ ;; size=27 bbWeight=0 PerfScore 0.00
+G_M37241_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
+ call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
+ ; gcr arg pop 0
+ test eax, eax
+ jne SHORT G_M37241_IG06
+ jmp SHORT G_M37241_IG04
+ ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 164, prolog size 14, PerfScore 43.50, instruction count 53, allocated bytes for code 164 (MethodHash=76ed6e86) for method System.MemoryExtensions:Trim(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Tier1)
+; Total bytes of code 184, prolog size 15, PerfScore 32.75, instruction count 61, allocated bytes for code 184 (MethodHash=76ed6e86) for method System.MemoryExtensions:Trim(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Tier1)
; ============================================================
Unwind Info:
@@ -154,12 +163,13 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x07
- CountOfUnwindCodes: 4
+ SizeOfProlog : 0x08
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+29 (+12.72%) : 2097.dasm - System.MemoryExtensions:Trim(System.ReadOnlySpan1[ushort]):System.ReadOnlySpan1ushort
@@ -9,12 +9,12 @@
; 8 inlinees with PGO data; 20 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 RetBuf [V00,T03] ( 7, 4.99) byref -> rbx single-def
+; V00 RetBuf [V00,T01] ( 7, 4.99) byref -> rbx single-def
; V01 arg0 [V01,T00] ( 4, 8 ) byref -> rdx ld-addr-op single-def
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T06] ( 2, 3.91) int -> rcx "Span.get_Item index"
-; V04 tmp2 [V04,T07] ( 2, 1.95) ubyte -> rax "Inline return value spill temp"
-; V05 tmp3 [V05,T01] ( 4, 7.81) ushort -> rcx "Inlining Arg"
+; V03 tmp1 [V03,T06] ( 4, 3.91) int -> rbp "Span.get_Item index"
+; V04 tmp2 [V04,T07] ( 2, 0 ) ubyte -> rax "Inline return value spill temp"
+; V05 tmp3 [V05,T02] ( 4, 5.86) ushort -> rcx "Inlining Arg"
;* V06 tmp4 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V07 tmp5 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V08 tmp6 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -22,8 +22,8 @@
;* V10 tmp8 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V11 tmp9 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp10 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V13 tmp11 [V13,T08] ( 2, 1.94) ubyte -> rax "Inline return value spill temp"
-; V14 tmp12 [V14,T02] ( 4, 7.78) ushort -> rcx "Inlining Arg"
+; V13 tmp11 [V13,T08] ( 2, 0 ) ubyte -> rax "Inline return value spill temp"
+; V14 tmp12 [V14,T03] ( 6, 5.84) ushort -> rcx "Inlining Arg"
;* V15 tmp13 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V16 tmp14 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V17 tmp15 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -31,8 +31,8 @@
;* V19 tmp17 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V20 tmp18 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp19 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V22 tmp20 [V22,T05] ( 5, 3.95) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V23 tmp21 [V23,T04] ( 5, 3.98) int -> rdi "field V01._length (fldOffset=0x8)" P-INDEP
+; V22 tmp20 [V22,T05] ( 6, 3.95) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V23 tmp21 [V23,T04] ( 6, 3.98) int -> rdi "field V01._length (fldOffset=0x8)" P-INDEP
;* V24 tmp22 [V24 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP
;* V25 tmp23 [V25 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
;* V26 tmp24 [V26 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP
@@ -58,74 +58,55 @@
;* V46 tmp44 [V46 ] ( 0, 0 ) byref -> zero-ref single-def "field V21._reference (fldOffset=0x0)" P-INDEP
;* V47 tmp45 [V47 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x8)" P-INDEP
;* V48 tmp46 [V48 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
-; V49 tmp47 [V49 ] ( 3, 0.05) struct (16) [rsp+0x20] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V49 tmp47 [V49 ] ( 3, 0.05) struct (16) [rsp+0x28] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
;
-; Lcl frame size = 48
+; Lcl frame size = 56
G_M37241_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rdi
push rsi
+ push rbp
push rbx
- sub rsp, 48
+ sub rsp, 56
xor eax, eax
- mov qword ptr [rsp+0x20], rax
+ mov qword ptr [rsp+0x28], rax
mov rbx, rcx
; byrRegs +[rbx]
- ;; size=17 bbWeight=1 PerfScore 4.75
+ ;; size=18 bbWeight=1 PerfScore 5.75
G_M37241_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=000C {rdx rbx}, byref, isz
; byrRegs +[rdx]
mov rsi, bword ptr [rdx]
; byrRegs +[rsi]
mov edi, dword ptr [rdx+0x08]
test edi, edi
- je SHORT G_M37241_IG11
+ je SHORT G_M37241_IG06
;; size=10 bbWeight=1 PerfScore 5.25
G_M37241_IG03: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
; byrRegs -[rdx]
movzx rcx, word ptr [rsi]
cmp ecx, 256
- jb SHORT G_M37241_IG05
- call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
- ; gcr arg pop 0
- test eax, eax
- jne G_M37241_IG14
- ;; size=25 bbWeight=0.98 PerfScore 7.32
-G_M37241_IG04: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
- jmp SHORT G_M37241_IG06
- ;; size=2 bbWeight=0.97 PerfScore 1.94
-G_M37241_IG05: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
- mov ecx, ecx
+ jae G_M37241_IG11
mov rax, 0xD1FFAB1E ; static handle
test byte ptr [rcx+rax], 128
- jne SHORT G_M37241_IG14
- ;; size=18 bbWeight=0.98 PerfScore 4.39
-G_M37241_IG06: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
- lea ecx, [rdi-0x01]
+ jne SHORT G_M37241_IG09
+ lea ebp, [rdi-0x01]
+ mov ecx, ebp
movzx rcx, word ptr [rsi+2*rcx]
cmp ecx, 256
- jb SHORT G_M37241_IG09
- ;; size=15 bbWeight=0.98 PerfScore 3.66
-G_M37241_IG07: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
- call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
- ; gcr arg pop 0
- test eax, eax
- jne SHORT G_M37241_IG13
- ;; size=10 bbWeight=0.97 PerfScore 4.12
-G_M37241_IG08: ; bbWeight=0.48, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
- jmp SHORT G_M37241_IG10
- ;; size=2 bbWeight=0.48 PerfScore 0.97
-G_M37241_IG09: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
+ jae G_M37241_IG12
+ ;; size=52 bbWeight=0.98 PerfScore 11.23
+G_M37241_IG04: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
mov ecx, ecx
mov rax, 0xD1FFAB1E ; static handle
test byte ptr [rcx+rax], 128
- jne SHORT G_M37241_IG13
+ jne SHORT G_M37241_IG08
;; size=18 bbWeight=0.97 PerfScore 4.36
-G_M37241_IG10: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
+G_M37241_IG05: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
mov rcx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
;; size=15 bbWeight=0.97 PerfScore 1.21
-G_M37241_IG11: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
+G_M37241_IG06: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
mov rcx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
@@ -134,26 +115,27 @@ G_M37241_IG11: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rs
mov rax, rbx
; byrRegs +[rax]
;; size=24 bbWeight=0.99 PerfScore 3.47
-G_M37241_IG12: ; bbWeight=0.99, epilog, nogc, extend
- add rsp, 48
+G_M37241_IG07: ; bbWeight=0.99, epilog, nogc, extend
+ add rsp, 56
pop rbx
+ pop rbp
pop rsi
pop rdi
ret
- ;; size=8 bbWeight=0.99 PerfScore 2.73
-G_M37241_IG13: ; bbWeight=0.48, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, gcvars, byref
+ ;; size=9 bbWeight=0.99 PerfScore 3.22
+G_M37241_IG08: ; bbWeight=0.48, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, gcvars, byref
; byrRegs -[rax]
mov rcx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
;; size=15 bbWeight=0.48 PerfScore 0.61
-G_M37241_IG14: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
+G_M37241_IG09: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
mov rcx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- mov bword ptr [rsp+0x20], rsi
- mov dword ptr [rsp+0x28], edi
- lea rdx, [rsp+0x20]
+ mov bword ptr [rsp+0x28], rsi
+ mov dword ptr [rsp+0x30], edi
+ lea rdx, [rsp+0x28]
mov rcx, rbx
; byrRegs +[rcx]
call [<unknown method>]
@@ -162,15 +144,35 @@ G_M37241_IG14: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rs
mov rax, rbx
; byrRegs +[rax]
;; size=41 bbWeight=0.01 PerfScore 0.06
-G_M37241_IG15: ; bbWeight=0.01, epilog, nogc, extend
- add rsp, 48
+G_M37241_IG10: ; bbWeight=0.01, epilog, nogc, extend
+ add rsp, 56
pop rbx
+ pop rbp
pop rsi
pop rdi
ret
- ;; size=8 bbWeight=0.01 PerfScore 0.02
+ ;; size=9 bbWeight=0.01 PerfScore 0.03
+G_M37241_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, gcvars, byref, isz
+ ; byrRegs -[rax] +[rsi]
+ call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
+ ; gcr arg pop 0
+ test eax, eax
+ jne SHORT G_M37241_IG09
+ lea ebp, [rdi-0x01]
+ mov eax, ebp
+ movzx rcx, word ptr [rsi+2*rax]
+ cmp ecx, 256
+ jb G_M37241_IG04
+ ;; size=31 bbWeight=0 PerfScore 0.00
+G_M37241_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
+ call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
+ ; gcr arg pop 0
+ test eax, eax
+ jne SHORT G_M37241_IG08
+ jmp G_M37241_IG05
+ ;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 228, prolog size 14, PerfScore 44.86, instruction count 61, allocated bytes for code 228 (MethodHash=76ed6e86) for method System.MemoryExtensions:Trim(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Instrumented Tier1)
+; Total bytes of code 257, prolog size 15, PerfScore 35.19, instruction count 68, allocated bytes for code 257 (MethodHash=76ed6e86) for method System.MemoryExtensions:Trim(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Instrumented Tier1)
; ============================================================
Unwind Info:
@@ -178,12 +180,13 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x07
- CountOfUnwindCodes: 4
+ SizeOfProlog : 0x08
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+29 (+12.72%) : 8255.dasm - System.MemoryExtensions:Trim(System.ReadOnlySpan1[ushort]):System.ReadOnlySpan1ushort
@@ -9,12 +9,12 @@
; 8 inlinees with PGO data; 20 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 RetBuf [V00,T03] ( 7, 4.99) byref -> rbx single-def
+; V00 RetBuf [V00,T01] ( 7, 4.99) byref -> rbx single-def
; V01 arg0 [V01,T00] ( 4, 8 ) byref -> rdx ld-addr-op single-def
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T06] ( 2, 3.91) int -> rcx "Span.get_Item index"
-; V04 tmp2 [V04,T07] ( 2, 1.95) ubyte -> rax "Inline return value spill temp"
-; V05 tmp3 [V05,T01] ( 4, 7.81) ushort -> rcx "Inlining Arg"
+; V03 tmp1 [V03,T06] ( 4, 3.91) int -> rbp "Span.get_Item index"
+; V04 tmp2 [V04,T07] ( 2, 0 ) ubyte -> rax "Inline return value spill temp"
+; V05 tmp3 [V05,T02] ( 4, 5.86) ushort -> rcx "Inlining Arg"
;* V06 tmp4 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V07 tmp5 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V08 tmp6 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -22,8 +22,8 @@
;* V10 tmp8 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V11 tmp9 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp10 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V13 tmp11 [V13,T08] ( 2, 1.94) ubyte -> rax "Inline return value spill temp"
-; V14 tmp12 [V14,T02] ( 4, 7.78) ushort -> rcx "Inlining Arg"
+; V13 tmp11 [V13,T08] ( 2, 0 ) ubyte -> rax "Inline return value spill temp"
+; V14 tmp12 [V14,T03] ( 6, 5.84) ushort -> rcx "Inlining Arg"
;* V15 tmp13 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V16 tmp14 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V17 tmp15 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -31,8 +31,8 @@
;* V19 tmp17 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V20 tmp18 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp19 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V22 tmp20 [V22,T05] ( 5, 3.95) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V23 tmp21 [V23,T04] ( 5, 3.98) int -> rdi "field V01._length (fldOffset=0x8)" P-INDEP
+; V22 tmp20 [V22,T05] ( 6, 3.95) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V23 tmp21 [V23,T04] ( 6, 3.98) int -> rdi "field V01._length (fldOffset=0x8)" P-INDEP
;* V24 tmp22 [V24 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP
;* V25 tmp23 [V25 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
;* V26 tmp24 [V26 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP
@@ -58,74 +58,55 @@
;* V46 tmp44 [V46 ] ( 0, 0 ) byref -> zero-ref single-def "field V21._reference (fldOffset=0x0)" P-INDEP
;* V47 tmp45 [V47 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x8)" P-INDEP
;* V48 tmp46 [V48 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
-; V49 tmp47 [V49 ] ( 3, 0.05) struct (16) [rsp+0x20] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V49 tmp47 [V49 ] ( 3, 0.05) struct (16) [rsp+0x28] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
;
-; Lcl frame size = 48
+; Lcl frame size = 56
G_M37241_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rdi
push rsi
+ push rbp
push rbx
- sub rsp, 48
+ sub rsp, 56
xor eax, eax
- mov qword ptr [rsp+0x20], rax
+ mov qword ptr [rsp+0x28], rax
mov rbx, rcx
; byrRegs +[rbx]
- ;; size=17 bbWeight=1 PerfScore 4.75
+ ;; size=18 bbWeight=1 PerfScore 5.75
G_M37241_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=000C {rdx rbx}, byref, isz
; byrRegs +[rdx]
mov rsi, bword ptr [rdx]
; byrRegs +[rsi]
mov edi, dword ptr [rdx+0x08]
test edi, edi
- je SHORT G_M37241_IG11
+ je SHORT G_M37241_IG06
;; size=10 bbWeight=1 PerfScore 5.25
G_M37241_IG03: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
; byrRegs -[rdx]
movzx rcx, word ptr [rsi]
cmp ecx, 256
- jb SHORT G_M37241_IG05
- call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
- ; gcr arg pop 0
- test eax, eax
- jne G_M37241_IG14
- ;; size=25 bbWeight=0.98 PerfScore 7.32
-G_M37241_IG04: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
- jmp SHORT G_M37241_IG06
- ;; size=2 bbWeight=0.97 PerfScore 1.94
-G_M37241_IG05: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
- mov ecx, ecx
+ jae G_M37241_IG11
mov rax, 0xD1FFAB1E ; static handle
test byte ptr [rcx+rax], 128
- jne SHORT G_M37241_IG14
- ;; size=18 bbWeight=0.98 PerfScore 4.39
-G_M37241_IG06: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
- lea ecx, [rdi-0x01]
+ jne SHORT G_M37241_IG09
+ lea ebp, [rdi-0x01]
+ mov ecx, ebp
movzx rcx, word ptr [rsi+2*rcx]
cmp ecx, 256
- jb SHORT G_M37241_IG09
- ;; size=15 bbWeight=0.98 PerfScore 3.66
-G_M37241_IG07: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
- call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
- ; gcr arg pop 0
- test eax, eax
- jne SHORT G_M37241_IG13
- ;; size=10 bbWeight=0.97 PerfScore 4.12
-G_M37241_IG08: ; bbWeight=0.48, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
- jmp SHORT G_M37241_IG10
- ;; size=2 bbWeight=0.48 PerfScore 0.97
-G_M37241_IG09: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
+ jae G_M37241_IG12
+ ;; size=52 bbWeight=0.98 PerfScore 11.23
+G_M37241_IG04: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
mov ecx, ecx
mov rax, 0xD1FFAB1E ; static handle
test byte ptr [rcx+rax], 128
- jne SHORT G_M37241_IG13
+ jne SHORT G_M37241_IG08
;; size=18 bbWeight=0.97 PerfScore 4.36
-G_M37241_IG10: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
+G_M37241_IG05: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
mov rcx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
;; size=15 bbWeight=0.97 PerfScore 1.21
-G_M37241_IG11: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
+G_M37241_IG06: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
mov rcx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
@@ -134,26 +115,27 @@ G_M37241_IG11: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rs
mov rax, rbx
; byrRegs +[rax]
;; size=24 bbWeight=0.99 PerfScore 3.47
-G_M37241_IG12: ; bbWeight=0.99, epilog, nogc, extend
- add rsp, 48
+G_M37241_IG07: ; bbWeight=0.99, epilog, nogc, extend
+ add rsp, 56
pop rbx
+ pop rbp
pop rsi
pop rdi
ret
- ;; size=8 bbWeight=0.99 PerfScore 2.73
-G_M37241_IG13: ; bbWeight=0.48, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, gcvars, byref
+ ;; size=9 bbWeight=0.99 PerfScore 3.22
+G_M37241_IG08: ; bbWeight=0.48, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, gcvars, byref
; byrRegs -[rax]
mov rcx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
;; size=15 bbWeight=0.48 PerfScore 0.61
-G_M37241_IG14: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
+G_M37241_IG09: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
mov rcx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- mov bword ptr [rsp+0x20], rsi
- mov dword ptr [rsp+0x28], edi
- lea rdx, [rsp+0x20]
+ mov bword ptr [rsp+0x28], rsi
+ mov dword ptr [rsp+0x30], edi
+ lea rdx, [rsp+0x28]
mov rcx, rbx
; byrRegs +[rcx]
call [<unknown method>]
@@ -162,15 +144,35 @@ G_M37241_IG14: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rs
mov rax, rbx
; byrRegs +[rax]
;; size=41 bbWeight=0.01 PerfScore 0.06
-G_M37241_IG15: ; bbWeight=0.01, epilog, nogc, extend
- add rsp, 48
+G_M37241_IG10: ; bbWeight=0.01, epilog, nogc, extend
+ add rsp, 56
pop rbx
+ pop rbp
pop rsi
pop rdi
ret
- ;; size=8 bbWeight=0.01 PerfScore 0.02
+ ;; size=9 bbWeight=0.01 PerfScore 0.03
+G_M37241_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, gcvars, byref, isz
+ ; byrRegs -[rax] +[rsi]
+ call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
+ ; gcr arg pop 0
+ test eax, eax
+ jne SHORT G_M37241_IG09
+ lea ebp, [rdi-0x01]
+ mov eax, ebp
+ movzx rcx, word ptr [rsi+2*rax]
+ cmp ecx, 256
+ jb G_M37241_IG04
+ ;; size=31 bbWeight=0 PerfScore 0.00
+G_M37241_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
+ call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
+ ; gcr arg pop 0
+ test eax, eax
+ jne SHORT G_M37241_IG08
+ jmp G_M37241_IG05
+ ;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 228, prolog size 14, PerfScore 44.86, instruction count 61, allocated bytes for code 228 (MethodHash=76ed6e86) for method System.MemoryExtensions:Trim(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Instrumented Tier1)
+; Total bytes of code 257, prolog size 15, PerfScore 35.19, instruction count 68, allocated bytes for code 257 (MethodHash=76ed6e86) for method System.MemoryExtensions:Trim(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Instrumented Tier1)
; ============================================================
Unwind Info:
@@ -178,12 +180,13 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x07
- CountOfUnwindCodes: 4
+ SizeOfProlog : 0x08
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
libraries.pmi.windows.x64.checked.mch
-35 (-7.48%) : 112539.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:GenerateAllDeclarationErrorsImpl(System.Threading.CancellationToken):this (FullOpts)
@@ -68,21 +68,35 @@ G_M15591_IG01: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
mov rbx, rcx
; gcrRegs +[rbx]
;; size=22 bbWeight=1.00 PerfScore 8.50
-G_M15591_IG02: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M15591_IG02: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp gword ptr [rsp+0x68], 0
- jne G_M15591_IG27
- ;; size=12 bbWeight=1.00 PerfScore 3.00
-G_M15591_IG03: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ je SHORT G_M15591_IG04
+ ;; size=8 bbWeight=1.00 PerfScore 3.00
+G_M15591_IG03: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov rcx, gword ptr [rsp+0x68]
+ ; gcrRegs +[rcx]
+ cmp dword ptr [rcx+0x20], 0
+ jne G_M15591_IG28
+ ;; size=15 bbWeight=0.17 PerfScore 0.85
+G_M15591_IG04: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rcx]
mov rcx, rbx
; gcrRegs +[rcx]
call [Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:GetMembersAndInitializers():Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol+MembersAndInitializers:this]
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
cmp gword ptr [rsp+0x68], 0
- jne G_M15591_IG26
- ;; size=21 bbWeight=1.00 PerfScore 6.25
-G_M15591_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M15591_IG06
+ ;; size=17 bbWeight=1.00 PerfScore 6.25
+G_M15591_IG05: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
+ mov rcx, gword ptr [rsp+0x68]
+ ; gcrRegs +[rcx]
+ cmp dword ptr [rcx+0x20], 0
+ jne G_M15591_IG28
+ ;; size=15 bbWeight=0.17 PerfScore 0.85
+G_M15591_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rcx]
mov rcx, rbx
; gcrRegs +[rcx]
mov rsi, qword ptr [rbx]
@@ -96,9 +110,9 @@ G_M15591_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
xor r14d, r14d
xor r15d, r15d
test edi, edi
- jle SHORT G_M15591_IG08
+ jle SHORT G_M15591_IG10
;; size=31 bbWeight=1 PerfScore 11.25
-G_M15591_IG05: ; bbWeight=4, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
+G_M15591_IG07: ; bbWeight=4, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
mov ecx, r14d
mov r14, gword ptr [rbp+8*rcx+0x10]
@@ -111,9 +125,9 @@ G_M15591_IG05: ; bbWeight=4, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {},
; gcrRegs -[rcx]
; gcr arg pop 0
cmp eax, 11
- je SHORT G_M15591_IG07
+ je SHORT G_M15591_IG09
;; size=26 bbWeight=4 PerfScore 43.00
-G_M15591_IG06: ; bbWeight=2, gcrefRegs=4028 {rbx rbp r14}, byrefRegs=0000 {}, byref
+G_M15591_IG08: ; bbWeight=2, gcrefRegs=4028 {rbx rbp r14}, byrefRegs=0000 {}, byref
mov rcx, r14
; gcrRegs +[rcx]
mov rdx, gword ptr [rsp+0x68]
@@ -123,38 +137,59 @@ G_M15591_IG06: ; bbWeight=2, gcrefRegs=4028 {rbx rbp r14}, byrefRegs=0000
; gcrRegs -[rcx rdx r14]
; gcr arg pop 0
;; size=15 bbWeight=2 PerfScore 12.50
-G_M15591_IG07: ; bbWeight=4, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
+G_M15591_IG09: ; bbWeight=4, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
lea r14d, [r15+0x01]
mov r15d, r14d
cmp edi, r15d
- jg SHORT G_M15591_IG05
+ jg SHORT G_M15591_IG07
;; size=12 bbWeight=4 PerfScore 8.00
-G_M15591_IG08: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M15591_IG10: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbp]
cmp gword ptr [rsp+0x68], 0
- jne G_M15591_IG25
- ;; size=12 bbWeight=1.00 PerfScore 3.00
-G_M15591_IG09: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ je SHORT G_M15591_IG12
+ ;; size=8 bbWeight=1.00 PerfScore 3.00
+G_M15591_IG11: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov rcx, gword ptr [rsp+0x68]
+ ; gcrRegs +[rcx]
+ cmp dword ptr [rcx+0x20], 0
+ jne G_M15591_IG28
+ ;; size=15 bbWeight=0.17 PerfScore 0.85
+G_M15591_IG12: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rcx]
mov rcx, rbx
; gcrRegs +[rcx]
call [Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol:get_BaseTypeNoUseSiteDiagnostics():Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol:this]
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
cmp gword ptr [rsp+0x68], 0
- jne G_M15591_IG24
- ;; size=21 bbWeight=1.00 PerfScore 6.25
-G_M15591_IG10: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ je SHORT G_M15591_IG14
+ ;; size=17 bbWeight=1.00 PerfScore 6.25
+G_M15591_IG13: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
+ mov rcx, gword ptr [rsp+0x68]
+ ; gcrRegs +[rcx]
+ cmp dword ptr [rcx+0x20], 0
+ jne G_M15591_IG28
+ ;; size=15 bbWeight=0.17 PerfScore 0.85
+G_M15591_IG14: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rcx]
mov rcx, rbx
; gcrRegs +[rcx]
call [Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol:get_InterfacesNoUseSiteDiagnostics():System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol]:this]
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
cmp gword ptr [rsp+0x68], 0
- jne G_M15591_IG23
- ;; size=21 bbWeight=1.00 PerfScore 6.25
-G_M15591_IG11: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ je SHORT G_M15591_IG16
+ ;; size=17 bbWeight=1.00 PerfScore 6.25
+G_M15591_IG15: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
+ mov rcx, gword ptr [rsp+0x68]
+ ; gcrRegs +[rcx]
+ cmp dword ptr [rcx+0x20], 0
+ jne G_M15591_IG28
+ ;; size=15 bbWeight=0.17 PerfScore 0.85
+G_M15591_IG16: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rcx]
mov rcx, rbx
; gcrRegs +[rcx]
mov rax, qword ptr [rsi+0xD8]
@@ -162,10 +197,17 @@ G_M15591_IG11: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
cmp gword ptr [rsp+0x68], 0
- jne G_M15591_IG22
- ;; size=25 bbWeight=1.00 PerfScore 8.25
-G_M15591_IG12: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M15591_IG18
+ ;; size=21 bbWeight=1.00 PerfScore 8.25
+G_M15591_IG17: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
+ mov rcx, gword ptr [rsp+0x68]
+ ; gcrRegs +[rcx]
+ cmp dword ptr [rcx+0x20], 0
+ jne G_M15591_IG28
+ ;; size=15 bbWeight=0.17 PerfScore 0.85
+G_M15591_IG18: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rcx]
mov rcx, rbx
; gcrRegs +[rcx]
mov rax, qword ptr [rsi+0x118]
@@ -173,20 +215,27 @@ G_M15591_IG12: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
cmp dword ptr [rax+0x08], 0
- je SHORT G_M15591_IG14
+ je SHORT G_M15591_IG20
;; size=19 bbWeight=1 PerfScore 9.25
-G_M15591_IG13: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
+G_M15591_IG19: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
mov rcx, rax
; gcrRegs +[rcx]
call [Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol:EnsureAllConstraintsAreResolved(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol])]
; gcrRegs -[rax rcx]
; gcr arg pop 0
;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M15591_IG14: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M15591_IG20: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp gword ptr [rsp+0x68], 0
- jne SHORT G_M15591_IG21
+ je SHORT G_M15591_IG22
;; size=8 bbWeight=1.00 PerfScore 3.00
-G_M15591_IG15: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M15591_IG21: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov rcx, gword ptr [rsp+0x68]
+ ; gcrRegs +[rcx]
+ cmp dword ptr [rcx+0x20], 0
+ jne SHORT G_M15591_IG28
+ ;; size=11 bbWeight=0.17 PerfScore 0.85
+G_M15591_IG22: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rcx]
mov rcx, rbx
; gcrRegs +[rcx]
mov rax, qword ptr [rsi+0xA0]
@@ -194,10 +243,17 @@ G_M15591_IG15: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
cmp gword ptr [rsp+0x68], 0
- jne SHORT G_M15591_IG20
+ je SHORT G_M15591_IG24
;; size=21 bbWeight=1.00 PerfScore 8.25
-G_M15591_IG16: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M15591_IG23: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
+ mov rcx, gword ptr [rsp+0x68]
+ ; gcrRegs +[rcx]
+ cmp dword ptr [rcx+0x20], 0
+ jne SHORT G_M15591_IG28
+ ;; size=11 bbWeight=0.17 PerfScore 0.85
+G_M15591_IG24: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rcx]
mov rcx, rbx
; gcrRegs +[rcx]
mov rdx, gword ptr [rsp+0x68]
@@ -206,9 +262,16 @@ G_M15591_IG16: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcrRegs -[rcx rdx]
; gcr arg pop 0
cmp gword ptr [rsp+0x68], 0
- jne SHORT G_M15591_IG19
+ je SHORT G_M15591_IG26
;; size=22 bbWeight=1.00 PerfScore 7.25
-G_M15591_IG17: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M15591_IG25: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov rcx, gword ptr [rsp+0x68]
+ ; gcrRegs +[rcx]
+ cmp dword ptr [rcx+0x20], 0
+ jne SHORT G_M15591_IG28
+ ;; size=11 bbWeight=0.17 PerfScore 0.85
+G_M15591_IG26: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rcx]
mov rcx, rbx
; gcrRegs +[rcx]
call [<unknown method>]
@@ -216,7 +279,7 @@ G_M15591_IG17: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcr arg pop 0
nop
;; size=10 bbWeight=1 PerfScore 3.50
-G_M15591_IG18: ; bbWeight=1, epilog, nogc, extend
+G_M15591_IG27: ; bbWeight=1, epilog, nogc, extend
add rsp, 32
pop rbx
pop rbp
@@ -227,86 +290,14 @@ G_M15591_IG18: ; bbWeight=1, epilog, nogc, extend
pop r15
ret
;; size=15 bbWeight=1 PerfScore 4.75
-G_M15591_IG19: ; bbWeight=0.17, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rbx]
- mov rcx, gword ptr [rsp+0x68]
- ; gcrRegs +[rcx]
- cmp dword ptr [rcx+0x20], 0
...
-34 (-7.33%) : 86606.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
@@ -62,11 +62,18 @@ G_M48701_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
mov gword ptr [rbp-0x20], rax
; GC ptr vars +{V02}
;; size=25 bbWeight=0.50 PerfScore 4.63
-G_M48701_IG05: ; bbWeight=0.50, gcVars=0000000000000010 {V02}, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M48701_IG05: ; bbWeight=0.50, gcVars=0000000000000010 {V02}, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, gcvars, byref, isz
cmp gword ptr [rbp+0x18], 0
+ je SHORT G_M48701_IG07
+ ;; size=7 bbWeight=0.50 PerfScore 1.50
+G_M48701_IG06: ; bbWeight=0.17, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
+ mov rcx, gword ptr [rbp+0x18]
+ ; gcrRegs +[rcx]
+ cmp dword ptr [rcx+0x20], 0
jne G_M48701_IG17
- ;; size=11 bbWeight=0.50 PerfScore 1.50
-G_M48701_IG06: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
+ ;; size=14 bbWeight=0.17 PerfScore 0.85
+G_M48701_IG07: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rcx]
mov rcx, rbx
; gcrRegs +[rcx]
mov rdx, rax
@@ -77,9 +84,16 @@ G_M48701_IG06: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0000
; gcrRegs -[rax rcx rdx r8]
; gcr arg pop 0
cmp gword ptr [rbp+0x18], 0
- jne G_M48701_IG16
- ;; size=27 bbWeight=0.50 PerfScore 3.75
-G_M48701_IG07: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ je SHORT G_M48701_IG09
+ ;; size=23 bbWeight=0.50 PerfScore 3.75
+G_M48701_IG08: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov rcx, gword ptr [rbp+0x18]
+ ; gcrRegs +[rcx]
+ cmp dword ptr [rcx+0x20], 0
+ jne G_M48701_IG17
+ ;; size=14 bbWeight=0.17 PerfScore 0.85
+G_M48701_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rcx]
mov rcx, rbx
; gcrRegs +[rcx]
mov rdx, gword ptr [rbp-0x20]
@@ -88,9 +102,16 @@ G_M48701_IG07: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcrRegs -[rcx rdx]
; gcr arg pop 0
cmp gword ptr [rbp+0x18], 0
- jne G_M48701_IG15
- ;; size=24 bbWeight=0.50 PerfScore 3.63
-G_M48701_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M48701_IG11
+ ;; size=20 bbWeight=0.50 PerfScore 3.63
+G_M48701_IG10: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov rcx, gword ptr [rbp+0x18]
+ ; gcrRegs +[rcx]
+ cmp dword ptr [rcx+0x20], 0
+ jne SHORT G_M48701_IG17
+ ;; size=10 bbWeight=0.17 PerfScore 0.85
+G_M48701_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rcx]
mov rcx, rbx
; gcrRegs +[rcx]
mov rdx, gword ptr [rbp-0x20]
@@ -106,13 +127,20 @@ G_M48701_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcrRegs -[rcx]
; gcr arg pop 0
cmp eax, 7
- jne SHORT G_M48701_IG11
+ jne SHORT G_M48701_IG15
;; size=34 bbWeight=0.50 PerfScore 6.38
-G_M48701_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M48701_IG12: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp gword ptr [rbp+0x18], 0
- jne SHORT G_M48701_IG14
+ je SHORT G_M48701_IG14
;; size=7 bbWeight=0.50 PerfScore 1.50
-G_M48701_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M48701_IG13: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov rcx, gword ptr [rbp+0x18]
+ ; gcrRegs +[rcx]
+ cmp dword ptr [rcx+0x20], 0
+ jne SHORT G_M48701_IG17
+ ;; size=10 bbWeight=0.17 PerfScore 0.85
+G_M48701_IG14: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rcx]
mov rcx, rbx
; gcrRegs +[rcx]
mov rdx, gword ptr [rbp-0x20]
@@ -121,7 +149,7 @@ G_M48701_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=13 bbWeight=0.50 PerfScore 2.12
-G_M48701_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M48701_IG15: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
lea rsi, bword ptr [rbx+0x70]
; byrRegs +[rsi]
mov rcx, rbx
@@ -136,17 +164,34 @@ G_M48701_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
mov rdx, rax
; gcrRegs +[rdx]
test rsi, rsi
- je G_M48701_IG19
+ jne SHORT G_M48701_IG18
+ ;; size=29 bbWeight=0.50 PerfScore 3.62
+G_M48701_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rdx rbx]
+ ; byrRegs -[rsi]
+ call [System.ThrowHelper:ThrowNullReferenceException()]
+ ; gcr arg pop 0
+ int3
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M48701_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ lea rcx, [rbp+0x18]
+ call [System.Threading.CancellationToken:ThrowOperationCanceledException():this]
+ ; gcr arg pop 0
+ int3
+ ;; size=11 bbWeight=0 PerfScore 0.00
+G_M48701_IG18: ; bbWeight=0.50, gcrefRegs=000C {rdx rbx}, byrefRegs=0040 {rsi}, byref, isz
+ ; gcrRegs +[rdx rbx]
+ ; byrRegs +[rsi]
mov rcx, rsi
; byrRegs +[rcx]
xor r8, r8
; gcrRegs +[r8]
call <unknown method>
- ; gcrRegs -[rdx r8]
+ ; gcrRegs -[rdx r8] +[rax]
; byrRegs -[rcx rsi]
; gcr arg pop 0
test rax, rax
- jne G_M48701_IG20
+ jne SHORT G_M48701_IG20
mov rcx, rbx
; gcrRegs +[rcx]
mov rdx, gword ptr [rbp-0x20]
@@ -159,8 +204,8 @@ G_M48701_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcr arg pop 0
lea rcx, bword ptr [rbx+0x84]
; byrRegs +[rcx]
- ;; size=80 bbWeight=0.50 PerfScore 9.38
-G_M48701_IG12: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx}, byref, isz
+ ;; size=43 bbWeight=0.50 PerfScore 5.75
+G_M48701_IG19: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx}, byref, isz
mov eax, dword ptr [rcx]
mov dword ptr [rbp-0x14], eax
mov edx, eax
@@ -170,56 +215,10 @@ G_M48701_IG12: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx},
lock
cmpxchg dword ptr [rcx], edx
cmp eax, dword ptr [rbp-0x14]
- jne SHORT G_M48701_IG12
+ jne SHORT G_M48701_IG19
;; size=26 bbWeight=4 PerfScore 103.00
-G_M48701_IG13: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[rcx]
- jmp SHORT G_M48701_IG20
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M48701_IG14: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rcx, gword ptr [rbp+0x18]
- ; gcrRegs +[rcx]
- cmp dword ptr [rcx+0x20], 0
- je G_M48701_IG10
- jmp SHORT G_M48701_IG18
- ;; size=16 bbWeight=0.17 PerfScore 1.19
-G_M48701_IG15: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rcx]
- mov rcx, gword ptr [rbp+0x18]
- ; gcrRegs +[rcx]
- cmp dword ptr [rcx+0x20], 0
- jne SHORT G_M48701_IG18
- jmp G_M48701_IG08
- ;; size=15 bbWeight=0.17 PerfScore 1.19
-G_M48701_IG16: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rcx]
- mov rcx, gword ptr [rbp+0x18]
- ; gcrRegs +[rcx]
- cmp dword ptr [rcx+0x20], 0
- jne SHORT G_M48701_IG18
- jmp G_M48701_IG07
- ;; size=15 bbWeight=0.17 PerfScore 1.19
-G_M48701_IG17: ; bbWeight=0.17, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rcx] +[rax]
- mov rcx, gword ptr [rbp+0x18]
- ; gcrRegs +[rcx]
- cmp dword ptr [rcx+0x20], 0
- je G_M48701_IG06
- ;; size=14 bbWeight=0.17 PerfScore 0.85
-G_M48701_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rcx rbx]
- lea rcx, [rbp+0x18]
- call [System.Threading.CancellationToken:ThrowOperationCanceledException():this]
- ; gcr arg pop 0
- int3
- ;; size=11 bbWeight=0 PerfScore 0.00
-G_M48701_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- call [System.ThrowHelper:ThrowNullReferenceException()]
- ; gcr arg pop 0
- int3
- ;; size=7 bbWeight=0 PerfScore 0.00
G_M48701_IG20: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rbx]
+ ; byrRegs -[rcx]
mov rcx, gword ptr [rbp-0x20]
; gcrRegs +[rcx]
cmp dword ptr [rcx], ecx
@@ -276,7 +275,7 @@ G_M48701_IG26: ; bbWeight=0, funclet epilog, nogc, extend
ret
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 464, prolog size 23, PerfScore 161.55, instruction count 123, allocated bytes for code 464 (MethodHash=c61241c2) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
+; Total bytes of code 430, prolog size 23, PerfScore 159.53, instruction count 119, allocated bytes for code 430 (MethodHash=c61241c2) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
; ============================================================
Unwind Info:
-23 (-4.88%) : 260995.dasm - Microsoft.Extensions.DependencyModel.Resolution.DotNetReferenceAssembliesPathResolver:GetDefaultDotNetReferenceAssembliesPath(Microsoft.Extensions.DependencyModel.IFileSystem):System.String (FullOpts)
@@ -15,11 +15,11 @@
;* V04 tmp3 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Runtime.InteropServices.OSPlatform>
;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
-;* V07 tmp6 [V07,T07] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+;* V07 tmp6 [V07,T08] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;* V08 tmp7 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Runtime.InteropServices.OSPlatform>
;* V09 tmp8 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
-;* V11 tmp10 [V11,T08] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+;* V11 tmp10 [V11,T09] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
; V12 tmp11 [V12,T01] ( 4, 4 ) ref -> rax "Single return block return value"
;* V13 tmp12 [V13 ] ( 0, 0 ) ref -> zero-ref "field V02.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
;* V14 tmp13 [V14 ] ( 0, 0 ) ref -> zero-ref "field V03.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
@@ -28,7 +28,7 @@
; V17 tmp16 [V17,T04] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
; V18 tmp17 [V18,T05] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
; V19 tmp18 [V19,T06] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-;* V20 cse0 [V20,T09] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
+;* V20 cse0 [V20,T07] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
;
; Lcl frame size = 32
@@ -42,7 +42,7 @@ G_M32404_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
test byte ptr [(reloc)], 1 ; global ptr
je G_M32404_IG13
;; size=13 bbWeight=1 PerfScore 4.00
-G_M32404_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M32404_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; box for <unknown class>:<unknown field>
mov rcx, gword ptr [rcx]
; gcrRegs +[rcx]
@@ -50,20 +50,9 @@ G_M32404_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
test rcx, rcx
je G_M32404_IG14
cmp dword ptr [rcx+0x08], 7
- je G_M32404_IG08
- ;; size=36 bbWeight=1 PerfScore 9.50
-G_M32404_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rcx]
- mov rcx, 0xD1FFAB1E ; box for <unknown class>:<unknown field>
- mov rcx, gword ptr [rcx]
- ; gcrRegs +[rcx]
- mov rcx, gword ptr [rcx+0x08]
- test rcx, rcx
- je G_M32404_IG14
- cmp dword ptr [rcx+0x08], 7
- jne G_M32404_IG09
- ;; size=36 bbWeight=0.50 PerfScore 4.75
-G_M32404_IG05: ; bbWeight=0.25, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref
+ jne SHORT G_M32404_IG05
+ ;; size=32 bbWeight=1 PerfScore 9.50
+G_M32404_IG04: ; bbWeight=0.25, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref
mov r11, 0xD1FFAB1E
or r11, qword ptr [rcx+0x0C]
mov rax, 0xD1FFAB1E
@@ -74,9 +63,54 @@ G_M32404_IG05: ; bbWeight=0.25, gcrefRegs=000A {rcx rbx}, byrefRegs=0000
; gcrRegs -[rcx]
xor rcx, rax
or rcx, r11
- jne G_M32404_IG09
+ je G_M32404_IG11
;; size=63 bbWeight=0.25 PerfScore 2.19
-G_M32404_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M32404_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov rcx, 0xD1FFAB1E ; box for <unknown class>:<unknown field>
+ mov rcx, gword ptr [rcx]
+ ; gcrRegs +[rcx]
+ mov rcx, gword ptr [rcx+0x08]
+ test rcx, rcx
+ je G_M32404_IG14
+ cmp dword ptr [rcx+0x08], 7
+ jne SHORT G_M32404_IG08
+ ;; size=32 bbWeight=0.50 PerfScore 4.75
+G_M32404_IG06: ; bbWeight=0.25, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
+ mov r11, 0xD1FFAB1E
+ or r11, qword ptr [rcx+0x0C]
+ mov rax, 0xD1FFAB1E
+ xor r11, rax
+ mov rax, 0xD1FFAB1E
+ or rax, qword ptr [rcx+0x12]
+ mov rcx, 0xD1FFAB1E
+ ; gcrRegs -[rcx]
+ xor rcx, rax
+ or rcx, r11
+ jne SHORT G_M32404_IG08
+ ;; size=59 bbWeight=0.25 PerfScore 2.19
+G_M32404_IG07: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov rcx, rbx
+ ; gcrRegs +[rcx]
+ mov r11, 0xD1FFAB1E ; code for <unknown method>
+ call [r11]<unknown method>
+ ; gcrRegs -[rcx] +[rax]
+ ; gcr arg pop 0
+ mov rcx, rax
+ ; gcrRegs +[rcx]
+ mov r11, 0xD1FFAB1E ; code for <unknown method>
+ mov rdx, 0xD1FFAB1E
+ ; gcrRegs +[rdx]
+ call [r11]<unknown method>
+ ; gcrRegs -[rax rcx rdx]
+ ; gcr arg pop 0
+ test eax, eax
+ je SHORT G_M32404_IG08
+ mov rax, 0xD1FFAB1E
+ ; gcrRegs +[rax]
+ jmp SHORT G_M32404_IG10
+ ;; size=58 bbWeight=0.50 PerfScore 5.38
+G_M32404_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax]
mov rcx, rbx
; gcrRegs +[rcx]
mov r11, 0xD1FFAB1E ; code for <unknown method>
@@ -95,50 +129,9 @@ G_M32404_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
je SHORT G_M32404_IG09
mov rax, 0xD1FFAB1E
; gcrRegs +[rax]
- ;; size=56 bbWeight=0.50 PerfScore 4.38
-G_M32404_IG07: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[rbx]
- add rsp, 32
- pop rbx
- ret
- ;; size=6 bbWeight=0.50 PerfScore 0.88
-G_M32404_IG08: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax] +[rcx rbx]
- mov r11, 0xD1FFAB1E
- or r11, qword ptr [rcx+0x0C]
- mov rax, 0xD1FFAB1E
- xor r11, rax
- mov rax, 0xD1FFAB1E
- or rax, qword ptr [rcx+0x12]
- mov rcx, 0xD1FFAB1E
- ; gcrRegs -[rcx]
- xor rcx, rax
- or rcx, r11
- je G_M32404_IG11
- jmp G_M32404_IG04
- ;; size=68 bbWeight=0.25 PerfScore 2.69
+ jmp SHORT G_M32404_IG10
+ ;; size=58 bbWeight=0.50 PerfScore 5.38
G_M32404_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rcx, rbx
- ; gcrRegs +[rcx]
- mov r11, 0xD1FFAB1E ; code for <unknown method>
- call [r11]<unknown method>
- ; gcrRegs -[rcx] +[rax]
- ; gcr arg pop 0
- mov rcx, rax
- ; gcrRegs +[rcx]
- mov r11, 0xD1FFAB1E ; code for <unknown method>
- mov rdx, 0xD1FFAB1E
- ; gcrRegs +[rdx]
- call [r11]<unknown method>
- ; gcrRegs -[rax rcx rdx]
- ; gcr arg pop 0
- test eax, eax
- je SHORT G_M32404_IG10
- mov rax, 0xD1FFAB1E
- ; gcrRegs +[rax]
- jmp G_M32404_IG07
- ;; size=61 bbWeight=0.50 PerfScore 5.38
-G_M32404_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
mov rcx, rbx
; gcrRegs +[rcx]
@@ -158,9 +151,13 @@ G_M32404_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
je SHORT G_M32404_IG11
mov rax, 0xD1FFAB1E
; gcrRegs +[rax]
- jmp G_M32404_IG07
- ;; size=61 bbWeight=0.50 PerfScore 5.38
-G_M32404_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=56 bbWeight=0.50 PerfScore 4.38
+G_M32404_IG10: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
+ add rsp, 32
+ pop rbx
+ ret
+ ;; size=6 bbWeight=0.50 PerfScore 0.88
+G_M32404_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
xor rax, rax
; gcrRegs +[rax]
@@ -193,7 +190,7 @@ G_M32404_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=30 bbWeight=0 PerfScore 0.00
-; Total bytes of code 471, prolog size 5, PerfScore 41.62, instruction count 89, allocated bytes for code 471 (MethodHash=a5fa816b) for method Microsoft.Extensions.DependencyModel.Resolution.DotNetReferenceAssembliesPathResolver:GetDefaultDotNetReferenceAssembliesPath(Microsoft.Extensions.DependencyModel.IFileSystem):System.String (FullOpts)
+; Total bytes of code 448, prolog size 5, PerfScore 41.12, instruction count 88, allocated bytes for code 448 (MethodHash=a5fa816b) for method Microsoft.Extensions.DependencyModel.Resolution.DotNetReferenceAssembliesPathResolver:GetDefaultDotNetReferenceAssembliesPath(Microsoft.Extensions.DependencyModel.IFileSystem):System.String (FullOpts)
; ============================================================
Unwind Info:
+34 (+7.04%) : 244250.dasm - System.Security.Cryptography.ECDsa:VerifyData(ubyte[],int,int,ubyte[],System.Security.Cryptography.HashAlgorithmName,int):ubyte:this (FullOpts)
@@ -67,58 +67,50 @@ G_M10026_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rdi, gword ptr [rsp+0xA8]
; gcrRegs +[rdi]
;; size=49 bbWeight=1 PerfScore 11.08
-G_M10026_IG02: ; bbWeight=1, gcrefRegs=0186 {rcx rdx rdi r8}, byrefRegs=0000 {}, byref, isz
+G_M10026_IG02: ; bbWeight=1, gcrefRegs=0186 {rcx rdx rdi r8}, byrefRegs=0000 {}, byref
; gcrRegs +[rcx rdx]
test rdx, rdx
- je G_M10026_IG15
+ je G_M10026_IG17
test ebx, ebx
- jl G_M10026_IG16
+ jl G_M10026_IG18
mov r9d, dword ptr [rdx+0x08]
mov ebp, r9d
cmp ebx, ebp
- jl SHORT G_M10026_IG04
- ;; size=28 bbWeight=1 PerfScore 6.00
-G_M10026_IG03: ; bbWeight=0.08, gcrefRegs=0186 {rcx rdx rdi r8}, byrefRegs=0000 {}, byref
- cmp ebx, ebp
- jg G_M10026_IG18
- ;; size=8 bbWeight=0.08 PerfScore 0.10
-G_M10026_IG04: ; bbWeight=1, gcrefRegs=0186 {rcx rdx rdi r8}, byrefRegs=0000 {}, byref, isz
+ jge G_M10026_IG10
+ ;; size=32 bbWeight=1 PerfScore 6.00
+G_M10026_IG03: ; bbWeight=1, gcrefRegs=0186 {rcx rdx rdi r8}, byrefRegs=0000 {}, byref
test esi, esi
- jl G_M10026_IG17
+ jl G_M10026_IG19
mov r14d, r9d
sub r14d, ebx
cmp esi, r14d
- jl SHORT G_M10026_IG06
- ;; size=19 bbWeight=1 PerfScore 3.00
-G_M10026_IG05: ; bbWeight=0.08, gcrefRegs=0186 {rcx rdx rdi r8}, byrefRegs=0000 {}, byref
- cmp esi, r14d
- jg G_M10026_IG20
- ;; size=9 bbWeight=0.08 PerfScore 0.10
-G_M10026_IG06: ; bbWeight=1, gcrefRegs=0186 {rcx rdx rdi r8}, byrefRegs=0000 {}, byref, isz
+ jge G_M10026_IG12
+ ;; size=23 bbWeight=1 PerfScore 3.00
+G_M10026_IG04: ; bbWeight=1, gcrefRegs=0186 {rcx rdx rdi r8}, byrefRegs=0000 {}, byref
test r8, r8
- je G_M10026_IG19
+ je G_M10026_IG22
test rdi, rdi
- je SHORT G_M10026_IG12
- ;; size=14 bbWeight=1 PerfScore 2.50
-G_M10026_IG07: ; bbWeight=0.46, gcrefRegs=0186 {rcx rdx rdi r8}, byrefRegs=0000 {}, byref, isz
+ je G_M10026_IG14
+ ;; size=18 bbWeight=1 PerfScore 2.50
+G_M10026_IG05: ; bbWeight=0.46, gcrefRegs=0186 {rcx rdx rdi r8}, byrefRegs=0000 {}, byref
cmp dword ptr [rdi+0x08], 0
- je SHORT G_M10026_IG12
- ;; size=6 bbWeight=0.46 PerfScore 1.84
-G_M10026_IG08: ; bbWeight=1, gcrefRegs=0186 {rcx rdx rdi r8}, byrefRegs=0000 {}, byref
+ je G_M10026_IG14
+ ;; size=10 bbWeight=0.46 PerfScore 1.84
+G_M10026_IG06: ; bbWeight=1, gcrefRegs=0186 {rcx rdx rdi r8}, byrefRegs=0000 {}, byref
test eax, eax
- jl G_M10026_IG13
+ jl G_M10026_IG15
;; size=8 bbWeight=1 PerfScore 1.25
-G_M10026_IG09: ; bbWeight=0.50, gcrefRegs=0186 {rcx rdx rdi r8}, byrefRegs=0000 {}, byref, isz
+G_M10026_IG07: ; bbWeight=0.50, gcrefRegs=0186 {rcx rdx rdi r8}, byrefRegs=0000 {}, byref
cmp eax, 1
- jg SHORT G_M10026_IG13
- ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M10026_IG10: ; bbWeight=1, gcrefRegs=0186 {rcx rdx rdi r8}, byrefRegs=0000 {}, byref, isz
+ jg G_M10026_IG15
+ ;; size=9 bbWeight=0.50 PerfScore 0.62
+G_M10026_IG08: ; bbWeight=1, gcrefRegs=0186 {rcx rdx rdi r8}, byrefRegs=0000 {}, byref
mov r10d, ebx
mov r11d, esi
add r11, r10
mov r9d, r9d
cmp r11, r9
- ja SHORT G_M10026_IG14
+ ja G_M10026_IG16
lea rdx, bword ptr [rdx+r10+0x10]
; gcrRegs -[rdx]
; byrRegs +[rdx]
@@ -143,8 +135,8 @@ G_M10026_IG10: ; bbWeight=1, gcrefRegs=0186 {rcx rdx rdi r8}, byrefRegs=0
; gcrRegs -[rcx rdi r9]
; gcr arg pop 0
nop
- ;; size=77 bbWeight=1 PerfScore 19.25
-G_M10026_IG11: ; bbWeight=1, epilog, nogc, extend
+ ;; size=81 bbWeight=1 PerfScore 19.25
+G_M10026_IG09: ; bbWeight=1, epilog, nogc, extend
add rsp, 80
pop rbx
pop rbp
@@ -153,7 +145,23 @@ G_M10026_IG11: ; bbWeight=1, epilog, nogc, extend
pop r14
ret
;; size=11 bbWeight=1 PerfScore 3.75
-G_M10026_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
+G_M10026_IG10: ; bbWeight=0.08, gcVars=0000000000000000 {}, gcrefRegs=0186 {rcx rdx rdi r8}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[rcx rdx rdi r8]
+ cmp ebx, ebp
+ jg G_M10026_IG20
+ ;; size=8 bbWeight=0.08 PerfScore 0.10
+G_M10026_IG11: ; bbWeight=0.07, gcrefRegs=0186 {rcx rdx rdi r8}, byrefRegs=0000 {}, byref
+ jmp G_M10026_IG03
+ ;; size=5 bbWeight=0.07 PerfScore 0.15
+G_M10026_IG12: ; bbWeight=0.08, gcrefRegs=0186 {rcx rdx rdi r8}, byrefRegs=0000 {}, byref
+ cmp esi, r14d
+ jle G_M10026_IG04
+ ;; size=9 bbWeight=0.08 PerfScore 0.10
+G_M10026_IG13: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rcx rdx rdi r8]
+ jmp G_M10026_IG21
+ ;; size=5 bbWeight=0.01 PerfScore 0.02
+G_M10026_IG14: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
; gcrRegs +[rdi]
mov ecx, 0x43B1
mov rdx, 0xD1FFAB1E
@@ -169,7 +177,7 @@ G_M10026_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0080 {
; gcr arg pop 0
int3
;; size=33 bbWeight=0 PerfScore 0.00
-G_M10026_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M10026_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, eax
call [<unknown method>]
; gcrRegs +[rax]
@@ -180,12 +188,12 @@ G_M10026_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rcx]
; gcr arg pop 0
;; size=16 bbWeight=0 PerfScore 0.00
-G_M10026_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M10026_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M10026_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M10026_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, 0x64E9
mov rdx, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
@@ -198,7 +206,7 @@ G_M10026_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
int3
;; size=30 bbWeight=0 PerfScore 0.00
-G_M10026_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M10026_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, 0x64F3
mov rdx, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
@@ -212,7 +220,7 @@ G_M10026_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
int3
;; size=32 bbWeight=0 PerfScore 0.00
-G_M10026_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M10026_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, 0x6501
mov rdx, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
@@ -226,7 +234,7 @@ G_M10026_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
int3
;; size=32 bbWeight=0 PerfScore 0.00
-G_M10026_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M10026_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, 0x64F3
mov rdx, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
@@ -241,20 +249,7 @@ G_M10026_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
int3
;; size=34 bbWeight=0 PerfScore 0.00
-G_M10026_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov ecx, 0x650D
- mov rdx, 0xD1FFAB1E
- call CORINFO_HELP_STRCNS
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- mov rcx, rax
- ; gcrRegs +[rcx]
- call [System.ArgumentNullException:Throw(System.String)]
- ; gcrRegs -[rax rcx]
- ; gcr arg pop 0
- int3
- ;; size=30 bbWeight=0 PerfScore 0.00
-G_M10026_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M10026_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, 0x6501
mov rdx, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
@@ -269,8 +264,21 @@ G_M10026_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
int3
;; size=35 bbWeight=0 PerfScore 0.00
+G_M10026_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov ecx, 0x650D
+ mov rdx, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ ; gcrRegs +[rax]
+ ; gcr arg pop 0
+ mov rcx, rax
+ ; gcrRegs +[rcx]
+ call [System.ArgumentNullException:Throw(System.String)]
+ ; gcrRegs -[rax rcx]
+ ; gcr arg pop 0
+ int3
+ ;; size=30 bbWeight=0 PerfScore 0.00
-; Total bytes of code 483, prolog size 20, PerfScore 49.50, instruction count 124, allocated bytes for code 483 (MethodHash=b9a4d8d5) for method System.Security.Cryptography.ECDsa:VerifyData(ubyte[],int,int,ubyte[],System.Security.Cryptography.HashAlgorithmName,int):ubyte:this (FullOpts)
+; Total bytes of code 517, prolog size 20, PerfScore 49.67, instruction count 126, allocated bytes for code 517 (MethodHash=b9a4d8d5) for method System.Security.Cryptography.ECDsa:VerifyData(ubyte[],int,int,ubyte[],System.Security.Cryptography.HashAlgorithmName,int):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
+34 (+7.05%) : 244101.dasm - System.Security.Cryptography.DSA:VerifyData(ubyte[],int,int,ubyte[],System.Security.Cryptography.HashAlgorithmName,int):ubyte:this (FullOpts)
@@ -67,58 +67,50 @@ G_M44620_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rdi, gword ptr [rsp+0xA8]
; gcrRegs +[rdi]
;; size=49 bbWeight=1 PerfScore 11.08
-G_M44620_IG02: ; bbWeight=1, gcrefRegs=0186 {rcx rdx rdi r8}, byrefRegs=0000 {}, byref, isz
+G_M44620_IG02: ; bbWeight=1, gcrefRegs=0186 {rcx rdx rdi r8}, byrefRegs=0000 {}, byref
; gcrRegs +[rcx rdx]
test rdx, rdx
- je G_M44620_IG15
+ je G_M44620_IG17
test ebx, ebx
- jl G_M44620_IG16
+ jl G_M44620_IG18
mov r9d, dword ptr [rdx+0x08]
mov ebp, r9d
cmp ebx, ebp
- jl SHORT G_M44620_IG04
- ;; size=28 bbWeight=1 PerfScore 6.00
-G_M44620_IG03: ; bbWeight=0.08, gcrefRegs=0186 {rcx rdx rdi r8}, byrefRegs=0000 {}, byref
- cmp ebx, ebp
- jg G_M44620_IG18
- ;; size=8 bbWeight=0.08 PerfScore 0.10
-G_M44620_IG04: ; bbWeight=1, gcrefRegs=0186 {rcx rdx rdi r8}, byrefRegs=0000 {}, byref, isz
+ jge G_M44620_IG10
+ ;; size=32 bbWeight=1 PerfScore 6.00
+G_M44620_IG03: ; bbWeight=1, gcrefRegs=0186 {rcx rdx rdi r8}, byrefRegs=0000 {}, byref
test esi, esi
- jl G_M44620_IG17
+ jl G_M44620_IG19
mov r14d, r9d
sub r14d, ebx
cmp esi, r14d
- jl SHORT G_M44620_IG06
- ;; size=19 bbWeight=1 PerfScore 3.00
-G_M44620_IG05: ; bbWeight=0.08, gcrefRegs=0186 {rcx rdx rdi r8}, byrefRegs=0000 {}, byref
- cmp esi, r14d
- jg G_M44620_IG20
- ;; size=9 bbWeight=0.08 PerfScore 0.10
-G_M44620_IG06: ; bbWeight=1, gcrefRegs=0186 {rcx rdx rdi r8}, byrefRegs=0000 {}, byref, isz
+ jge G_M44620_IG12
+ ;; size=23 bbWeight=1 PerfScore 3.00
+G_M44620_IG04: ; bbWeight=1, gcrefRegs=0186 {rcx rdx rdi r8}, byrefRegs=0000 {}, byref
test r8, r8
- je G_M44620_IG19
+ je G_M44620_IG22
test rdi, rdi
- je SHORT G_M44620_IG12
- ;; size=14 bbWeight=1 PerfScore 2.50
-G_M44620_IG07: ; bbWeight=0.46, gcrefRegs=0186 {rcx rdx rdi r8}, byrefRegs=0000 {}, byref, isz
+ je G_M44620_IG14
+ ;; size=18 bbWeight=1 PerfScore 2.50
+G_M44620_IG05: ; bbWeight=0.46, gcrefRegs=0186 {rcx rdx rdi r8}, byrefRegs=0000 {}, byref
cmp dword ptr [rdi+0x08], 0
- je SHORT G_M44620_IG12
- ;; size=6 bbWeight=0.46 PerfScore 1.84
-G_M44620_IG08: ; bbWeight=1, gcrefRegs=0186 {rcx rdx rdi r8}, byrefRegs=0000 {}, byref
+ je G_M44620_IG14
+ ;; size=10 bbWeight=0.46 PerfScore 1.84
+G_M44620_IG06: ; bbWeight=1, gcrefRegs=0186 {rcx rdx rdi r8}, byrefRegs=0000 {}, byref
test eax, eax
- jl G_M44620_IG13
+ jl G_M44620_IG15
;; size=8 bbWeight=1 PerfScore 1.25
-G_M44620_IG09: ; bbWeight=0.50, gcrefRegs=0186 {rcx rdx rdi r8}, byrefRegs=0000 {}, byref, isz
+G_M44620_IG07: ; bbWeight=0.50, gcrefRegs=0186 {rcx rdx rdi r8}, byrefRegs=0000 {}, byref
cmp eax, 1
- jg SHORT G_M44620_IG13
- ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M44620_IG10: ; bbWeight=1, gcrefRegs=0186 {rcx rdx rdi r8}, byrefRegs=0000 {}, byref, isz
+ jg G_M44620_IG15
+ ;; size=9 bbWeight=0.50 PerfScore 0.62
+G_M44620_IG08: ; bbWeight=1, gcrefRegs=0186 {rcx rdx rdi r8}, byrefRegs=0000 {}, byref
mov r10d, ebx
mov r11d, esi
add r11, r10
mov r9d, r9d
cmp r11, r9
- ja SHORT G_M44620_IG14
+ ja G_M44620_IG16
lea rdx, bword ptr [rdx+r10+0x10]
; gcrRegs -[rdx]
; byrRegs +[rdx]
@@ -143,8 +135,8 @@ G_M44620_IG10: ; bbWeight=1, gcrefRegs=0186 {rcx rdx rdi r8}, byrefRegs=0
; gcrRegs -[rcx rdi r9]
; gcr arg pop 0
nop
- ;; size=76 bbWeight=1 PerfScore 19.25
-G_M44620_IG11: ; bbWeight=1, epilog, nogc, extend
+ ;; size=80 bbWeight=1 PerfScore 19.25
+G_M44620_IG09: ; bbWeight=1, epilog, nogc, extend
add rsp, 80
pop rbx
pop rbp
@@ -153,7 +145,23 @@ G_M44620_IG11: ; bbWeight=1, epilog, nogc, extend
pop r14
ret
;; size=11 bbWeight=1 PerfScore 3.75
-G_M44620_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
+G_M44620_IG10: ; bbWeight=0.08, gcVars=0000000000000000 {}, gcrefRegs=0186 {rcx rdx rdi r8}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[rcx rdx rdi r8]
+ cmp ebx, ebp
+ jg G_M44620_IG20
+ ;; size=8 bbWeight=0.08 PerfScore 0.10
+G_M44620_IG11: ; bbWeight=0.07, gcrefRegs=0186 {rcx rdx rdi r8}, byrefRegs=0000 {}, byref
+ jmp G_M44620_IG03
+ ;; size=5 bbWeight=0.07 PerfScore 0.15
+G_M44620_IG12: ; bbWeight=0.08, gcrefRegs=0186 {rcx rdx rdi r8}, byrefRegs=0000 {}, byref
+ cmp esi, r14d
+ jle G_M44620_IG04
+ ;; size=9 bbWeight=0.08 PerfScore 0.10
+G_M44620_IG13: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rcx rdx rdi r8]
+ jmp G_M44620_IG21
+ ;; size=5 bbWeight=0.01 PerfScore 0.02
+G_M44620_IG14: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
; gcrRegs +[rdi]
mov ecx, 0x43B1
mov rdx, 0xD1FFAB1E
@@ -169,7 +177,7 @@ G_M44620_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0080 {
; gcr arg pop 0
int3
;; size=33 bbWeight=0 PerfScore 0.00
-G_M44620_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M44620_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, eax
call [<unknown method>]
; gcrRegs +[rax]
@@ -180,12 +188,12 @@ G_M44620_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rcx]
; gcr arg pop 0
;; size=16 bbWeight=0 PerfScore 0.00
-G_M44620_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M44620_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M44620_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M44620_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, 0x64E9
mov rdx, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
@@ -198,7 +206,7 @@ G_M44620_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
int3
;; size=30 bbWeight=0 PerfScore 0.00
-G_M44620_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M44620_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, 0x64F3
mov rdx, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
@@ -212,7 +220,7 @@ G_M44620_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
int3
;; size=32 bbWeight=0 PerfScore 0.00
-G_M44620_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M44620_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, 0x6501
mov rdx, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
@@ -226,7 +234,7 @@ G_M44620_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
int3
;; size=32 bbWeight=0 PerfScore 0.00
-G_M44620_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M44620_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, 0x64F3
mov rdx, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
@@ -241,20 +249,7 @@ G_M44620_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
int3
;; size=34 bbWeight=0 PerfScore 0.00
-G_M44620_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov ecx, 0x650D
- mov rdx, 0xD1FFAB1E
- call CORINFO_HELP_STRCNS
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- mov rcx, rax
- ; gcrRegs +[rcx]
- call [System.ArgumentNullException:Throw(System.String)]
- ; gcrRegs -[rax rcx]
- ; gcr arg pop 0
- int3
- ;; size=30 bbWeight=0 PerfScore 0.00
-G_M44620_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M44620_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, 0x6501
mov rdx, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
@@ -269,8 +264,21 @@ G_M44620_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
int3
;; size=35 bbWeight=0 PerfScore 0.00
+G_M44620_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov ecx, 0x650D
+ mov rdx, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ ; gcrRegs +[rax]
+ ; gcr arg pop 0
+ mov rcx, rax
+ ; gcrRegs +[rcx]
+ call [System.ArgumentNullException:Throw(System.String)]
+ ; gcrRegs -[rax rcx]
+ ; gcr arg pop 0
+ int3
+ ;; size=30 bbWeight=0 PerfScore 0.00
-; Total bytes of code 482, prolog size 20, PerfScore 49.50, instruction count 124, allocated bytes for code 482 (MethodHash=9bb351b3) for method System.Security.Cryptography.DSA:VerifyData(ubyte[],int,int,ubyte[],System.Security.Cryptography.HashAlgorithmName,int):ubyte:this (FullOpts)
+; Total bytes of code 516, prolog size 20, PerfScore 49.67, instruction count 126, allocated bytes for code 516 (MethodHash=9bb351b3) for method System.Security.Cryptography.DSA:VerifyData(ubyte[],int,int,ubyte[],System.Security.Cryptography.HashAlgorithmName,int):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
+19 (+8.41%) : 224736.dasm - System.Runtime.Serialization.Json.XmlJsonWriter:LookupPrefix(System.String):System.String:this (FullOpts)
@@ -9,54 +9,47 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Runtime.Serialization.Json.XmlJsonWriter>
-; V01 arg1 [V01,T00] ( 8, 6 ) ref -> rdx class-hnd single-def <System.String>
+; V01 arg1 [V01,T00] ( 8, 5.25) ref -> rdx class-hnd single-def <System.String>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
-; V04 tmp2 [V04,T02] ( 2, 2 ) int -> rax "spilling unroll qmark"
+; V04 tmp2 [V04,T03] ( 2, 0.25) int -> rsi "spilling unroll qmark"
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
-; V06 tmp4 [V06,T03] ( 2, 2 ) int -> rax "spilling unroll qmark"
-; V07 cse0 [V07,T01] ( 4, 2.75) int -> rcx "CSE - moderate"
-; V08 rat0 [V08,T04] ( 3, 3 ) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable"
+; V06 tmp4 [V06,T02] ( 2, 2 ) int -> rax "spilling unroll qmark"
+; V07 cse0 [V07,T01] ( 4, 2.75) int -> rbx "CSE - moderate"
+; V08 rat0 [V08,T04] ( 3, 0.75) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable"
; V09 rat1 [V09,T05] ( 3, 3 ) simd64 -> mm0 "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 40
G_M61524_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push rsi
+ push rbx
sub rsp, 40
vzeroupper
- ;; size=7 bbWeight=1 PerfScore 1.25
+ ;; size=9 bbWeight=1 PerfScore 3.25
G_M61524_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdx]
test rdx, rdx
- je G_M61524_IG10
- mov ecx, dword ptr [rdx+0x08]
- cmp ecx, 29
- jne SHORT G_M61524_IG05
+ je G_M61524_IG09
+ mov ebx, dword ptr [rdx+0x08]
+ cmp ebx, 29
+ jne SHORT G_M61524_IG04
;; size=17 bbWeight=1 PerfScore 4.50
-G_M61524_IG03: ; bbWeight=0.50, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+G_M61524_IG03: ; bbWeight=0.12, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
vmovups ymm0, ymmword ptr [rdx+0x0C]
vpxor ymm0, ymm0, ymmword ptr [reloc @RWD00]
vmovups ymm1, ymmword ptr [rdx+0x26]
vpternlogq ymm0, ymm1, ymmword ptr [reloc @RWD32], -10
vptest ymm0, ymm0
- sete al
- movzx rax, al
- test eax, eax
- je SHORT G_M61524_IG05
- mov rax, 0xD1FFAB1E
- ; gcrRegs +[rax]
- ;; size=54 bbWeight=0.50 PerfScore 10.88
-G_M61524_IG04: ; bbWeight=0.50, epilog, nogc, extend
- vzeroupper
- add rsp, 40
- ret
- ;; size=8 bbWeight=0.50 PerfScore 1.12
-G_M61524_IG05: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax]
- cmp ecx, 36
- jne SHORT G_M61524_IG08
+ sete sil
+ movzx rsi, sil
+ jmp G_M61524_IG10
+ ;; size=47 bbWeight=0.12 PerfScore 2.78
+G_M61524_IG04: ; bbWeight=0.25, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ cmp ebx, 36
+ jne SHORT G_M61524_IG07
;; size=5 bbWeight=0.25 PerfScore 0.31
-G_M61524_IG06: ; bbWeight=0.50, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+G_M61524_IG05: ; bbWeight=0.50, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
vmovups zmm0, zmmword ptr [rdx+0x0C]
vpxorq zmm0, zmm0, zmmword ptr [reloc @RWD64]
vmovups zmm1, zmmword ptr [rdx+0x14]
@@ -66,31 +59,35 @@ G_M61524_IG06: ; bbWeight=0.50, gcrefRegs=0004 {rdx}, byrefRegs=0000 {},
sete al
movzx rax, al
test eax, eax
- je SHORT G_M61524_IG08
+ je SHORT G_M61524_IG07
mov rax, 0xD1FFAB1E
; gcrRegs +[rax]
;; size=71 bbWeight=0.50 PerfScore 9.38
-G_M61524_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M61524_IG06: ; bbWeight=0.50, epilog, nogc, extend
vzeroupper
add rsp, 40
+ pop rbx
+ pop rsi
ret
- ;; size=8 bbWeight=0.50 PerfScore 1.12
-G_M61524_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=10 bbWeight=0.50 PerfScore 1.62
+G_M61524_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rdx]
xor rax, rax
; gcrRegs +[rax]
- mov rdx, 0xD1FFAB1E
- ; gcrRegs +[rdx]
- test ecx, ecx
- cmove rax, rdx
+ mov rcx, 0xD1FFAB1E
+ ; gcrRegs +[rcx]
+ test ebx, ebx
+ cmove rax, rcx
;; size=18 bbWeight=0.50 PerfScore 0.50
-G_M61524_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M61524_IG08: ; bbWeight=0.50, epilog, nogc, extend
vzeroupper
add rsp, 40
+ pop rbx
+ pop rsi
ret
- ;; size=8 bbWeight=0.50 PerfScore 1.12
-G_M61524_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax rdx]
+ ;; size=10 bbWeight=0.50 PerfScore 1.62
+G_M61524_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax rcx]
mov ecx, 0x65C3
mov rdx, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
@@ -103,13 +100,27 @@ G_M61524_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
; gcr arg pop 0
int3
;; size=30 bbWeight=0 PerfScore 0.00
+G_M61524_IG10: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rdx]
+ test esi, esi
+ je G_M61524_IG04
+ mov rax, 0xD1FFAB1E
+ ; gcrRegs +[rax]
+ ;; size=18 bbWeight=0 PerfScore 0.00
+G_M61524_IG11: ; bbWeight=0, epilog, nogc, extend
+ vzeroupper
+ add rsp, 40
+ pop rbx
+ pop rsi
+ ret
+ ;; size=10 bbWeight=0 PerfScore 0.00
RWD00 dq 0070007400740068h, 0077002F002F003Ah, 0077002E00770077h, 0072006F002E0033h
RWD32 dq 00670072006F002Eh, 003000300032002Fh, 006D0078002F0030h, 002F0073006E006Ch
RWD64 dq 0070007400740068h, 0077002F002F003Ah, 0077002E00770077h, 0072006F002E0033h, 004D0058002F0067h, 00390031002F004Ch, 006E002F00380039h, 00730065006D0061h
RWD128 dq 0077002F002F003Ah, 0077002E00770077h, 0072006F002E0033h, 004D0058002F0067h, 00390031002F004Ch, 006E002F00380039h, 00730065006D0061h, 0065006300610070h
-; Total bytes of code 226, prolog size 7, PerfScore 30.19, instruction count 49, allocated bytes for code 228 (MethodHash=224f0fab) for method System.Runtime.Serialization.Json.XmlJsonWriter:LookupPrefix(System.String):System.String:this (FullOpts)
+; Total bytes of code 245, prolog size 9, PerfScore 23.97, instruction count 58, allocated bytes for code 247 (MethodHash=224f0fab) for method System.Runtime.Serialization.Json.XmlJsonWriter:LookupPrefix(System.String):System.String:this (FullOpts)
; ============================================================
Unwind Info:
@@ -117,9 +128,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
- CountOfUnwindCodes: 1
+ SizeOfProlog : 0x06
+ CountOfUnwindCodes: 3
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+ CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
libraries_tests.run.windows.x64.Release.mch
-36 (-12.41%) : 504142.dasm - System.Xml.Xsl.Qil.QilName:Equals(System.Object):ubyte:this (Tier1)
@@ -9,20 +9,20 @@
; 5 inlinees with PGO data; 6 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 5, 4 ) ref -> rbx this class-hnd single-def <System.Xml.Xsl.Qil.QilName>
-; V01 arg1 [V01,T05] ( 3, 3 ) ref -> rdx class-hnd single-def <System.Object>
-; V02 loc0 [V02,T06] ( 6, 4.50) ref -> rsi class-hnd exact <System.Xml.Xsl.Qil.QilName>
+; V00 this [V00,T01] ( 4, 2 ) ref -> rbx this class-hnd single-def <System.Xml.Xsl.Qil.QilName>
+; V01 arg1 [V01,T00] ( 3, 3 ) ref -> rdx class-hnd single-def <System.Object>
+; V02 loc0 [V02,T02] ( 5, 2.50) ref -> rsi class-hnd exact <System.Xml.Xsl.Qil.QilName>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Xml.Xsl.Qil.QilName>
-;* V05 tmp2 [V05,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V06 tmp3 [V06,T00] ( 7, 14 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.String>
-; V07 tmp4 [V07,T01] ( 6, 12 ) ref -> rbp class-hnd exact single-def "Inlining Arg" <System.String>
-; V08 tmp5 [V08,T08] ( 2, 2 ) ubyte -> rax "Inline return value spill temp"
-; V09 tmp6 [V09,T07] ( 2, 4 ) byref -> rcx single-def "impAppendStmt"
-; V10 tmp7 [V10,T02] ( 9, 8.47) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.String>
-; V11 tmp8 [V11,T03] ( 8, 8.31) ref -> rbp class-hnd exact single-def "Inlining Arg" <System.String>
-; V12 tmp9 [V12,T09] ( 4, 2 ) ubyte -> rax "Inline return value spill temp"
-; V13 tmp10 [V13,T11] ( 2, 0.31) byref -> rcx single-def "impAppendStmt"
+;* V05 tmp2 [V05,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V06 tmp3 [V06,T04] ( 7, 0 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.String>
+; V07 tmp4 [V07,T06] ( 6, 0 ) ref -> rbp class-hnd exact single-def "Inlining Arg" <System.String>
+; V08 tmp5 [V08,T08] ( 2, 0 ) ubyte -> rax "Inline return value spill temp"
+; V09 tmp6 [V09,T10] ( 2, 0 ) byref -> rcx single-def "impAppendStmt"
+; V10 tmp7 [V10,T05] ( 7, 0 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.String>
+; V11 tmp8 [V11,T07] ( 6, 0 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
+; V12 tmp9 [V12,T09] ( 4, 0 ) ubyte -> rax "Inline return value spill temp"
+; V13 tmp10 [V13,T11] ( 2, 0 ) byref -> rcx single-def "impAppendStmt"
;
; Lcl frame size = 40
@@ -35,33 +35,46 @@ G_M6245_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rbx, rcx
; gcrRegs +[rbx]
;; size=11 bbWeight=1 PerfScore 4.50
-G_M6245_IG02: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
+G_M6245_IG02: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdx]
mov rsi, rdx
; gcrRegs +[rsi]
test rsi, rsi
- je G_M6245_IG09
- ;; size=12 bbWeight=1 PerfScore 1.50
-G_M6245_IG03: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ je SHORT G_M6245_IG04
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M6245_IG03: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdx]
- mov rcx, 0xD1FFAB1E ; System.Xml.Xsl.Qil.QilName
- cmp qword ptr [rsi], rcx
- jne G_M6245_IG09
- ;; size=19 bbWeight=0.50 PerfScore 2.12
-G_M6245_IG04: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ mov rax, 0xD1FFAB1E ; System.Xml.Xsl.Qil.QilName
+ cmp qword ptr [rsi], rax
+ je SHORT G_M6245_IG06
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M6245_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx rsi]
+ xor eax, eax
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M6245_IG05: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 40
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ ret
+ ;; size=9 bbWeight=1 PerfScore 3.25
+G_M6245_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[rbx rsi]
mov rdi, gword ptr [rbx+0x30]
; gcrRegs +[rdi]
mov rbp, gword ptr [rsi+0x30]
; gcrRegs +[rbp]
cmp rdi, rbp
- je G_M6245_IG11
+ je SHORT G_M6245_IG07
test rdi, rdi
- je G_M6245_IG09
+ je SHORT G_M6245_IG04
test rbp, rbp
- je G_M6245_IG09
+ je SHORT G_M6245_IG04
mov ecx, dword ptr [rdi+0x08]
cmp ecx, dword ptr [rbp+0x08]
- jne G_M6245_IG09
+ jne SHORT G_M6245_IG04
mov ecx, 1
call [<unknown method>]
; gcr arg pop 0
@@ -85,66 +98,59 @@ G_M6245_IG04: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
; byrRegs -[rcx rdx]
; gcr arg pop 0
test eax, eax
+ je SHORT G_M6245_IG04
+ ;; size=96 bbWeight=0 PerfScore 0.00
+G_M6245_IG07: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ mov rbx, gword ptr [rbx+0x38]
+ mov rsi, gword ptr [rsi+0x38]
+ cmp rbx, rsi
+ jne SHORT G_M6245_IG08
+ mov eax, 1
+ jmp SHORT G_M6245_IG11
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M6245_IG08: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ test rbx, rbx
je SHORT G_M6245_IG09
- mov rdi, gword ptr [rbx+0x38]
- ; gcrRegs +[rdi]
- mov rbp, gword ptr [rsi+0x38]
- ; gcrRegs +[rbp]
- cmp rdi, rbp
- je SHORT G_M6245_IG12
- ;; size=125 bbWeight=1 PerfScore 42.25
-G_M6245_IG05: ; bbWeight=1, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0000 {}, byref, isz
+ test rsi, rsi
+ je SHORT G_M6245_IG09
+ mov eax, dword ptr [rbx+0x08]
+ cmp eax, dword ptr [rsi+0x08]
+ je SHORT G_M6245_IG10
+ ;; size=18 bbWeight=0 PerfScore 0.00
+G_M6245_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx rsi]
- test rdi, rdi
- je SHORT G_M6245_IG06
- test rbp, rbp
- je SHORT G_M6245_IG06
- mov ecx, dword ptr [rdi+0x08]
- cmp ecx, dword ptr [rbp+0x08]
- je SHORT G_M6245_IG08
- ;; size=18 bbWeight=1 PerfScore 8.50
-G_M6245_IG06: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbp rdi]
xor eax, eax
- ;; size=2 bbWeight=0.92 PerfScore 0.23
-G_M6245_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- add rsp, 40
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- ret
- ;; size=9 bbWeight=1 PerfScore 3.25
-G_M6245_IG08: ; bbWeight=0.08, gcVars=0000000000000000 {}, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rbp rdi]
+ jmp SHORT G_M6245_IG11
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M6245_IG10: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rbx rsi]
mov ecx, 1
call [<unknown method>]
; gcr arg pop 0
mov ecx, 1
call [<unknown method>]
; gcr arg pop 0
- mov ecx, dword ptr [rdi+0x08]
- cmp ecx, dword ptr [rbp+0x08]
+ mov ecx, dword ptr [rbx+0x08]
+ cmp ecx, dword ptr [rsi+0x08]
sete cl
movzx rcx, cl
call [<unknown method>]
; gcr arg pop 0
- lea rcx, bword ptr [rdi+0x0C]
+ lea rcx, bword ptr [rbx+0x0C]
; byrRegs +[rcx]
- mov r8d, dword ptr [rdi+0x08]
+ mov r8d, dword ptr [rbx+0x08]
add r8d, r8d
- lea rdx, bword ptr [rbp+0x0C]
+ lea rdx, bword ptr [rsi+0x0C]
; byrRegs +[rdx]
call [<unknown method>]
- ; gcrRegs -[rbp rdi]
+ ; gcrRegs -[rbx rsi]
; byrRegs -[rcx rdx]
; gcr arg pop 0
- jmp SHORT G_M6245_IG07
- ;; size=63 bbWeight=0.08 PerfScore 1.86
-G_M6245_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- xor eax, eax
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M6245_IG10: ; bbWeight=0, epilog, nogc, extend
+ ;; size=61 bbWeight=0 PerfScore 0.00
+G_M6245_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ nop
+ ;; size=1 bbWeight=0 PerfScore 0.00
+G_M6245_IG12: ; bbWeight=0, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
@@ -152,22 +158,8 @@ G_M6245_IG10: ; bbWeight=0, epilog, nogc, extend
pop rdi
ret
;; size=9 bbWeight=0 PerfScore 0.00
-G_M6245_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rbx rsi]
- mov rdi, gword ptr [rbx+0x38]
- ; gcrRegs +[rdi]
- mov rbp, gword ptr [rsi+0x38]
- ; gcrRegs +[rbp]
- cmp rdi, rbp
- jne SHORT G_M6245_IG05
- ;; size=13 bbWeight=0 PerfScore 0.00
-G_M6245_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx rbp rsi rdi]
- mov eax, 1
- jmp SHORT G_M6245_IG07
- ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 290, prolog size 8, PerfScore 64.22, instruction count 85, allocated bytes for code 290 (MethodHash=bcb4e79a) for method System.Xml.Xsl.Qil.QilName:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 254, prolog size 8, PerfScore 11.62, instruction count 82, allocated bytes for code 254 (MethodHash=bcb4e79a) for method System.Xml.Xsl.Qil.QilName:Equals(System.Object):ubyte:this (Tier1)
; ============================================================
Unwind Info:
-23 (-12.30%) : 727737.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System._Canon]:getHasAnyApplicableMember():ubyte:this (Tier1)
@@ -5,7 +5,7 @@
; optimized using Dynamic PGO
; rsp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 52984
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 52984
; 1 inlinees with PGO data; 6 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
@@ -17,9 +17,9 @@
;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-;* V08 tmp4 [V08,T13] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]>
+;* V08 tmp4 [V08,T12] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]>
; V09 tmp5 [V09,T06] ( 2, 4 ) int -> r8 "Inlining Arg"
-;* V10 tmp6 [V10,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V10 tmp6 [V10,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V11 tmp7 [V11,T10] ( 3, 2.00) ubyte -> rax "Inline stloc first use temp"
; V12 tmp8 [V12,T07] ( 2, 4 ) int -> rcx "impAppendStmt"
; V13 tmp9 [V13,T05] ( 2, 4 ) ref -> rdx class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]>
@@ -29,11 +29,11 @@
;* V17 tmp13 [V17 ] ( 0, 0 ) ubyte -> zero-ref "V03.[004..005)"
;* V18 cse0 [V18,T14] ( 0, 0 ) long -> zero-ref hoist "CSE - aggressive"
; V19 cse1 [V19,T09] ( 3, 3 ) ref -> rdx "CSE - aggressive"
-; V20 cse2 [V20,T08] ( 2, 2 ) long -> rsi "CSE - aggressive"
-; V21 rat0 [V21,T03] ( 2, 4 ) long -> rcx "Spilling to split statement for tree"
+; V20 cse2 [V20,T08] ( 1, 1 ) long -> rsi "CSE - aggressive"
+;* V21 rat0 [V21,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V22 rat1 [V22,T04] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V23 rat2 [V23,T01] ( 2, 4 ) long -> rcx "fgMakeTemp is creating a new local variable"
-;* V24 rat3 [V24,T12] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V23 rat2 [V23,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+;* V24 rat3 [V24,T11] ( 0, 0 ) long -> zero-ref "runtime lookup"
;* V25 rat4 [V25,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 136
@@ -50,7 +50,7 @@ G_M864_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n
mov rbx, rcx
; gcrRegs +[rbx]
;; size=47 bbWeight=1 PerfScore 9.83
-G_M864_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M864_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
lea rdx, [rsp+0x70]
@@ -59,16 +59,17 @@ G_M864_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
; gcr arg pop 0
mov rsi, qword ptr [rbx]
- mov rcx, rsi
- mov rcx, qword ptr [rcx+0x38]
- mov rcx, qword ptr [rcx]
- mov rcx, qword ptr [rcx+0x40]
- test rcx, rcx
- je SHORT G_M864_IG06
- jmp SHORT G_M864_IG06
- ;; size=41 bbWeight=1 PerfScore 20.00
-G_M864_IG03: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=20 bbWeight=1 PerfScore 10.50
+G_M864_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov ecx, dword ptr [rsp+0x78]
+ inc ecx
+ mov dword ptr [rsp+0x78], ecx
+ mov ecx, dword ptr [rsp+0x78]
+ mov rdx, gword ptr [rsp+0x70]
; gcrRegs +[rdx]
+ mov rdx, gword ptr [rdx+0x08]
+ cmp ecx, dword ptr [rdx+0x10]
+ jge SHORT G_M864_IG08
mov r8d, dword ptr [rsp+0x78]
mov rcx, rdx
; gcrRegs +[rcx]
@@ -80,8 +81,8 @@ G_M864_IG03: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, b
movzx rax, byte ptr [rsp+0x3C]
lea ecx, [rax-0x01]
cmp ecx, 1
- ja SHORT G_M864_IG07
- ;; size=32 bbWeight=1 PerfScore 7.50
+ ja SHORT G_M864_IG06
+ ;; size=60 bbWeight=1 PerfScore 17.75
G_M864_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov eax, 1
;; size=5 bbWeight=1 PerfScore 0.25
@@ -91,38 +92,25 @@ G_M864_IG05: ; bbWeight=1, epilog, nogc, extend
pop rsi
ret
;; size=10 bbWeight=1 PerfScore 2.25
-G_M864_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
- mov ecx, dword ptr [rsp+0x78]
- inc ecx
- mov dword ptr [rsp+0x78], ecx
- mov ecx, dword ptr [rsp+0x78]
- mov rdx, gword ptr [rsp+0x70]
- ; gcrRegs +[rdx]
- mov rdx, gword ptr [rdx+0x08]
- cmp ecx, dword ptr [rdx+0x10]
- jge SHORT G_M864_IG09
- jmp SHORT G_M864_IG03
- ;; size=30 bbWeight=1 PerfScore 12.25
-G_M864_IG07: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdx]
+G_M864_IG06: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
add eax, -22
cmp eax, 1
jbe SHORT G_M864_IG04
;; size=8 bbWeight=0.00 PerfScore 0.00
-G_M864_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M864_IG06
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M864_IG09: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M864_IG07: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M864_IG03
+ ;; size=2 bbWeight=0 PerfScore 0.00
+G_M864_IG08: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
xor eax, eax
;; size=2 bbWeight=0 PerfScore 0.00
-G_M864_IG10: ; bbWeight=0, epilog, nogc, extend
+G_M864_IG09: ; bbWeight=0, epilog, nogc, extend
add rsp, 136
pop rbx
pop rsi
ret
;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 187, prolog size 44, PerfScore 54.08, instruction count 52, allocated bytes for code 187 (MethodHash=caadfc9f) for method Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (Tier1)
+; Total bytes of code 164, prolog size 44, PerfScore 40.58, instruction count 44, allocated bytes for code 164 (MethodHash=caadfc9f) for method Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (Tier1)
; ============================================================
Unwind Info:
-23 (-12.30%) : 66496.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System._Canon]:getHasAnyApplicableMember():ubyte:this (Tier1)
@@ -5,7 +5,7 @@
; optimized using Dynamic PGO
; rsp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 15714
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 15714
; 1 inlinees with PGO data; 6 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
@@ -17,9 +17,9 @@
;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-;* V08 tmp4 [V08,T13] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]>
+;* V08 tmp4 [V08,T12] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]>
; V09 tmp5 [V09,T06] ( 2, 4 ) int -> r8 "Inlining Arg"
-;* V10 tmp6 [V10,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V10 tmp6 [V10,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V11 tmp7 [V11,T10] ( 3, 2.00) ubyte -> rax "Inline stloc first use temp"
; V12 tmp8 [V12,T07] ( 2, 4 ) int -> rcx "impAppendStmt"
; V13 tmp9 [V13,T05] ( 2, 4 ) ref -> rdx class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]>
@@ -29,11 +29,11 @@
;* V17 tmp13 [V17 ] ( 0, 0 ) ubyte -> zero-ref "V03.[004..005)"
;* V18 cse0 [V18,T14] ( 0, 0 ) long -> zero-ref hoist "CSE - aggressive"
; V19 cse1 [V19,T09] ( 3, 3 ) ref -> rdx "CSE - aggressive"
-; V20 cse2 [V20,T08] ( 2, 2 ) long -> rsi "CSE - aggressive"
-; V21 rat0 [V21,T03] ( 2, 4 ) long -> rcx "Spilling to split statement for tree"
+; V20 cse2 [V20,T08] ( 1, 1 ) long -> rsi "CSE - aggressive"
+;* V21 rat0 [V21,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V22 rat1 [V22,T04] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V23 rat2 [V23,T01] ( 2, 4 ) long -> rcx "fgMakeTemp is creating a new local variable"
-;* V24 rat3 [V24,T12] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V23 rat2 [V23,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+;* V24 rat3 [V24,T11] ( 0, 0 ) long -> zero-ref "runtime lookup"
;* V25 rat4 [V25,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 136
@@ -50,7 +50,7 @@ G_M864_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n
mov rbx, rcx
; gcrRegs +[rbx]
;; size=47 bbWeight=1 PerfScore 9.83
-G_M864_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M864_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
lea rdx, [rsp+0x70]
@@ -59,16 +59,17 @@ G_M864_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
; gcr arg pop 0
mov rsi, qword ptr [rbx]
- mov rcx, rsi
- mov rcx, qword ptr [rcx+0x38]
- mov rcx, qword ptr [rcx]
- mov rcx, qword ptr [rcx+0x40]
- test rcx, rcx
- je SHORT G_M864_IG06
- jmp SHORT G_M864_IG06
- ;; size=41 bbWeight=1 PerfScore 20.00
-G_M864_IG03: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=20 bbWeight=1 PerfScore 10.50
+G_M864_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov ecx, dword ptr [rsp+0x78]
+ inc ecx
+ mov dword ptr [rsp+0x78], ecx
+ mov ecx, dword ptr [rsp+0x78]
+ mov rdx, gword ptr [rsp+0x70]
; gcrRegs +[rdx]
+ mov rdx, gword ptr [rdx+0x08]
+ cmp ecx, dword ptr [rdx+0x10]
+ jge SHORT G_M864_IG08
mov r8d, dword ptr [rsp+0x78]
mov rcx, rdx
; gcrRegs +[rcx]
@@ -80,8 +81,8 @@ G_M864_IG03: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, b
movzx rax, byte ptr [rsp+0x3C]
lea ecx, [rax-0x01]
cmp ecx, 1
- ja SHORT G_M864_IG07
- ;; size=32 bbWeight=1 PerfScore 7.50
+ ja SHORT G_M864_IG06
+ ;; size=60 bbWeight=1 PerfScore 17.75
G_M864_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov eax, 1
;; size=5 bbWeight=1 PerfScore 0.25
@@ -91,38 +92,25 @@ G_M864_IG05: ; bbWeight=1, epilog, nogc, extend
pop rsi
ret
;; size=10 bbWeight=1 PerfScore 2.25
-G_M864_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
- mov ecx, dword ptr [rsp+0x78]
- inc ecx
- mov dword ptr [rsp+0x78], ecx
- mov ecx, dword ptr [rsp+0x78]
- mov rdx, gword ptr [rsp+0x70]
- ; gcrRegs +[rdx]
- mov rdx, gword ptr [rdx+0x08]
- cmp ecx, dword ptr [rdx+0x10]
- jge SHORT G_M864_IG09
- jmp SHORT G_M864_IG03
- ;; size=30 bbWeight=1 PerfScore 12.25
-G_M864_IG07: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdx]
+G_M864_IG06: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
add eax, -22
cmp eax, 1
jbe SHORT G_M864_IG04
;; size=8 bbWeight=0.00 PerfScore 0.00
-G_M864_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M864_IG06
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M864_IG09: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M864_IG07: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M864_IG03
+ ;; size=2 bbWeight=0 PerfScore 0.00
+G_M864_IG08: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
xor eax, eax
;; size=2 bbWeight=0 PerfScore 0.00
-G_M864_IG10: ; bbWeight=0, epilog, nogc, extend
+G_M864_IG09: ; bbWeight=0, epilog, nogc, extend
add rsp, 136
pop rbx
pop rsi
ret
;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 187, prolog size 44, PerfScore 54.08, instruction count 52, allocated bytes for code 187 (MethodHash=caadfc9f) for method Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (Tier1)
+; Total bytes of code 164, prolog size 44, PerfScore 40.58, instruction count 44, allocated bytes for code 164 (MethodHash=caadfc9f) for method Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (Tier1)
; ============================================================
Unwind Info:
+48 (+22.97%) : 289655.dasm - System.MemoryExtensions:Trim(System.ReadOnlySpan1[ushort]):System.ReadOnlySpan1ushort
@@ -10,27 +10,27 @@
; Final local variable assignments
;
; V00 RetBuf [V00,T03] ( 7, 5 ) byref -> rbx single-def
-; V01 arg0 [V01,T02] ( 4, 8 ) byref -> rdx ld-addr-op single-def
+; V01 arg0 [V01,T00] ( 4, 8 ) byref -> rdx ld-addr-op single-def
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T06] ( 2, 4 ) int -> rcx "Span.get_Item index"
-; V04 tmp2 [V04,T07] ( 2, 2 ) ubyte -> rax "Inline return value spill temp"
-; V05 tmp3 [V05,T00] ( 5, 10 ) ushort -> rbp "Inlining Arg"
+; V03 tmp1 [V03,T06] ( 4, 4 ) int -> r14 "Span.get_Item index"
+; V04 tmp2 [V04,T07] ( 2, 0 ) ubyte -> rax "Inline return value spill temp"
+; V05 tmp3 [V05,T02] ( 5, 8 ) ushort -> rbp "Inlining Arg"
;* V06 tmp4 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V07 tmp5 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V08 tmp6 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V09 tmp7 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V10 tmp8 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V11 tmp9 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V12 tmp10 [V12,T08] ( 2, 2 ) ubyte -> rax "Inline return value spill temp"
-; V13 tmp11 [V13,T01] ( 5, 10 ) ushort -> rbp "Inlining Arg"
+; V12 tmp10 [V12,T08] ( 2, 0 ) ubyte -> rax "Inline return value spill temp"
+; V13 tmp11 [V13,T01] ( 7, 8 ) ushort -> r15 "Inlining Arg"
;* V14 tmp12 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V15 tmp13 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V16 tmp14 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V17 tmp15 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V18 tmp16 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V19 tmp17 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V20 tmp18 [V20,T04] ( 5, 4 ) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V21 tmp19 [V21,T05] ( 5, 4 ) int -> rdi "field V01._length (fldOffset=0x8)" P-INDEP
+; V20 tmp18 [V20,T04] ( 6, 4 ) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V21 tmp19 [V21,T05] ( 6, 4 ) int -> rdi "field V01._length (fldOffset=0x8)" P-INDEP
;* V22 tmp20 [V22 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP
;* V23 tmp21 [V23 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
;* V24 tmp22 [V24 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP
@@ -60,7 +60,9 @@
;
; Lcl frame size = 56
-G_M37241_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M37241_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push r15
+ push r14
push rdi
push rsi
push rbp
@@ -70,17 +72,17 @@ G_M37241_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
mov qword ptr [rsp+0x28], rax
mov rbx, rcx
; byrRegs +[rbx]
- ;; size=18 bbWeight=1 PerfScore 5.75
+ ;; size=22 bbWeight=1 PerfScore 7.75
G_M37241_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=000C {rdx rbx}, byref, isz
; byrRegs +[rdx]
mov rsi, bword ptr [rdx]
; byrRegs +[rsi]
mov edi, dword ptr [rdx+0x08]
test edi, edi
- je G_M37241_IG06
+ je SHORT G_M37241_IG04
movzx rbp, word ptr [rsi]
cmp ebp, 256
- jae SHORT G_M37241_IG03
+ jae G_M37241_IG08
xor ecx, ecx
cmp ebp, 256
setb cl
@@ -90,54 +92,41 @@ G_M37241_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=000C {rdx rbx},
mov ecx, ebp
mov rax, 0xD1FFAB1E ; static handle
test byte ptr [rcx+rax], 128
- jne SHORT G_M37241_IG08
- jmp SHORT G_M37241_IG04
- ;; size=62 bbWeight=1 PerfScore 19.50
+ jne SHORT G_M37241_IG06
+ lea r14d, [rdi-0x01]
+ mov ecx, r14d
+ movzx r15, word ptr [rsi+2*rcx]
+ cmp r15d, 256
+ jae G_M37241_IG09
+ ;; size=85 bbWeight=1 PerfScore 21.50
G_M37241_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
- mov ecx, ebp
- call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
- ; gcr arg pop 0
- test eax, eax
- jne SHORT G_M37241_IG08
- ;; size=12 bbWeight=1 PerfScore 4.50
-G_M37241_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
- lea ecx, [rdi-0x01]
- movzx rbp, word ptr [rsi+2*rcx]
- cmp ebp, 256
- jae SHORT G_M37241_IG05
xor ecx, ecx
- cmp ebp, 256
+ cmp r15d, 256
setb cl
call [<unknown method>]
; gcr arg pop 0
- mov ecx, ebp
- mov rax, 0xD1FFAB1E ; static handle
- test byte ptr [rcx+rax], 128
- jne SHORT G_M37241_IG08
- jmp SHORT G_M37241_IG06
- ;; size=52 bbWeight=1 PerfScore 14.75
-G_M37241_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
- mov ecx, ebp
- call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
- ; gcr arg pop 0
- test eax, eax
- jne SHORT G_M37241_IG08
- ;; size=12 bbWeight=1 PerfScore 4.50
-G_M37241_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
+ mov eax, r15d
+ mov rcx, 0xD1FFAB1E ; static handle
+ test byte ptr [rax+rcx], 128
+ jne SHORT G_M37241_IG06
+ ;; size=37 bbWeight=1 PerfScore 9.00
+G_M37241_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
mov bword ptr [rbx], rsi
mov dword ptr [rbx+0x08], edi
mov rax, rbx
; byrRegs +[rax]
;; size=9 bbWeight=1 PerfScore 2.25
-G_M37241_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M37241_IG05: ; bbWeight=1, epilog, nogc, extend
add rsp, 56
pop rbx
pop rbp
pop rsi
pop rdi
+ pop r14
+ pop r15
ret
- ;; size=9 bbWeight=1 PerfScore 3.25
-G_M37241_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, gcvars, byref
+ ;; size=13 bbWeight=1 PerfScore 4.25
+G_M37241_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, gcvars, byref
; byrRegs -[rax]
mov bword ptr [rsp+0x28], rsi
mov dword ptr [rsp+0x30], edi
@@ -150,16 +139,39 @@ G_M37241_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
mov rax, rbx
; byrRegs +[rax]
;; size=26 bbWeight=0 PerfScore 0.00
-G_M37241_IG09: ; bbWeight=0, epilog, nogc, extend
+G_M37241_IG07: ; bbWeight=0, epilog, nogc, extend
add rsp, 56
pop rbx
pop rbp
pop rsi
pop rdi
+ pop r14
+ pop r15
ret
- ;; size=9 bbWeight=0 PerfScore 0.00
+ ;; size=13 bbWeight=0 PerfScore 0.00
+G_M37241_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, gcvars, byref, isz
+ ; byrRegs -[rax] +[rsi]
+ mov ecx, ebp
+ call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
+ ; gcr arg pop 0
+ test eax, eax
+ jne SHORT G_M37241_IG06
+ lea r14d, [rdi-0x01]
+ mov eax, r14d
+ movzx r15, word ptr [rsi+2*rax]
+ cmp r15d, 256
+ jb G_M37241_IG03
+ ;; size=37 bbWeight=0 PerfScore 0.00
+G_M37241_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
+ mov ecx, r15d
+ call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
+ ; gcr arg pop 0
+ test eax, eax
+ jne SHORT G_M37241_IG06
+ jmp SHORT G_M37241_IG04
+ ;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 209, prolog size 15, PerfScore 54.50, instruction count 66, allocated bytes for code 209 (MethodHash=76ed6e86) for method System.MemoryExtensions:Trim(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Tier1)
+; Total bytes of code 257, prolog size 19, PerfScore 44.75, instruction count 77, allocated bytes for code 257 (MethodHash=76ed6e86) for method System.MemoryExtensions:Trim(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Tier1)
; ============================================================
Unwind Info:
@@ -167,13 +179,15 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x08
- CountOfUnwindCodes: 5
+ SizeOfProlog : 0x0C
+ CountOfUnwindCodes: 7
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+48 (+22.97%) : 416503.dasm - System.MemoryExtensions:Trim(System.ReadOnlySpan1[ushort]):System.ReadOnlySpan1ushort
@@ -12,25 +12,25 @@
; V00 RetBuf [V00,T01] ( 7, 5 ) byref -> rbx single-def
; V01 arg0 [V01,T00] ( 4, 8 ) byref -> rdx ld-addr-op single-def
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T06] ( 2, 2.50) int -> rcx "Span.get_Item index"
-; V04 tmp2 [V04,T07] ( 2, 1.25) ubyte -> rax "Inline return value spill temp"
-; V05 tmp3 [V05,T02] ( 5, 6.25) ushort -> rbp "Inlining Arg"
+; V03 tmp1 [V03,T06] ( 4, 2.50) int -> r14 "Span.get_Item index"
+; V04 tmp2 [V04,T07] ( 2, 0 ) ubyte -> rax "Inline return value spill temp"
+; V05 tmp3 [V05,T03] ( 5, 5 ) ushort -> rbp "Inlining Arg"
;* V06 tmp4 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V07 tmp5 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V08 tmp6 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V09 tmp7 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V10 tmp8 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V11 tmp9 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V12 tmp10 [V12,T08] ( 2, 1.25) ubyte -> rax "Inline return value spill temp"
-; V13 tmp11 [V13,T03] ( 5, 6.25) ushort -> rbp "Inlining Arg"
+; V12 tmp10 [V12,T08] ( 2, 0 ) ubyte -> rax "Inline return value spill temp"
+; V13 tmp11 [V13,T02] ( 7, 5 ) ushort -> r15 "Inlining Arg"
;* V14 tmp12 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V15 tmp13 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V16 tmp14 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V17 tmp15 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V18 tmp16 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V19 tmp17 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V20 tmp18 [V20,T05] ( 5, 3.25) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V21 tmp19 [V21,T04] ( 5, 3.62) int -> rdi "field V01._length (fldOffset=0x8)" P-INDEP
+; V20 tmp18 [V20,T05] ( 6, 3.25) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V21 tmp19 [V21,T04] ( 6, 3.62) int -> rdi "field V01._length (fldOffset=0x8)" P-INDEP
;* V22 tmp20 [V22 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP
;* V23 tmp21 [V23 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
;* V24 tmp22 [V24 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP
@@ -60,7 +60,9 @@
;
; Lcl frame size = 56
-G_M37241_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M37241_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push r15
+ push r14
push rdi
push rsi
push rbp
@@ -70,20 +72,20 @@ G_M37241_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
mov qword ptr [rsp+0x28], rax
mov rbx, rcx
; byrRegs +[rbx]
- ;; size=18 bbWeight=1 PerfScore 5.75
-G_M37241_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=000C {rdx rbx}, byref
+ ;; size=22 bbWeight=1 PerfScore 7.75
+G_M37241_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=000C {rdx rbx}, byref, isz
; byrRegs +[rdx]
mov rsi, bword ptr [rdx]
; byrRegs +[rsi]
mov edi, dword ptr [rdx+0x08]
test edi, edi
- je G_M37241_IG07
- ;; size=14 bbWeight=1 PerfScore 5.25
+ je SHORT G_M37241_IG05
+ ;; size=10 bbWeight=1 PerfScore 5.25
G_M37241_IG03: ; bbWeight=0.62, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
; byrRegs -[rdx]
movzx rbp, word ptr [rsi]
cmp ebp, 256
- jae SHORT G_M37241_IG04
+ jae G_M37241_IG09
xor ecx, ecx
cmp ebp, 256
setb cl
@@ -92,54 +94,41 @@ G_M37241_IG03: ; bbWeight=0.62, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rs
mov ecx, ebp
mov rax, 0xD1FFAB1E ; static handle
test byte ptr [rcx+rax], 128
- jne SHORT G_M37241_IG09
- jmp SHORT G_M37241_IG05
- ;; size=48 bbWeight=0.62 PerfScore 8.91
+ jne SHORT G_M37241_IG07
+ lea r14d, [rdi-0x01]
+ mov ecx, r14d
+ movzx r15, word ptr [rsi+2*rcx]
+ cmp r15d, 256
+ jae G_M37241_IG10
+ ;; size=75 bbWeight=0.62 PerfScore 10.16
G_M37241_IG04: ; bbWeight=0.62, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
- mov ecx, ebp
- call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
- ; gcr arg pop 0
- test eax, eax
- jne SHORT G_M37241_IG09
- ;; size=12 bbWeight=0.62 PerfScore 2.81
-G_M37241_IG05: ; bbWeight=0.62, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
- lea ecx, [rdi-0x01]
- movzx rbp, word ptr [rsi+2*rcx]
- cmp ebp, 256
- jae SHORT G_M37241_IG06
xor ecx, ecx
- cmp ebp, 256
+ cmp r15d, 256
setb cl
call [<unknown method>]
; gcr arg pop 0
- mov ecx, ebp
- mov rax, 0xD1FFAB1E ; static handle
- test byte ptr [rcx+rax], 128
- jne SHORT G_M37241_IG09
- jmp SHORT G_M37241_IG07
- ;; size=52 bbWeight=0.62 PerfScore 9.22
-G_M37241_IG06: ; bbWeight=0.62, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
- mov ecx, ebp
- call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
- ; gcr arg pop 0
- test eax, eax
- jne SHORT G_M37241_IG09
- ;; size=12 bbWeight=0.62 PerfScore 2.81
-G_M37241_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
+ mov eax, r15d
+ mov rcx, 0xD1FFAB1E ; static handle
+ test byte ptr [rax+rcx], 128
+ jne SHORT G_M37241_IG07
+ ;; size=37 bbWeight=0.62 PerfScore 5.62
+G_M37241_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
mov bword ptr [rbx], rsi
mov dword ptr [rbx+0x08], edi
mov rax, rbx
; byrRegs +[rax]
;; size=9 bbWeight=1 PerfScore 2.25
-G_M37241_IG08: ; bbWeight=1, epilog, nogc, extend
+G_M37241_IG06: ; bbWeight=1, epilog, nogc, extend
add rsp, 56
pop rbx
pop rbp
pop rsi
pop rdi
+ pop r14
+ pop r15
ret
- ;; size=9 bbWeight=1 PerfScore 3.25
-G_M37241_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, gcvars, byref
+ ;; size=13 bbWeight=1 PerfScore 4.25
+G_M37241_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, gcvars, byref
; byrRegs -[rax]
mov bword ptr [rsp+0x28], rsi
mov dword ptr [rsp+0x30], edi
@@ -152,16 +141,39 @@ G_M37241_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
mov rax, rbx
; byrRegs +[rax]
;; size=26 bbWeight=0 PerfScore 0.00
-G_M37241_IG10: ; bbWeight=0, epilog, nogc, extend
+G_M37241_IG08: ; bbWeight=0, epilog, nogc, extend
add rsp, 56
pop rbx
pop rbp
pop rsi
pop rdi
+ pop r14
+ pop r15
ret
- ;; size=9 bbWeight=0 PerfScore 0.00
+ ;; size=13 bbWeight=0 PerfScore 0.00
+G_M37241_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, gcvars, byref, isz
+ ; byrRegs -[rax] +[rsi]
+ mov ecx, ebp
+ call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
+ ; gcr arg pop 0
+ test eax, eax
+ jne SHORT G_M37241_IG07
+ lea r14d, [rdi-0x01]
+ mov eax, r14d
+ movzx r15, word ptr [rsi+2*rax]
+ cmp r15d, 256
+ jb G_M37241_IG04
+ ;; size=37 bbWeight=0 PerfScore 0.00
+G_M37241_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
+ mov ecx, r15d
+ call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
+ ; gcr arg pop 0
+ test eax, eax
+ jne SHORT G_M37241_IG07
+ jmp SHORT G_M37241_IG05
+ ;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 209, prolog size 15, PerfScore 40.25, instruction count 66, allocated bytes for code 209 (MethodHash=76ed6e86) for method System.MemoryExtensions:Trim(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Tier1)
+; Total bytes of code 257, prolog size 19, PerfScore 35.28, instruction count 77, allocated bytes for code 257 (MethodHash=76ed6e86) for method System.MemoryExtensions:Trim(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Tier1)
; ============================================================
Unwind Info:
@@ -169,13 +181,15 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x08
- CountOfUnwindCodes: 5
+ SizeOfProlog : 0x0C
+ CountOfUnwindCodes: 7
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+48 (+22.97%) : 612823.dasm - System.MemoryExtensions:Trim(System.ReadOnlySpan1[ushort]):System.ReadOnlySpan1ushort
@@ -10,27 +10,27 @@
; Final local variable assignments
;
; V00 RetBuf [V00,T03] ( 7, 5 ) byref -> rbx single-def
-; V01 arg0 [V01,T02] ( 4, 8 ) byref -> rdx ld-addr-op single-def
+; V01 arg0 [V01,T00] ( 4, 8 ) byref -> rdx ld-addr-op single-def
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T06] ( 2, 4 ) int -> rcx "Span.get_Item index"
-; V04 tmp2 [V04,T07] ( 2, 2 ) ubyte -> rax "Inline return value spill temp"
-; V05 tmp3 [V05,T00] ( 5, 10 ) ushort -> rbp "Inlining Arg"
+; V03 tmp1 [V03,T06] ( 4, 4 ) int -> r14 "Span.get_Item index"
+; V04 tmp2 [V04,T07] ( 2, 0 ) ubyte -> rax "Inline return value spill temp"
+; V05 tmp3 [V05,T02] ( 5, 8 ) ushort -> rbp "Inlining Arg"
;* V06 tmp4 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V07 tmp5 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V08 tmp6 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V09 tmp7 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V10 tmp8 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V11 tmp9 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V12 tmp10 [V12,T08] ( 2, 2 ) ubyte -> rax "Inline return value spill temp"
-; V13 tmp11 [V13,T01] ( 5, 10 ) ushort -> rbp "Inlining Arg"
+; V12 tmp10 [V12,T08] ( 2, 0 ) ubyte -> rax "Inline return value spill temp"
+; V13 tmp11 [V13,T01] ( 7, 8 ) ushort -> r15 "Inlining Arg"
;* V14 tmp12 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V15 tmp13 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V16 tmp14 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V17 tmp15 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V18 tmp16 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V19 tmp17 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V20 tmp18 [V20,T04] ( 5, 4 ) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V21 tmp19 [V21,T05] ( 5, 4 ) int -> rdi "field V01._length (fldOffset=0x8)" P-INDEP
+; V20 tmp18 [V20,T04] ( 6, 4 ) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V21 tmp19 [V21,T05] ( 6, 4 ) int -> rdi "field V01._length (fldOffset=0x8)" P-INDEP
;* V22 tmp20 [V22 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP
;* V23 tmp21 [V23 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
;* V24 tmp22 [V24 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP
@@ -60,7 +60,9 @@
;
; Lcl frame size = 56
-G_M37241_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M37241_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push r15
+ push r14
push rdi
push rsi
push rbp
@@ -70,17 +72,17 @@ G_M37241_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
mov qword ptr [rsp+0x28], rax
mov rbx, rcx
; byrRegs +[rbx]
- ;; size=18 bbWeight=1 PerfScore 5.75
+ ;; size=22 bbWeight=1 PerfScore 7.75
G_M37241_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=000C {rdx rbx}, byref, isz
; byrRegs +[rdx]
mov rsi, bword ptr [rdx]
; byrRegs +[rsi]
mov edi, dword ptr [rdx+0x08]
test edi, edi
- je G_M37241_IG06
+ je SHORT G_M37241_IG04
movzx rbp, word ptr [rsi]
cmp ebp, 256
- jae SHORT G_M37241_IG03
+ jae G_M37241_IG08
xor ecx, ecx
cmp ebp, 256
setb cl
@@ -90,54 +92,41 @@ G_M37241_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=000C {rdx rbx},
mov ecx, ebp
mov rax, 0xD1FFAB1E ; static handle
test byte ptr [rcx+rax], 128
- jne SHORT G_M37241_IG08
- jmp SHORT G_M37241_IG04
- ;; size=62 bbWeight=1 PerfScore 19.50
+ jne SHORT G_M37241_IG06
+ lea r14d, [rdi-0x01]
+ mov ecx, r14d
+ movzx r15, word ptr [rsi+2*rcx]
+ cmp r15d, 256
+ jae G_M37241_IG09
+ ;; size=85 bbWeight=1 PerfScore 21.50
G_M37241_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
- mov ecx, ebp
- call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
- ; gcr arg pop 0
- test eax, eax
- jne SHORT G_M37241_IG08
- ;; size=12 bbWeight=1 PerfScore 4.50
-G_M37241_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
- lea ecx, [rdi-0x01]
- movzx rbp, word ptr [rsi+2*rcx]
- cmp ebp, 256
- jae SHORT G_M37241_IG05
xor ecx, ecx
- cmp ebp, 256
+ cmp r15d, 256
setb cl
call [<unknown method>]
; gcr arg pop 0
- mov ecx, ebp
- mov rax, 0xD1FFAB1E ; static handle
- test byte ptr [rcx+rax], 128
- jne SHORT G_M37241_IG08
- jmp SHORT G_M37241_IG06
- ;; size=52 bbWeight=1 PerfScore 14.75
-G_M37241_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
- mov ecx, ebp
- call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
- ; gcr arg pop 0
- test eax, eax
- jne SHORT G_M37241_IG08
- ;; size=12 bbWeight=1 PerfScore 4.50
-G_M37241_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
+ mov eax, r15d
+ mov rcx, 0xD1FFAB1E ; static handle
+ test byte ptr [rax+rcx], 128
+ jne SHORT G_M37241_IG06
+ ;; size=37 bbWeight=1 PerfScore 9.00
+G_M37241_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
mov bword ptr [rbx], rsi
mov dword ptr [rbx+0x08], edi
mov rax, rbx
; byrRegs +[rax]
;; size=9 bbWeight=1 PerfScore 2.25
-G_M37241_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M37241_IG05: ; bbWeight=1, epilog, nogc, extend
add rsp, 56
pop rbx
pop rbp
pop rsi
pop rdi
+ pop r14
+ pop r15
ret
- ;; size=9 bbWeight=1 PerfScore 3.25
-G_M37241_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, gcvars, byref
+ ;; size=13 bbWeight=1 PerfScore 4.25
+G_M37241_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, gcvars, byref
; byrRegs -[rax]
mov bword ptr [rsp+0x28], rsi
mov dword ptr [rsp+0x30], edi
@@ -150,16 +139,39 @@ G_M37241_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
mov rax, rbx
; byrRegs +[rax]
;; size=26 bbWeight=0 PerfScore 0.00
-G_M37241_IG09: ; bbWeight=0, epilog, nogc, extend
+G_M37241_IG07: ; bbWeight=0, epilog, nogc, extend
add rsp, 56
pop rbx
pop rbp
pop rsi
pop rdi
+ pop r14
+ pop r15
ret
- ;; size=9 bbWeight=0 PerfScore 0.00
+ ;; size=13 bbWeight=0 PerfScore 0.00
+G_M37241_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, gcvars, byref, isz
+ ; byrRegs -[rax] +[rsi]
+ mov ecx, ebp
+ call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
+ ; gcr arg pop 0
+ test eax, eax
+ jne SHORT G_M37241_IG06
+ lea r14d, [rdi-0x01]
+ mov eax, r14d
+ movzx r15, word ptr [rsi+2*rax]
+ cmp r15d, 256
+ jb G_M37241_IG03
+ ;; size=37 bbWeight=0 PerfScore 0.00
+G_M37241_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
+ mov ecx, r15d
+ call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
+ ; gcr arg pop 0
+ test eax, eax
+ jne SHORT G_M37241_IG06
+ jmp SHORT G_M37241_IG04
+ ;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 209, prolog size 15, PerfScore 54.50, instruction count 66, allocated bytes for code 209 (MethodHash=76ed6e86) for method System.MemoryExtensions:Trim(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Tier1)
+; Total bytes of code 257, prolog size 19, PerfScore 44.75, instruction count 77, allocated bytes for code 257 (MethodHash=76ed6e86) for method System.MemoryExtensions:Trim(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Tier1)
; ============================================================
Unwind Info:
@@ -167,13 +179,15 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x08
- CountOfUnwindCodes: 5
+ SizeOfProlog : 0x0C
+ CountOfUnwindCodes: 7
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
librariestestsnotieredcompilation.run.windows.x64.Release.mch
-34 (-8.02%) : 8210.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
@@ -57,11 +57,18 @@ G_M48701_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
mov gword ptr [rbp-0x20], rax
; GC ptr vars +{V02}
;; size=23 bbWeight=0.50 PerfScore 3.13
-G_M48701_IG04: ; bbWeight=0.50, gcVars=0000000000000010 {V02}, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M48701_IG04: ; bbWeight=0.50, gcVars=0000000000000010 {V02}, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, gcvars, byref, isz
cmp gword ptr [rbp+0x18], 0
+ je SHORT G_M48701_IG06
+ ;; size=7 bbWeight=0.50 PerfScore 1.50
+G_M48701_IG05: ; bbWeight=0.17, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
+ mov rcx, gword ptr [rbp+0x18]
+ ; gcrRegs +[rcx]
+ cmp dword ptr [rcx+0x20], 0
jne G_M48701_IG16
- ;; size=11 bbWeight=0.50 PerfScore 1.50
-G_M48701_IG05: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
+ ;; size=14 bbWeight=0.17 PerfScore 0.85
+G_M48701_IG06: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rcx]
mov rcx, rbx
; gcrRegs +[rcx]
mov rdx, rax
@@ -72,9 +79,16 @@ G_M48701_IG05: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0000
; gcrRegs -[rax rcx rdx r8]
; gcr arg pop 0
cmp gword ptr [rbp+0x18], 0
- jne G_M48701_IG15
- ;; size=27 bbWeight=0.50 PerfScore 3.75
-G_M48701_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ je SHORT G_M48701_IG08
+ ;; size=23 bbWeight=0.50 PerfScore 3.75
+G_M48701_IG07: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov rcx, gword ptr [rbp+0x18]
+ ; gcrRegs +[rcx]
+ cmp dword ptr [rcx+0x20], 0
+ jne G_M48701_IG16
+ ;; size=14 bbWeight=0.17 PerfScore 0.85
+G_M48701_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rcx]
mov rcx, rbx
; gcrRegs +[rcx]
mov rdx, gword ptr [rbp-0x20]
@@ -83,9 +97,16 @@ G_M48701_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcrRegs -[rcx rdx]
; gcr arg pop 0
cmp gword ptr [rbp+0x18], 0
- jne G_M48701_IG14
- ;; size=24 bbWeight=0.50 PerfScore 3.63
-G_M48701_IG07: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M48701_IG10
+ ;; size=20 bbWeight=0.50 PerfScore 3.63
+G_M48701_IG09: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov rcx, gword ptr [rbp+0x18]
+ ; gcrRegs +[rcx]
+ cmp dword ptr [rcx+0x20], 0
+ jne SHORT G_M48701_IG16
+ ;; size=10 bbWeight=0.17 PerfScore 0.85
+G_M48701_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rcx]
mov rcx, rbx
; gcrRegs +[rcx]
mov rdx, gword ptr [rbp-0x20]
@@ -101,13 +122,20 @@ G_M48701_IG07: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcrRegs -[rcx]
; gcr arg pop 0
cmp eax, 7
- jne SHORT G_M48701_IG10
+ jne SHORT G_M48701_IG14
;; size=34 bbWeight=0.50 PerfScore 6.38
-G_M48701_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M48701_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp gword ptr [rbp+0x18], 0
- jne SHORT G_M48701_IG13
+ je SHORT G_M48701_IG13
;; size=7 bbWeight=0.50 PerfScore 1.50
-G_M48701_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M48701_IG12: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov rcx, gword ptr [rbp+0x18]
+ ; gcrRegs +[rcx]
+ cmp dword ptr [rcx+0x20], 0
+ jne SHORT G_M48701_IG16
+ ;; size=10 bbWeight=0.17 PerfScore 0.85
+G_M48701_IG13: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rcx]
mov rcx, rbx
; gcrRegs +[rcx]
mov rdx, gword ptr [rbp-0x20]
@@ -116,7 +144,7 @@ G_M48701_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=13 bbWeight=0.50 PerfScore 2.12
-G_M48701_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M48701_IG14: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
lea rsi, bword ptr [rbx+0x70]
; byrRegs +[rsi]
mov rcx, rbx
@@ -131,17 +159,34 @@ G_M48701_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
mov rdx, rax
; gcrRegs +[rdx]
test rsi, rsi
- je G_M48701_IG18
+ jne SHORT G_M48701_IG17
+ ;; size=29 bbWeight=0.50 PerfScore 3.62
+G_M48701_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rdx rbx]
+ ; byrRegs -[rsi]
+ call [System.ThrowHelper:ThrowNullReferenceException()]
+ ; gcr arg pop 0
+ int3
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M48701_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ lea rcx, [rbp+0x18]
+ call [System.Threading.CancellationToken:ThrowOperationCanceledException():this]
+ ; gcr arg pop 0
+ int3
+ ;; size=11 bbWeight=0 PerfScore 0.00
+G_M48701_IG17: ; bbWeight=0.50, gcrefRegs=000C {rdx rbx}, byrefRegs=0040 {rsi}, byref, isz
+ ; gcrRegs +[rdx rbx]
+ ; byrRegs +[rsi]
mov rcx, rsi
; byrRegs +[rcx]
xor r8, r8
; gcrRegs +[r8]
call <unknown method>
- ; gcrRegs -[rdx r8]
+ ; gcrRegs -[rdx r8] +[rax]
; byrRegs -[rcx rsi]
; gcr arg pop 0
test rax, rax
- jne G_M48701_IG19
+ jne SHORT G_M48701_IG19
mov rcx, rbx
; gcrRegs +[rcx]
mov rdx, gword ptr [rbp-0x20]
@@ -154,8 +199,8 @@ G_M48701_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcr arg pop 0
lea rcx, bword ptr [rbx+0x84]
; byrRegs +[rcx]
- ;; size=80 bbWeight=0.50 PerfScore 9.38
-G_M48701_IG11: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx}, byref, isz
+ ;; size=43 bbWeight=0.50 PerfScore 5.75
+G_M48701_IG18: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx}, byref, isz
mov eax, dword ptr [rcx]
mov dword ptr [rbp-0x14], eax
mov edx, eax
@@ -165,56 +210,10 @@ G_M48701_IG11: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx},
lock
cmpxchg dword ptr [rcx], edx
cmp eax, dword ptr [rbp-0x14]
- jne SHORT G_M48701_IG11
+ jne SHORT G_M48701_IG18
;; size=26 bbWeight=4 PerfScore 103.00
-G_M48701_IG12: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[rcx]
- jmp SHORT G_M48701_IG19
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M48701_IG13: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rcx, gword ptr [rbp+0x18]
- ; gcrRegs +[rcx]
- cmp dword ptr [rcx+0x20], 0
- je G_M48701_IG09
- jmp SHORT G_M48701_IG17
- ;; size=16 bbWeight=0.17 PerfScore 1.19
-G_M48701_IG14: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rcx]
- mov rcx, gword ptr [rbp+0x18]
- ; gcrRegs +[rcx]
- cmp dword ptr [rcx+0x20], 0
- jne SHORT G_M48701_IG17
- jmp G_M48701_IG07
- ;; size=15 bbWeight=0.17 PerfScore 1.19
-G_M48701_IG15: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rcx]
- mov rcx, gword ptr [rbp+0x18]
- ; gcrRegs +[rcx]
- cmp dword ptr [rcx+0x20], 0
- jne SHORT G_M48701_IG17
- jmp G_M48701_IG06
- ;; size=15 bbWeight=0.17 PerfScore 1.19
-G_M48701_IG16: ; bbWeight=0.17, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rcx] +[rax]
- mov rcx, gword ptr [rbp+0x18]
- ; gcrRegs +[rcx]
- cmp dword ptr [rcx+0x20], 0
- je G_M48701_IG05
- ;; size=14 bbWeight=0.17 PerfScore 0.85
-G_M48701_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rcx rbx]
- lea rcx, [rbp+0x18]
- call [System.Threading.CancellationToken:ThrowOperationCanceledException():this]
- ; gcr arg pop 0
- int3
- ;; size=11 bbWeight=0 PerfScore 0.00
-G_M48701_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- call [System.ThrowHelper:ThrowNullReferenceException()]
- ; gcr arg pop 0
- int3
- ;; size=7 bbWeight=0 PerfScore 0.00
G_M48701_IG19: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rbx]
+ ; byrRegs -[rcx]
mov rcx, gword ptr [rbp-0x20]
; gcrRegs +[rcx]
cmp dword ptr [rcx], ecx
@@ -263,7 +262,7 @@ G_M48701_IG24: ; bbWeight=0, funclet epilog, nogc, extend
ret
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 424, prolog size 23, PerfScore 158.05, instruction count 116, allocated bytes for code 424 (MethodHash=c61241c2) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
+; Total bytes of code 390, prolog size 23, PerfScore 156.03, instruction count 112, allocated bytes for code 390 (MethodHash=c61241c2) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
; ============================================================
Unwind Info:
-34 (-8.02%) : 38151.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
@@ -57,11 +57,18 @@ G_M48701_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
mov gword ptr [rbp-0x20], rax
; GC ptr vars +{V02}
;; size=23 bbWeight=0.50 PerfScore 3.13
-G_M48701_IG04: ; bbWeight=0.50, gcVars=0000000000000010 {V02}, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M48701_IG04: ; bbWeight=0.50, gcVars=0000000000000010 {V02}, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, gcvars, byref, isz
cmp gword ptr [rbp+0x18], 0
+ je SHORT G_M48701_IG06
+ ;; size=7 bbWeight=0.50 PerfScore 1.50
+G_M48701_IG05: ; bbWeight=0.17, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
+ mov rcx, gword ptr [rbp+0x18]
+ ; gcrRegs +[rcx]
+ cmp dword ptr [rcx+0x20], 0
jne G_M48701_IG16
- ;; size=11 bbWeight=0.50 PerfScore 1.50
-G_M48701_IG05: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
+ ;; size=14 bbWeight=0.17 PerfScore 0.85
+G_M48701_IG06: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rcx]
mov rcx, rbx
; gcrRegs +[rcx]
mov rdx, rax
@@ -72,9 +79,16 @@ G_M48701_IG05: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0000
; gcrRegs -[rax rcx rdx r8]
; gcr arg pop 0
cmp gword ptr [rbp+0x18], 0
- jne G_M48701_IG15
- ;; size=27 bbWeight=0.50 PerfScore 3.75
-G_M48701_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ je SHORT G_M48701_IG08
+ ;; size=23 bbWeight=0.50 PerfScore 3.75
+G_M48701_IG07: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov rcx, gword ptr [rbp+0x18]
+ ; gcrRegs +[rcx]
+ cmp dword ptr [rcx+0x20], 0
+ jne G_M48701_IG16
+ ;; size=14 bbWeight=0.17 PerfScore 0.85
+G_M48701_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rcx]
mov rcx, rbx
; gcrRegs +[rcx]
mov rdx, gword ptr [rbp-0x20]
@@ -83,9 +97,16 @@ G_M48701_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcrRegs -[rcx rdx]
; gcr arg pop 0
cmp gword ptr [rbp+0x18], 0
- jne G_M48701_IG14
- ;; size=24 bbWeight=0.50 PerfScore 3.63
-G_M48701_IG07: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M48701_IG10
+ ;; size=20 bbWeight=0.50 PerfScore 3.63
+G_M48701_IG09: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov rcx, gword ptr [rbp+0x18]
+ ; gcrRegs +[rcx]
+ cmp dword ptr [rcx+0x20], 0
+ jne SHORT G_M48701_IG16
+ ;; size=10 bbWeight=0.17 PerfScore 0.85
+G_M48701_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rcx]
mov rcx, rbx
; gcrRegs +[rcx]
mov rdx, gword ptr [rbp-0x20]
@@ -101,13 +122,20 @@ G_M48701_IG07: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcrRegs -[rcx]
; gcr arg pop 0
cmp eax, 7
- jne SHORT G_M48701_IG10
+ jne SHORT G_M48701_IG14
;; size=34 bbWeight=0.50 PerfScore 6.38
-G_M48701_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M48701_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp gword ptr [rbp+0x18], 0
- jne SHORT G_M48701_IG13
+ je SHORT G_M48701_IG13
;; size=7 bbWeight=0.50 PerfScore 1.50
-G_M48701_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M48701_IG12: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov rcx, gword ptr [rbp+0x18]
+ ; gcrRegs +[rcx]
+ cmp dword ptr [rcx+0x20], 0
+ jne SHORT G_M48701_IG16
+ ;; size=10 bbWeight=0.17 PerfScore 0.85
+G_M48701_IG13: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rcx]
mov rcx, rbx
; gcrRegs +[rcx]
mov rdx, gword ptr [rbp-0x20]
@@ -116,7 +144,7 @@ G_M48701_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=13 bbWeight=0.50 PerfScore 2.12
-G_M48701_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M48701_IG14: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
lea rsi, bword ptr [rbx+0x70]
; byrRegs +[rsi]
mov rcx, rbx
@@ -131,17 +159,34 @@ G_M48701_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
mov rdx, rax
; gcrRegs +[rdx]
test rsi, rsi
- je G_M48701_IG18
+ jne SHORT G_M48701_IG17
+ ;; size=29 bbWeight=0.50 PerfScore 3.62
+G_M48701_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rdx rbx]
+ ; byrRegs -[rsi]
+ call [System.ThrowHelper:ThrowNullReferenceException()]
+ ; gcr arg pop 0
+ int3
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M48701_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ lea rcx, [rbp+0x18]
+ call [System.Threading.CancellationToken:ThrowOperationCanceledException():this]
+ ; gcr arg pop 0
+ int3
+ ;; size=11 bbWeight=0 PerfScore 0.00
+G_M48701_IG17: ; bbWeight=0.50, gcrefRegs=000C {rdx rbx}, byrefRegs=0040 {rsi}, byref, isz
+ ; gcrRegs +[rdx rbx]
+ ; byrRegs +[rsi]
mov rcx, rsi
; byrRegs +[rcx]
xor r8, r8
; gcrRegs +[r8]
call <unknown method>
- ; gcrRegs -[rdx r8]
+ ; gcrRegs -[rdx r8] +[rax]
; byrRegs -[rcx rsi]
; gcr arg pop 0
test rax, rax
- jne G_M48701_IG19
+ jne SHORT G_M48701_IG19
mov rcx, rbx
; gcrRegs +[rcx]
mov rdx, gword ptr [rbp-0x20]
@@ -154,8 +199,8 @@ G_M48701_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcr arg pop 0
lea rcx, bword ptr [rbx+0x84]
; byrRegs +[rcx]
- ;; size=80 bbWeight=0.50 PerfScore 9.38
-G_M48701_IG11: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx}, byref, isz
+ ;; size=43 bbWeight=0.50 PerfScore 5.75
+G_M48701_IG18: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx}, byref, isz
mov eax, dword ptr [rcx]
mov dword ptr [rbp-0x14], eax
mov edx, eax
@@ -165,56 +210,10 @@ G_M48701_IG11: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx},
lock
cmpxchg dword ptr [rcx], edx
cmp eax, dword ptr [rbp-0x14]
- jne SHORT G_M48701_IG11
+ jne SHORT G_M48701_IG18
;; size=26 bbWeight=4 PerfScore 103.00
-G_M48701_IG12: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[rcx]
- jmp SHORT G_M48701_IG19
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M48701_IG13: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rcx, gword ptr [rbp+0x18]
- ; gcrRegs +[rcx]
- cmp dword ptr [rcx+0x20], 0
- je G_M48701_IG09
- jmp SHORT G_M48701_IG17
- ;; size=16 bbWeight=0.17 PerfScore 1.19
-G_M48701_IG14: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rcx]
- mov rcx, gword ptr [rbp+0x18]
- ; gcrRegs +[rcx]
- cmp dword ptr [rcx+0x20], 0
- jne SHORT G_M48701_IG17
- jmp G_M48701_IG07
- ;; size=15 bbWeight=0.17 PerfScore 1.19
-G_M48701_IG15: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rcx]
- mov rcx, gword ptr [rbp+0x18]
- ; gcrRegs +[rcx]
- cmp dword ptr [rcx+0x20], 0
- jne SHORT G_M48701_IG17
- jmp G_M48701_IG06
- ;; size=15 bbWeight=0.17 PerfScore 1.19
-G_M48701_IG16: ; bbWeight=0.17, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rcx] +[rax]
- mov rcx, gword ptr [rbp+0x18]
- ; gcrRegs +[rcx]
- cmp dword ptr [rcx+0x20], 0
- je G_M48701_IG05
- ;; size=14 bbWeight=0.17 PerfScore 0.85
-G_M48701_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rcx rbx]
- lea rcx, [rbp+0x18]
- call [System.Threading.CancellationToken:ThrowOperationCanceledException():this]
- ; gcr arg pop 0
- int3
- ;; size=11 bbWeight=0 PerfScore 0.00
-G_M48701_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- call [System.ThrowHelper:ThrowNullReferenceException()]
- ; gcr arg pop 0
- int3
- ;; size=7 bbWeight=0 PerfScore 0.00
G_M48701_IG19: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rbx]
+ ; byrRegs -[rcx]
mov rcx, gword ptr [rbp-0x20]
; gcrRegs +[rcx]
cmp dword ptr [rcx], ecx
@@ -263,7 +262,7 @@ G_M48701_IG24: ; bbWeight=0, funclet epilog, nogc, extend
ret
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 424, prolog size 23, PerfScore 158.05, instruction count 116, allocated bytes for code 424 (MethodHash=c61241c2) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
+; Total bytes of code 390, prolog size 23, PerfScore 156.03, instruction count 112, allocated bytes for code 390 (MethodHash=c61241c2) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
; ============================================================
Unwind Info:
-28 (-5.66%) : 200824.dasm - System.Xml.XmlReader:CheckElement(System.String,System.String):this (FullOpts)
@@ -61,11 +61,11 @@ G_M18057_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=19 bbWeight=1 PerfScore 6.00
G_M18057_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
test rsi, rsi
- je G_M18057_IG14
+ je G_M18057_IG15
;; size=9 bbWeight=1 PerfScore 1.25
G_M18057_IG03: ; bbWeight=0.46, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
cmp dword ptr [rsi+0x08], 0
- je G_M18057_IG14
+ je G_M18057_IG15
;; size=10 bbWeight=0.46 PerfScore 1.84
G_M18057_IG04: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, rdi
@@ -83,7 +83,7 @@ G_M18057_IG04: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
; gcrRegs -[rcx]
; gcr arg pop 0
cmp eax, 1
- jne G_M18057_IG15
+ jne G_M18057_IG16
mov rcx, rbx
; gcrRegs +[rcx]
call [r14+0x38]<unknown method>
@@ -92,16 +92,16 @@ G_M18057_IG04: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
cmp rax, rsi
je SHORT G_M18057_IG08
;; size=54 bbWeight=1 PerfScore 16.50
-G_M18057_IG05: ; bbWeight=0.45, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=0000 {}, byref
+G_M18057_IG05: ; bbWeight=0.45, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
test rax, rax
- je G_M18057_IG16
- ;; size=9 bbWeight=0.45 PerfScore 0.56
-G_M18057_IG06: ; bbWeight=0.45, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=0000 {}, byref
+ je SHORT G_M18057_IG14
+ ;; size=5 bbWeight=0.45 PerfScore 0.56
+G_M18057_IG06: ; bbWeight=0.45, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov r8d, dword ptr [rax+0x08]
cmp r8d, dword ptr [rsi+0x08]
- jne G_M18057_IG16
- ;; size=14 bbWeight=0.45 PerfScore 2.69
-G_M18057_IG07: ; bbWeight=0.50, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=0000 {}, byref
+ jne SHORT G_M18057_IG14
+ ;; size=10 bbWeight=0.45 PerfScore 2.69
+G_M18057_IG07: ; bbWeight=0.50, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
lea rcx, bword ptr [rax+0x0C]
; byrRegs +[rcx]
mov r8d, dword ptr [rax+0x08]
@@ -113,8 +113,8 @@ G_M18057_IG07: ; bbWeight=0.50, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRe
; byrRegs -[rcx rdx]
; gcr arg pop 0
test eax, eax
- je G_M18057_IG16
- ;; size=29 bbWeight=0.50 PerfScore 3.75
+ je SHORT G_M18057_IG14
+ ;; size=25 bbWeight=0.50 PerfScore 3.75
G_M18057_IG08: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, rbx
; gcrRegs +[rcx]
@@ -125,20 +125,20 @@ G_M18057_IG08: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
cmp rax, rdi
je SHORT G_M18057_IG13
;; size=14 bbWeight=1 PerfScore 6.50
-G_M18057_IG09: ; bbWeight=0.45, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=0000 {}, byref
+G_M18057_IG09: ; bbWeight=0.45, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
test rax, rax
- je G_M18057_IG16
- ;; size=9 bbWeight=0.45 PerfScore 0.56
-G_M18057_IG10: ; bbWeight=0.45, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=0000 {}, byref
+ je SHORT G_M18057_IG14
+ ;; size=5 bbWeight=0.45 PerfScore 0.56
+G_M18057_IG10: ; bbWeight=0.45, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
test rdi, rdi
- je G_M18057_IG16
- ;; size=9 bbWeight=0.45 PerfScore 0.56
-G_M18057_IG11: ; bbWeight=0.45, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=0000 {}, byref
+ je SHORT G_M18057_IG14
+ ;; size=5 bbWeight=0.45 PerfScore 0.56
+G_M18057_IG11: ; bbWeight=0.45, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov r8d, dword ptr [rax+0x08]
cmp r8d, dword ptr [rdi+0x08]
- jne G_M18057_IG16
- ;; size=14 bbWeight=0.45 PerfScore 2.69
-G_M18057_IG12: ; bbWeight=0.50, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=0000 {}, byref
+ jne SHORT G_M18057_IG14
+ ;; size=10 bbWeight=0.45 PerfScore 2.69
+G_M18057_IG12: ; bbWeight=0.50, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
lea rcx, bword ptr [rax+0x0C]
; byrRegs +[rcx]
mov r8d, dword ptr [rax+0x08]
@@ -150,8 +150,8 @@ G_M18057_IG12: ; bbWeight=0.50, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRe
; byrRegs -[rcx rdx]
; gcr arg pop 0
test eax, eax
- je G_M18057_IG16
- ;; size=29 bbWeight=0.50 PerfScore 3.75
+ je SHORT G_M18057_IG14
+ ;; size=25 bbWeight=0.50 PerfScore 3.75
G_M18057_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx rsi rdi]
add rsp, 32
@@ -162,78 +162,7 @@ G_M18057_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
pop r14
ret
;; size=11 bbWeight=1 PerfScore 3.75
-G_M18057_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[rsi]
- mov ecx, 0xDC61
- mov rdx, 0xD1FFAB1E
- call CORINFO_HELP_STRCNS
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- mov rdx, rax
- ; gcrRegs +[rdx]
- mov rcx, rsi
- ; gcrRegs +[rcx]
- call [System.ArgumentException:ThrowNullOrEmptyException(System.String,System.String)]
- ; gcrRegs -[rax rcx rdx rsi]
- ; gcr arg pop 0
- int3
- ;; size=33 bbWeight=0 PerfScore 0.00
-G_M18057_IG15: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rbx]
- call [<unknown method>]
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- mov rsi, rax
- ; gcrRegs +[rsi]
- mov rcx, rbx
- ; gcrRegs +[rcx]
- call [r14+0x28]<unknown method>
- ; gcrRegs -[rax rcx]
- ; gcr arg pop 0
- mov edi, eax
- mov rcx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_NEWSFAST
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- mov rbp, rax
- ; gcrRegs +[rbp]
- mov dword ptr [rbp+0x08], edi
- mov rcx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_NEWSFAST
- ; gcr arg pop 0
- mov rdi, rax
- ; gcrRegs +[rdi]
- mov rcx, rbp
- ; gcrRegs +[rcx]
- call [<unknown method>]
- ; gcrRegs -[rcx rbp]
- ; gcr arg pop 0
- mov rbp, rax
- ; gcrRegs +[rbp]
- mov rdx, rbx
- ; gcrRegs +[rdx]
- mov rcx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFINTERFACE
- ; gcrRegs -[rdx rbx]
- ; gcr arg pop 0
- mov r9, rax
- ; gcrRegs +[r9]
- mov r8, rbp
- ; gcrRegs +[r8]
- mov rcx, rdi
- ; gcrRegs +[rcx]
- mov rdx, rsi
- ; gcrRegs +[rdx]
- call [<unknown method>]
- ; gcrRegs -[rax rcx rdx rbp rsi r8-r9]
- ; gcr arg pop 0
- mov rcx, rdi
- ; gcrRegs +[rcx]
- call CORINFO_HELP_THROW
- ; gcrRegs -[rcx rdi]
- ; gcr arg pop 0
- ;; size=113 bbWeight=0 PerfScore 0.00
-G_M18057_IG16: ; bbWeight=0, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+G_M18057_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx rsi rdi]
call [<unknown method>]
; gcrRegs +[rax]
@@ -287,11 +216,82 @@ G_M18057_IG16: ; bbWeight=0, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
; gcrRegs +[rcx]
call CORINFO_HELP_THROW
; gcrRegs -[rcx rsi]
+ ; gcr arg pop 0
+ ;; size=118 bbWeight=0 PerfScore 0.00
+G_M18057_IG15: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rsi]
+ mov ecx, 0xDC61
+ mov rdx, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ ; gcrRegs +[rax]
+ ; gcr arg pop 0
+ mov rdx, rax
+ ; gcrRegs +[rdx]
+ mov rcx, rsi
+ ; gcrRegs +[rcx]
+ call [System.ArgumentException:ThrowNullOrEmptyException(System.String,System.String)]
+ ; gcrRegs -[rax rcx rdx rsi]
; gcr arg pop 0
int3
- ;; size=119 bbWeight=0 PerfScore 0.00
+ ;; size=33 bbWeight=0 PerfScore 0.00
+G_M18057_IG16: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rbx]
+ call [<unknown method>]
+ ; gcrRegs +[rax]
+ ; gcr arg pop 0
+ mov rsi, rax
+ ; gcrRegs +[rsi]
+ mov rcx, rbx
+ ; gcrRegs +[rcx]
+ call [r14+0x28]<unknown method>
+ ; gcrRegs -[rax rcx]
+ ; gcr arg pop 0
+ mov edi, eax
+ mov rcx, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_NEWSFAST
+ ; gcrRegs +[rax]
+ ; gcr arg pop 0
+ mov rbp, rax
+ ; gcrRegs +[rbp]
+ mov dword ptr [rbp+0x08], edi
+ mov rcx, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_NEWSFAST
+ ; gcr arg pop 0
+ mov rdi, rax
+ ; gcrRegs +[rdi]
+ mov rcx, rbp
+ ; gcrRegs +[rcx]
+ call [<unknown method>]
+ ; gcrRegs -[rcx rbp]
+ ; gcr arg pop 0
+ mov rbp, rax
+ ; gcrRegs +[rbp]
+ mov rdx, rbx
+ ; gcrRegs +[rdx]
+ mov rcx, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_ISINSTANCEOFINTERFACE
+ ; gcrRegs -[rdx rbx]
+ ; gcr arg pop 0
+ mov r9, rax
+ ; gcrRegs +[r9]
+ mov r8, rbp
+ ; gcrRegs +[r8]
+ mov rcx, rdi
+ ; gcrRegs +[rcx]
+ mov rdx, rsi
+ ; gcrRegs +[rdx]
+ call [<unknown method>]
...
+22 (+8.91%) : 147464.dasm - System.IO.Tests.FileMove:<WindowsWildCharacterPathCore>b_190():this (FullOpts)
@@ -13,11 +13,11 @@
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.String>
; V04 tmp2 [V04,T00] ( 6, 8.72) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
-; V05 tmp3 [V05,T07] ( 3, 1.95) ref -> rdi class-hnd "Inline return value spill temp" <System.String>
+; V05 tmp3 [V05,T07] ( 3, 1.49) ref -> rdi class-hnd "Inline return value spill temp" <System.String>
;* V06 tmp4 [V06 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V07 tmp5 [V07 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V08 tmp6 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-;* V09 tmp7 [V09,T17] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V09 tmp7 [V09,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V10 tmp8 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V11 tmp9 [V11 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V12 tmp10 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
@@ -42,35 +42,39 @@
;* V31 tmp29 [V31 ] ( 0, 0 ) byref -> zero-ref "field V11._reference (fldOffset=0x0)" P-INDEP
;* V32 tmp30 [V32 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
; V33 tmp31 [V33,T11] ( 2, 0.98) byref -> rcx single-def "field V12._reference (fldOffset=0x0)" P-INDEP
-;* V34 tmp32 [V34,T18] ( 0, 0 ) int -> zero-ref single-def "field V12._length (fldOffset=0x8)" P-INDEP
+;* V34 tmp32 [V34,T17] ( 0, 0 ) int -> zero-ref single-def "field V12._length (fldOffset=0x8)" P-INDEP
; V35 tmp33 [V35,T13] ( 2, 0.90) byref -> rcx single-def "field V14._reference (fldOffset=0x0)" P-INDEP
; V36 tmp34 [V36,T16] ( 2, 0.90) int -> rdx single-def "field V14._length (fldOffset=0x8)" P-INDEP
;* V37 tmp35 [V37 ] ( 0, 0 ) byref -> zero-ref single-def "field V15._reference (fldOffset=0x0)" P-INDEP
;* V38 tmp36 [V38 ] ( 0, 0 ) int -> zero-ref single-def "field V15._length (fldOffset=0x8)" P-INDEP
;* V39 tmp37 [V39 ] ( 0, 0 ) byref -> zero-ref "field V20._reference (fldOffset=0x0)" P-INDEP
;* V40 tmp38 [V40 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
-; V41 tmp39 [V41,T14] ( 2, 0.90) byref -> rdi single-def "field V21._reference (fldOffset=0x0)" P-INDEP
-;* V42 tmp40 [V42,T19] ( 0, 0 ) int -> zero-ref single-def "field V21._length (fldOffset=0x8)" P-INDEP
-; V43 tmp41 [V43 ] ( 6, 5.63) struct (16) [rsp+0x40] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V44 tmp42 [V44 ] ( 3, 2.69) struct (16) [rsp+0x30] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V45 tmp43 [V45,T02] ( 3, 6 ) struct ( 8) [rsp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
+; V41 tmp39 [V41,T14] ( 2, 0.90) byref -> rbp single-def "field V21._reference (fldOffset=0x0)" P-INDEP
+;* V42 tmp40 [V42,T18] ( 0, 0 ) int -> zero-ref single-def "field V21._length (fldOffset=0x8)" P-INDEP
+; V43 tmp41 [V43 ] ( 6, 5.63) struct (16) [rsp+0x38] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V44 tmp42 [V44 ] ( 3, 2.69) struct (16) [rsp+0x28] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V45 tmp43 [V45,T02] ( 3, 6 ) struct ( 8) [rsp+0x20] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
; V46 tmp44 [V46,T03] ( 2, 4 ) ref -> r8 single-def "argument with side effect"
-; V47 cse0 [V47,T04] ( 3, 3 ) long -> rsi "CSE - aggressive"
-; V48 cse1 [V48,T08] ( 3, 1.43) byref -> rdi "CSE - conservative"
+; V47 cse0 [V47,T04] ( 3, 3 ) long -> rbp "CSE - aggressive"
+; V48 cse1 [V48,T08] ( 3, 1.43) byref -> rbp "CSE - conservative"
;
-; Lcl frame size = 80
+; Lcl frame size = 72
G_M65059_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rdi
push rsi
+ push rbp
push rbx
- sub rsp, 80
+ sub rsp, 72
+ xor eax, eax
+ mov qword ptr [rsp+0x28], rax
vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [rsp+0x30], ymm4
+ vmovdqa xmmword ptr [rsp+0x30], xmm4
+ mov qword ptr [rsp+0x40], rax
mov rbx, rcx
; gcrRegs +[rbx]
- ;; size=20 bbWeight=1 PerfScore 5.83
-G_M65059_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=33 bbWeight=1 PerfScore 9.08
+G_M65059_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rsi, gword ptr [rbx+0x10]
; gcrRegs +[rsi]
mov rcx, rsi
@@ -88,67 +92,58 @@ G_M65059_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs -[rcx rdx]
; gcr arg pop 0
test rsi, rsi
- je SHORT G_M65059_IG05
- ;; size=54 bbWeight=1 PerfScore 10.25
-G_M65059_IG03: ; bbWeight=0.46, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ je G_M65059_IG08
+ ;; size=58 bbWeight=1 PerfScore 10.25
+G_M65059_IG03: ; bbWeight=0.46, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
cmp dword ptr [rsi+0x08], 0
- je SHORT G_M65059_IG05
- ;; size=6 bbWeight=0.46 PerfScore 1.84
+ je G_M65059_IG08
+ ;; size=10 bbWeight=0.46 PerfScore 1.84
G_M65059_IG04: ; bbWeight=0.49, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- mov rdi, 0xD1FFAB1E
- ; byrRegs +[rdi]
- mov rcx, rdi
+ mov rbp, 0xD1FFAB1E
+ ; byrRegs +[rbp]
+ mov rcx, rbp
; byrRegs +[rcx]
- mov bword ptr [rsp+0x40], rcx
- mov dword ptr [rsp+0x48], 1
- lea rcx, [rsp+0x40]
+ mov bword ptr [rsp+0x38], rcx
+ mov dword ptr [rsp+0x40], 1
+ lea rcx, [rsp+0x38]
; byrRegs -[rcx]
call [System.IO.Path:IsPathRooted(System.ReadOnlySpan`1[ushort]):ubyte]
; gcr arg pop 0
test eax, eax
- je SHORT G_M65059_IG06
+ jne SHORT G_M65059_IG08
;; size=41 bbWeight=0.49 PerfScore 3.54
-G_M65059_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rsi]
- ; byrRegs -[rdi]
- mov rdi, 0xD1FFAB1E
- ; gcrRegs +[rdi]
- jmp SHORT G_M65059_IG07
- ;; size=12 bbWeight=0.50 PerfScore 1.12
-G_M65059_IG06: ; bbWeight=0.45, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref
- ; gcrRegs -[rdi] +[rsi]
- ; byrRegs +[rdi]
+G_M65059_IG05: ; bbWeight=0.45, gcrefRegs=0048 {rbx rsi}, byrefRegs=0020 {rbp}, byref
lea rcx, bword ptr [rsi+0x0C]
; byrRegs +[rcx]
mov edx, dword ptr [rsi+0x08]
- mov bword ptr [rsp+0x40], rcx
- mov dword ptr [rsp+0x48], edx
- mov bword ptr [rsp+0x30], rdi
- mov dword ptr [rsp+0x38], 1
- lea rcx, [rsp+0x40]
+ mov bword ptr [rsp+0x38], rcx
+ mov dword ptr [rsp+0x40], edx
+ mov bword ptr [rsp+0x28], rbp
+ mov dword ptr [rsp+0x30], 1
+ lea rcx, [rsp+0x38]
; byrRegs -[rcx]
- lea rdx, [rsp+0x30]
+ lea rdx, [rsp+0x28]
call [<unknown method>]
; gcrRegs -[rsi] +[rax]
- ; byrRegs -[rdi]
+ ; byrRegs -[rbp]
; gcr arg pop 0
mov rdi, rax
; gcrRegs +[rdi]
;; size=48 bbWeight=0.45 PerfScore 4.83
-G_M65059_IG07: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+G_M65059_IG06: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- mov byte ptr [rsp+0x28], 0
+ mov byte ptr [rsp+0x20], 0
xor edx, edx
- mov dword ptr [rsp+0x2C], edx
- mov rdx, qword ptr [rsp+0x28]
+ mov dword ptr [rsp+0x24], edx
+ mov rdx, qword ptr [rsp+0x20]
mov rcx, rbx
; gcrRegs +[rcx]
mov r8, 0xD1FFAB1E
; gcrRegs +[r8]
mov r9d, 266
mov rax, qword ptr [rbx]
- mov rsi, qword ptr [rax+0x48]
- call [rsi+0x30]<unknown method>
+ mov rbp, qword ptr [rax+0x48]
+ call [rbp+0x30]<unknown method>
; gcrRegs -[rcx r8] +[rax]
; gcr arg pop 0
mov r8, rax
@@ -157,20 +152,27 @@ G_M65059_IG07: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {},
; gcrRegs +[rdx]
mov rcx, rbx
; gcrRegs +[rcx]
- call [rsi+0x38]<unknown method>
+ call [rbp+0x38]<unknown method>
; gcrRegs -[rax rcx rdx rbx rdi r8]
; gcr arg pop 0
nop
;; size=58 bbWeight=1 PerfScore 15.00
-G_M65059_IG08: ; bbWeight=1, epilog, nogc, extend
- add rsp, 80
+G_M65059_IG07: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 72
pop rbx
+ pop rbp
pop rsi
pop rdi
ret
- ;; size=8 bbWeight=1 PerfScore 2.75
+ ;; size=9 bbWeight=1 PerfScore 3.25
+G_M65059_IG08: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[rbx]
+ mov rdi, 0xD1FFAB1E
+ ; gcrRegs +[rdi]
+ jmp SHORT G_M65059_IG06
+ ;; size=12 bbWeight=0.04 PerfScore 0.09
-; Total bytes of code 247, prolog size 17, PerfScore 45.17, instruction count 58, allocated bytes for code 247 (MethodHash=db1401dc) for method System.IO.Tests.File_Move:<WindowsWildCharacterPath_Core>b__19_0():this (FullOpts)
+; Total bytes of code 269, prolog size 30, PerfScore 47.88, instruction count 63, allocated bytes for code 269 (MethodHash=db1401dc) for method System.IO.Tests.File_Move:<WindowsWildCharacterPath_Core>b__19_0():this (FullOpts)
; ============================================================
Unwind Info:
@@ -178,12 +180,13 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x07
- CountOfUnwindCodes: 4
+ SizeOfProlog : 0x08
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 9 * 8 + 8 = 80 = 0x50
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 8 * 8 + 8 = 72 = 0x48
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+43 (+11.20%) : 199783.dasm - System.Xml.XmlSchemaValidatorApiTests.TCValidateAfterAddInvalidSchema:.cctor() (FullOpts)
@@ -10,38 +10,38 @@
;
; V00 OutArgs [V00 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V01 tmp1 [V01,T00] ( 6, 8.72) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.String>
-; V02 tmp2 [V02,T07] ( 3, 1.95) ref -> rdx class-hnd "Inline return value spill temp" <System.String>
+; V02 tmp2 [V02,T08] ( 3, 1.49) ref -> rdx class-hnd "Inline return value spill temp" <System.String>
;* V03 tmp3 [V03 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V04 tmp4 [V04 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V05 tmp5 [V05 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-;* V06 tmp6 [V06,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V06 tmp6 [V06,T28] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V07 tmp7 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V08 tmp8 [V08 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V09 tmp9 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V10 tmp10 [V10 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V11 tmp11 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V12 tmp12 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V13 tmp13 [V13,T05] ( 2, 1.80) int -> rdx "Inlining Arg"
-; V14 tmp14 [V14,T03] ( 2, 1.80) byref -> rcx single-def "Inlining Arg"
+; V13 tmp13 [V13,T06] ( 2, 1.80) int -> rdx "Inlining Arg"
+; V14 tmp14 [V14,T04] ( 2, 1.80) byref -> rcx single-def "Inlining Arg"
;* V15 tmp15 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V16 tmp16 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V17 tmp17 [V17 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V18 tmp18 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V19 tmp19 [V19 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V20 tmp20 [V20,T01] ( 6, 8.72) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.String>
-; V21 tmp21 [V21,T08] ( 3, 1.95) ref -> rdx class-hnd "Inline return value spill temp" <System.String>
+; V20 tmp20 [V20,T01] ( 6, 8.72) ref -> r14 class-hnd exact single-def "Inlining Arg" <System.String>
+; V21 tmp21 [V21,T09] ( 3, 1.49) ref -> rdx class-hnd "Inline return value spill temp" <System.String>
;* V22 tmp22 [V22 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V23 tmp23 [V23 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V24 tmp24 [V24 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-;* V25 tmp25 [V25,T24] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V25 tmp25 [V25,T29] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V26 tmp26 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V27 tmp27 [V27 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V28 tmp28 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V29 tmp29 [V29 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V30 tmp30 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V31 tmp31 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V32 tmp32 [V32,T06] ( 2, 1.80) int -> rdx "Inlining Arg"
-; V33 tmp33 [V33,T04] ( 2, 1.80) byref -> rcx single-def "Inlining Arg"
+; V32 tmp32 [V32,T07] ( 2, 1.80) int -> rdx "Inlining Arg"
+; V33 tmp33 [V33,T05] ( 2, 1.80) byref -> rcx single-def "Inlining Arg"
;* V34 tmp34 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V35 tmp35 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V36 tmp36 [V36 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
@@ -49,57 +49,64 @@
;* V38 tmp38 [V38 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V39 tmp39 [V39 ] ( 0, 0 ) byref -> zero-ref "field V03._reference (fldOffset=0x0)" P-INDEP
;* V40 tmp40 [V40 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP
-; V41 tmp41 [V41,T13] ( 2, 0.90) byref -> rcx "field V04._reference (fldOffset=0x0)" P-INDEP
-; V42 tmp42 [V42,T19] ( 2, 0.90) int -> rdx "field V04._length (fldOffset=0x8)" P-INDEP
+; V41 tmp41 [V41,T14] ( 2, 0.90) byref -> rcx "field V04._reference (fldOffset=0x0)" P-INDEP
+; V42 tmp42 [V42,T20] ( 2, 0.90) int -> rdx "field V04._length (fldOffset=0x8)" P-INDEP
;* V43 tmp43 [V43 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP
;* V44 tmp44 [V44 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
;* V45 tmp45 [V45 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP
;* V46 tmp46 [V46 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
-; V47 tmp47 [V47,T11] ( 2, 0.98) byref -> rcx single-def "field V09._reference (fldOffset=0x0)" P-INDEP
-;* V48 tmp48 [V48,T25] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V49 tmp49 [V49,T14] ( 2, 0.90) byref -> rcx single-def "field V11._reference (fldOffset=0x0)" P-INDEP
-; V50 tmp50 [V50,T20] ( 2, 0.90) int -> rdx "field V11._length (fldOffset=0x8)" P-INDEP
+; V47 tmp47 [V47,T12] ( 2, 0.98) byref -> rcx single-def "field V09._reference (fldOffset=0x0)" P-INDEP
+;* V48 tmp48 [V48,T24] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
+; V49 tmp49 [V49,T15] ( 2, 0.90) byref -> rcx single-def "field V11._reference (fldOffset=0x0)" P-INDEP
+; V50 tmp50 [V50,T21] ( 2, 0.90) int -> rdx "field V11._length (fldOffset=0x8)" P-INDEP
;* V51 tmp51 [V51 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP
;* V52 tmp52 [V52 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP
;* V53 tmp53 [V53 ] ( 0, 0 ) byref -> zero-ref "field V17._reference (fldOffset=0x0)" P-INDEP
;* V54 tmp54 [V54 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
-; V55 tmp55 [V55,T15] ( 2, 0.90) byref -> rdi single-def "field V18._reference (fldOffset=0x0)" P-INDEP
-;* V56 tmp56 [V56,T27] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP
+; V55 tmp55 [V55,T16] ( 2, 0.90) byref -> rbp single-def "field V18._reference (fldOffset=0x0)" P-INDEP
+;* V56 tmp56 [V56,T26] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP
;* V57 tmp57 [V57 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP
;* V58 tmp58 [V58 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP
-; V59 tmp59 [V59,T16] ( 2, 0.90) byref -> rcx "field V23._reference (fldOffset=0x0)" P-INDEP
-; V60 tmp60 [V60,T21] ( 2, 0.90) int -> rdx "field V23._length (fldOffset=0x8)" P-INDEP
+; V59 tmp59 [V59,T17] ( 2, 0.90) byref -> rcx "field V23._reference (fldOffset=0x0)" P-INDEP
+; V60 tmp60 [V60,T22] ( 2, 0.90) int -> rdx "field V23._length (fldOffset=0x8)" P-INDEP
;* V61 tmp61 [V61 ] ( 0, 0 ) byref -> zero-ref "field V24._reference (fldOffset=0x0)" P-INDEP
;* V62 tmp62 [V62 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP
;* V63 tmp63 [V63 ] ( 0, 0 ) byref -> zero-ref "field V27._reference (fldOffset=0x0)" P-INDEP
;* V64 tmp64 [V64 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x8)" P-INDEP
-; V65 tmp65 [V65,T12] ( 2, 0.98) byref -> rcx single-def "field V28._reference (fldOffset=0x0)" P-INDEP
-;* V66 tmp66 [V66,T26] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP
-; V67 tmp67 [V67,T17] ( 2, 0.90) byref -> rcx single-def "field V30._reference (fldOffset=0x0)" P-INDEP
-; V68 tmp68 [V68,T22] ( 2, 0.90) int -> rdx "field V30._length (fldOffset=0x8)" P-INDEP
+; V65 tmp65 [V65,T13] ( 2, 0.98) byref -> rcx single-def "field V28._reference (fldOffset=0x0)" P-INDEP
+;* V66 tmp66 [V66,T25] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP
+; V67 tmp67 [V67,T18] ( 2, 0.90) byref -> rcx single-def "field V30._reference (fldOffset=0x0)" P-INDEP
+; V68 tmp68 [V68,T23] ( 2, 0.90) int -> rdx "field V30._length (fldOffset=0x8)" P-INDEP
;* V69 tmp69 [V69 ] ( 0, 0 ) byref -> zero-ref single-def "field V31._reference (fldOffset=0x0)" P-INDEP
;* V70 tmp70 [V70 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP
;* V71 tmp71 [V71 ] ( 0, 0 ) byref -> zero-ref "field V36._reference (fldOffset=0x0)" P-INDEP
;* V72 tmp72 [V72 ] ( 0, 0 ) int -> zero-ref "field V36._length (fldOffset=0x8)" P-INDEP
-; V73 tmp73 [V73,T18] ( 2, 0.90) byref -> rsi single-def "field V37._reference (fldOffset=0x0)" P-INDEP
-;* V74 tmp74 [V74,T28] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x8)" P-INDEP
-; V75 tmp75 [V75 ] ( 12, 11.25) struct (16) [rsp+0x30] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V76 tmp76 [V76 ] ( 6, 5.39) struct (16) [rsp+0x20] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V77 cse0 [V77,T09] ( 3, 1.43) byref -> rdi "CSE - moderate"
-; V78 cse1 [V78,T10] ( 3, 1.43) byref -> rsi "CSE - conservative"
+; V73 tmp73 [V73,T19] ( 2, 0.90) byref -> r15 single-def "field V37._reference (fldOffset=0x0)" P-INDEP
+;* V74 tmp74 [V74,T27] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x8)" P-INDEP
+; V75 tmp75 [V75 ] ( 12, 11.25) struct (16) [rsp+0x38] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V76 tmp76 [V76 ] ( 6, 5.39) struct (16) [rsp+0x28] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V77 cse0 [V77,T10] ( 3, 1.43) byref -> rbp "CSE - moderate"
+; V78 cse1 [V78,T11] ( 3, 1.43) byref -> r15 "CSE - conservative"
; V79 cse2 [V79,T02] ( 3, 3 ) ref -> rsi "CSE - aggressive"
+; V80 cse3 [V80,T03] ( 3, 3 ) ref -> rdi "CSE - aggressive"
;
-; Lcl frame size = 64
+; Lcl frame size = 72
G_M61099_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push r15
+ push r14
push rdi
push rsi
+ push rbp
push rbx
- sub rsp, 64
+ sub rsp, 72
+ xor eax, eax
+ mov qword ptr [rsp+0x28], rax
vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [rsp+0x20], ymm4
- ;; size=17 bbWeight=1 PerfScore 5.58
-G_M61099_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ vmovdqa xmmword ptr [rsp+0x30], xmm4
+ mov qword ptr [rsp+0x40], rax
+ ;; size=34 bbWeight=1 PerfScore 10.83
+G_M61099_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.Xml.XmlSchemaValidatorApiTests.FilePathUtil:GetStandardPath():System.String]
; gcrRegs +[rax]
; gcr arg pop 0
@@ -116,60 +123,53 @@ G_M61099_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcr arg pop 0
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
- mov rdx, 0xD1FFAB1E
+ mov rdi, 0xD1FFAB1E
+ ; gcrRegs +[rdi]
+ mov rdx, rdi
; gcrRegs +[rdx]
call [<unknown method>]
; gcrRegs -[rcx rdx]
; gcr arg pop 0
test rbx, rbx
- je SHORT G_M61099_IG05
- ;; size=62 bbWeight=1 PerfScore 11.75
-G_M61099_IG03: ; bbWeight=0.46, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ je G_M61099_IG12
+ ;; size=69 bbWeight=1 PerfScore 12.00
+G_M61099_IG03: ; bbWeight=0.46, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
cmp dword ptr [rbx+0x08], 0
- je SHORT G_M61099_IG05
- ;; size=6 bbWeight=0.46 PerfScore 1.84
-G_M61099_IG04: ; bbWeight=0.49, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- mov rdi, 0xD1FFAB1E
- ; byrRegs +[rdi]
- mov rcx, rdi
+ je G_M61099_IG12
+ ;; size=10 bbWeight=0.46 PerfScore 1.84
+G_M61099_IG04: ; bbWeight=0.49, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+ mov rbp, 0xD1FFAB1E
+ ; byrRegs +[rbp]
+ mov rcx, rbp
; byrRegs +[rcx]
- mov bword ptr [rsp+0x30], rcx
- mov dword ptr [rsp+0x38], 5
- lea rcx, [rsp+0x30]
+ mov bword ptr [rsp+0x38], rcx
+ mov dword ptr [rsp+0x40], 5
+ lea rcx, [rsp+0x38]
; byrRegs -[rcx]
call [System.IO.Path:IsPathRooted(System.ReadOnlySpan`1[ushort]):ubyte]
; gcr arg pop 0
test eax, eax
- je SHORT G_M61099_IG06
- ;; size=41 bbWeight=0.49 PerfScore 3.54
-G_M61099_IG05: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx]
- ; byrRegs -[rdi]
- mov rdx, 0xD1FFAB1E
- ; gcrRegs +[rdx]
- jmp SHORT G_M61099_IG07
- ;; size=12 bbWeight=0.50 PerfScore 1.12
-G_M61099_IG06: ; bbWeight=0.45, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref
- ; gcrRegs -[rdx] +[rbx]
- ; byrRegs +[rdi]
+ jne G_M61099_IG12
+ ;; size=45 bbWeight=0.49 PerfScore 3.54
+G_M61099_IG05: ; bbWeight=0.45, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0020 {rbp}, byref
lea rcx, bword ptr [rbx+0x0C]
; byrRegs +[rcx]
mov edx, dword ptr [rbx+0x08]
- mov bword ptr [rsp+0x30], rcx
- mov dword ptr [rsp+0x38], edx
- mov bword ptr [rsp+0x20], rdi
- mov dword ptr [rsp+0x28], 5
- lea rcx, [rsp+0x30]
+ mov bword ptr [rsp+0x38], rcx
+ mov dword ptr [rsp+0x40], edx
+ mov bword ptr [rsp+0x28], rbp
+ mov dword ptr [rsp+0x30], 5
+ lea rcx, [rsp+0x38]
; byrRegs -[rcx]
- lea rdx, [rsp+0x20]
+ lea rdx, [rsp+0x28]
call [<unknown method>]
; gcrRegs -[rbx] +[rax]
- ; byrRegs -[rdi]
+ ; byrRegs -[rbp]
; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
;; size=48 bbWeight=0.45 PerfScore 4.83
-G_M61099_IG07: ; bbWeight=1, gcrefRegs=0044 {rdx rsi}, byrefRegs=0000 {}, byref, isz
+G_M61099_IG06: ; bbWeight=1, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov rcx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
call CORINFO_HELP_ASSIGN_REF
@@ -177,9 +177,9 @@ G_M61099_IG07: ; bbWeight=1, gcrefRegs=0044 {rdx rsi}, byrefRegs=0000 {},
call [System.Xml.XmlSchemaValidatorApiTests.FilePathUtil:GetTestDataPath():System.String]
; gcrRegs +[rax]
; gcr arg pop 0
- mov rbx, rax
- ; gcrRegs +[rbx]
- mov rcx, rbx
+ mov r14, rax
+ ; gcrRegs +[r14]
+ mov rcx, r14
; gcrRegs +[rcx]
mov rdx, rsi
; gcrRegs +[rdx]
@@ -188,75 +188,81 @@ G_M61099_IG07: ; bbWeight=1, gcrefRegs=0044 {rdx rsi}, byrefRegs=0000 {},
; gcr arg pop 0
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
- mov rdx, 0xD1FFAB1E
+ mov rdx, rdi
; gcrRegs +[rdx]
call [<unknown method>]
- ; gcrRegs -[rcx rdx]
+ ; gcrRegs -[rcx rdx rdi]
; gcr arg pop 0
- test rbx, rbx
...
+41 (+11.85%) : 148058.dasm - System.IO.Tests.DirectoryMove:b200():this (FullOpts)
@@ -12,11 +12,11 @@
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V02 tmp1 [V02,T03] ( 2, 4 ) ref -> rbp class-hnd exact single-def "impAppendStmt" <System.String>
; V03 tmp2 [V03,T00] ( 6, 8.72) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
-; V04 tmp3 [V04,T10] ( 3, 1.95) ref -> rbp class-hnd "Inline return value spill temp" <System.String>
+; V04 tmp3 [V04,T10] ( 3, 1.49) ref -> rbp class-hnd "Inline return value spill temp" <System.String>
;* V05 tmp4 [V05 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V06 tmp5 [V06 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V07 tmp6 [V07 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-;* V08 tmp7 [V08,T24] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V08 tmp7 [V08,T28] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V09 tmp8 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V10 tmp9 [V10 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V11 tmp10 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
@@ -30,12 +30,12 @@
;* V19 tmp18 [V19 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V20 tmp19 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V21 tmp20 [V21 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V22 tmp21 [V22,T01] ( 6, 8.72) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
-; V23 tmp22 [V23,T11] ( 3, 1.95) ref -> r8 class-hnd "Inline return value spill temp" <System.String>
+; V22 tmp21 [V22,T01] ( 6, 8.72) ref -> r15 class-hnd exact single-def "Inlining Arg" <System.String>
+; V23 tmp22 [V23,T11] ( 3, 1.49) ref -> r8 class-hnd "Inline return value spill temp" <System.String>
;* V24 tmp23 [V24 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V25 tmp24 [V25 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V26 tmp25 [V26 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-;* V27 tmp26 [V27,T25] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V27 tmp26 [V27,T29] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V28 tmp27 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V29 tmp28 [V29 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V30 tmp29 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
@@ -58,7 +58,7 @@
;* V47 tmp46 [V47 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP
;* V48 tmp47 [V48 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
; V49 tmp48 [V49,T12] ( 2, 0.98) byref -> rcx single-def "field V11._reference (fldOffset=0x0)" P-INDEP
-;* V50 tmp49 [V50,T26] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
+;* V50 tmp49 [V50,T24] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
; V51 tmp50 [V51,T15] ( 2, 0.90) byref -> rcx single-def "field V13._reference (fldOffset=0x0)" P-INDEP
; V52 tmp51 [V52,T21] ( 2, 0.90) int -> rdx "field V13._length (fldOffset=0x8)" P-INDEP
;* V53 tmp52 [V53 ] ( 0, 0 ) byref -> zero-ref single-def "field V14._reference (fldOffset=0x0)" P-INDEP
@@ -66,7 +66,7 @@
;* V55 tmp54 [V55 ] ( 0, 0 ) byref -> zero-ref "field V19._reference (fldOffset=0x0)" P-INDEP
;* V56 tmp55 [V56 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x8)" P-INDEP
; V57 tmp56 [V57,T16] ( 2, 0.90) byref -> r14 single-def "field V20._reference (fldOffset=0x0)" P-INDEP
-;* V58 tmp57 [V58,T28] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
+;* V58 tmp57 [V58,T26] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
;* V59 tmp58 [V59 ] ( 0, 0 ) byref -> zero-ref "field V24._reference (fldOffset=0x0)" P-INDEP
;* V60 tmp59 [V60 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP
; V61 tmp60 [V61,T17] ( 2, 0.90) byref -> rcx "field V25._reference (fldOffset=0x0)" P-INDEP
@@ -76,7 +76,7 @@
;* V65 tmp64 [V65 ] ( 0, 0 ) byref -> zero-ref "field V29._reference (fldOffset=0x0)" P-INDEP
;* V66 tmp65 [V66 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x8)" P-INDEP
; V67 tmp66 [V67,T13] ( 2, 0.98) byref -> rcx single-def "field V30._reference (fldOffset=0x0)" P-INDEP
-;* V68 tmp67 [V68,T27] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x8)" P-INDEP
+;* V68 tmp67 [V68,T25] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x8)" P-INDEP
; V69 tmp68 [V69,T18] ( 2, 0.90) byref -> rcx single-def "field V32._reference (fldOffset=0x0)" P-INDEP
; V70 tmp69 [V70,T23] ( 2, 0.90) int -> rdx "field V32._length (fldOffset=0x8)" P-INDEP
;* V71 tmp70 [V71 ] ( 0, 0 ) byref -> zero-ref single-def "field V33._reference (fldOffset=0x0)" P-INDEP
@@ -84,27 +84,31 @@
;* V73 tmp72 [V73 ] ( 0, 0 ) byref -> zero-ref "field V38._reference (fldOffset=0x0)" P-INDEP
;* V74 tmp73 [V74 ] ( 0, 0 ) int -> zero-ref "field V38._length (fldOffset=0x8)" P-INDEP
; V75 tmp74 [V75,T19] ( 2, 0.90) byref -> rax single-def "field V39._reference (fldOffset=0x0)" P-INDEP
-;* V76 tmp75 [V76,T29] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0x8)" P-INDEP
-; V77 tmp76 [V77 ] ( 12, 11.25) struct (16) [rsp+0x30] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V78 tmp77 [V78 ] ( 6, 5.39) struct (16) [rsp+0x20] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+;* V76 tmp75 [V76,T27] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0x8)" P-INDEP
+; V77 tmp76 [V77 ] ( 12, 11.25) struct (16) [rsp+0x38] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V78 tmp77 [V78 ] ( 6, 5.39) struct (16) [rsp+0x28] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
; V79 cse0 [V79,T05] ( 6, 2.85) byref -> r14 multi-def "CSE - aggressive"
-; V80 cse1 [V80,T04] ( 7, 4.98) ref -> rdi "CSE - aggressive"
+; V80 cse1 [V80,T04] ( 7, 4.06) ref -> rdi "CSE - aggressive"
;
-; Lcl frame size = 64
+; Lcl frame size = 72
G_M33707_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push r15
push r14
push rdi
push rsi
push rbp
push rbx
- sub rsp, 64
+ sub rsp, 72
+ xor eax, eax
+ mov qword ptr [rsp+0x28], rax
vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [rsp+0x20], ymm4
+ vmovdqa xmmword ptr [rsp+0x30], xmm4
+ mov qword ptr [rsp+0x40], rax
mov rbx, rcx
; gcrRegs +[rbx]
- ;; size=23 bbWeight=1 PerfScore 7.83
-G_M33707_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=37 bbWeight=1 PerfScore 11.08
+G_M33707_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rsi, gword ptr [rbx+0x10]
; gcrRegs +[rsi]
mov rcx, rsi
@@ -124,46 +128,37 @@ G_M33707_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs -[rcx rdx]
; gcr arg pop 0
test rsi, rsi
- je SHORT G_M33707_IG05
- ;; size=57 bbWeight=1 PerfScore 10.50
-G_M33707_IG03: ; bbWeight=0.46, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ je G_M33707_IG12
+ ;; size=61 bbWeight=1 PerfScore 10.50
+G_M33707_IG03: ; bbWeight=0.46, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
cmp dword ptr [rsi+0x08], 0
- je SHORT G_M33707_IG05
- ;; size=6 bbWeight=0.46 PerfScore 1.84
-G_M33707_IG04: ; bbWeight=0.49, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ je G_M33707_IG12
+ ;; size=10 bbWeight=0.46 PerfScore 1.84
+G_M33707_IG04: ; bbWeight=0.49, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
lea r14, bword ptr [rdi+0x0C]
; byrRegs +[r14]
mov rcx, r14
; byrRegs +[rcx]
- mov bword ptr [rsp+0x30], rcx
- mov dword ptr [rsp+0x38], 3
- lea rcx, [rsp+0x30]
+ mov bword ptr [rsp+0x38], rcx
+ mov dword ptr [rsp+0x40], 3
+ lea rcx, [rsp+0x38]
; byrRegs -[rcx]
call [System.IO.Path:IsPathRooted(System.ReadOnlySpan`1[ushort]):ubyte]
; gcr arg pop 0
test eax, eax
- je SHORT G_M33707_IG06
- ;; size=35 bbWeight=0.49 PerfScore 3.66
-G_M33707_IG05: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rsi]
- ; byrRegs -[r14]
- mov rbp, rdi
- ; gcrRegs +[rbp]
- jmp SHORT G_M33707_IG07
- ;; size=5 bbWeight=0.50 PerfScore 1.12
-G_M33707_IG06: ; bbWeight=0.45, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=4000 {r14}, byref
- ; gcrRegs -[rbp] +[rsi]
- ; byrRegs +[r14]
+ jne G_M33707_IG12
+ ;; size=39 bbWeight=0.49 PerfScore 3.66
+G_M33707_IG05: ; bbWeight=0.45, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=4000 {r14}, byref
lea rcx, bword ptr [rsi+0x0C]
; byrRegs +[rcx]
mov edx, dword ptr [rsi+0x08]
- mov bword ptr [rsp+0x30], rcx
- mov dword ptr [rsp+0x38], edx
- mov bword ptr [rsp+0x20], r14
- mov dword ptr [rsp+0x28], 3
- lea rcx, [rsp+0x30]
+ mov bword ptr [rsp+0x38], rcx
+ mov dword ptr [rsp+0x40], edx
+ mov bword ptr [rsp+0x28], r14
+ mov dword ptr [rsp+0x30], 3
+ lea rcx, [rsp+0x38]
; byrRegs -[rcx]
- lea rdx, [rsp+0x20]
+ lea rdx, [rsp+0x28]
call [<unknown method>]
; gcrRegs -[rsi] +[rax]
; byrRegs -[r14]
@@ -171,11 +166,11 @@ G_M33707_IG06: ; bbWeight=0.45, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=4
mov rbp, rax
; gcrRegs +[rbp]
;; size=48 bbWeight=0.45 PerfScore 4.83
-G_M33707_IG07: ; bbWeight=1, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0000 {}, byref, isz
+G_M33707_IG06: ; bbWeight=1, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- mov rsi, gword ptr [rbx+0x10]
- ; gcrRegs +[rsi]
- mov rcx, rsi
+ mov r15, gword ptr [rbx+0x10]
+ ; gcrRegs +[r15]
+ mov rcx, r15
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
@@ -189,57 +184,49 @@ G_M33707_IG07: ; bbWeight=1, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0000
call [<unknown method>]
; gcrRegs -[rcx rdx]
; gcr arg pop 0
- test rsi, rsi
- je SHORT G_M33707_IG10
- ;; size=47 bbWeight=1 PerfScore 10.25
-G_M33707_IG08: ; bbWeight=0.46, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
- cmp dword ptr [rsi+0x08], 0
- je SHORT G_M33707_IG10
- ;; size=6 bbWeight=0.46 PerfScore 1.84
-G_M33707_IG09: ; bbWeight=0.49, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
+ test r15, r15
+ je G_M33707_IG13
+ ;; size=51 bbWeight=1 PerfScore 10.25
+G_M33707_IG07: ; bbWeight=0.46, gcrefRegs=80A8 {rbx rbp rdi r15}, byrefRegs=0000 {}, byref
+ cmp dword ptr [r15+0x08], 0
+ je G_M33707_IG13
+ ;; size=11 bbWeight=0.46 PerfScore 1.84
+G_M33707_IG08: ; bbWeight=0.49, gcrefRegs=80A8 {rbx rbp rdi r15}, byrefRegs=0000 {}, byref, isz
lea r14, bword ptr [rdi+0x0C]
; byrRegs +[r14]
mov rcx, r14
; byrRegs +[rcx]
- mov bword ptr [rsp+0x30], rcx
- mov dword ptr [rsp+0x38], 3
- lea rcx, [rsp+0x30]
+ mov bword ptr [rsp+0x38], rcx
+ mov dword ptr [rsp+0x40], 3
+ lea rcx, [rsp+0x38]
; byrRegs -[rcx]
call [System.IO.Path:IsPathRooted(System.ReadOnlySpan`1[ushort]):ubyte]
; gcr arg pop 0
test eax, eax
- je SHORT G_M33707_IG11
+ jne SHORT G_M33707_IG13
;; size=35 bbWeight=0.49 PerfScore 3.66
-G_M33707_IG10: ; bbWeight=0.50, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rsi]
- ; byrRegs -[r14]
- mov r8, rdi
- ; gcrRegs +[r8]
- jmp SHORT G_M33707_IG12
- ;; size=5 bbWeight=0.50 PerfScore 1.12
-G_M33707_IG11: ; bbWeight=0.45, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=4000 {r14}, byref
- ; gcrRegs -[rdi r8] +[rsi]
- ; byrRegs +[r14]
- lea rcx, bword ptr [rsi+0x0C]
+G_M33707_IG09: ; bbWeight=0.45, gcrefRegs=8028 {rbx rbp r15}, byrefRegs=4000 {r14}, byref
+ ; gcrRegs -[rdi]
+ lea rcx, bword ptr [r15+0x0C]
; byrRegs +[rcx]
- mov edx, dword ptr [rsi+0x08]
+ mov edx, dword ptr [r15+0x08]
mov rax, r14
; byrRegs +[rax]
- mov bword ptr [rsp+0x30], rcx
- mov dword ptr [rsp+0x38], edx
- mov bword ptr [rsp+0x20], rax
- mov dword ptr [rsp+0x28], 3
- lea rcx, [rsp+0x30]
+ mov bword ptr [rsp+0x38], rcx
+ mov dword ptr [rsp+0x40], edx
+ mov bword ptr [rsp+0x28], rax
+ mov dword ptr [rsp+0x30], 3
+ lea rcx, [rsp+0x38]
; byrRegs -[rcx]
- lea rdx, [rsp+0x20]
+ lea rdx, [rsp+0x28]
call [<unknown method>]
- ; gcrRegs -[rsi] +[rax]
...
Details
Improvements/regressions per collection
| Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
| aspnet.run.windows.x64.checked.mch |
4,166 |
1,223 |
2,261 |
682 |
-15,628 |
+42,603 |
| benchmarks.run.windows.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| benchmarks.run_pgo.windows.x64.checked.mch |
6,045 |
4,073 |
1,420 |
552 |
-103,387 |
+20,912 |
| benchmarks.run_tiered.windows.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| coreclr_tests.run.windows.x64.checked.mch |
3,600 |
1,227 |
1,533 |
840 |
-16,796 |
+36,338 |
| libraries.crossgen2.windows.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| libraries.pmi.windows.x64.checked.mch |
971 |
289 |
488 |
194 |
-1,788 |
+5,019 |
| libraries_tests.run.windows.x64.Release.mch |
20,901 |
7,074 |
10,003 |
3,824 |
-122,476 |
+382,173 |
| librariestestsnotieredcompilation.run.windows.x64.Release.mch |
1,937 |
577 |
1,034 |
326 |
-3,970 |
+16,961 |
| realworld.run.windows.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| smoke_tests.nativeaot.windows.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
|
37,620 |
14,463 |
16,739 |
6,418 |
-264,045 |
+504,006 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| aspnet.run.windows.x64.checked.mch |
129,154 |
61,702 |
67,452 |
133 (0.10%) |
136 (0.11%) |
| benchmarks.run.windows.x64.checked.mch |
43,045 |
6 |
43,039 |
0 (0.00%) |
0 (0.00%) |
| benchmarks.run_pgo.windows.x64.checked.mch |
138,385 |
80,824 |
57,561 |
0 (0.00%) |
52 (0.04%) |
| benchmarks.run_tiered.windows.x64.checked.mch |
84,411 |
63,048 |
21,363 |
0 (0.00%) |
0 (0.00%) |
| coreclr_tests.run.windows.x64.checked.mch |
701,453 |
445,522 |
255,931 |
0 (0.00%) |
0 (0.00%) |
| libraries.crossgen2.windows.x64.checked.mch |
274,711 |
15 |
274,696 |
0 (0.00%) |
0 (0.00%) |
| libraries.pmi.windows.x64.checked.mch |
323,845 |
6 |
323,839 |
0 (0.00%) |
0 (0.00%) |
| libraries_tests.run.windows.x64.Release.mch |
786,761 |
566,816 |
219,945 |
0 (0.00%) |
35 (0.00%) |
| librariestestsnotieredcompilation.run.windows.x64.Release.mch |
357,221 |
22,381 |
334,840 |
0 (0.00%) |
0 (0.00%) |
| realworld.run.windows.x64.checked.mch |
36,952 |
3 |
36,949 |
0 (0.00%) |
0 (0.00%) |
| smoke_tests.nativeaot.windows.x64.checked.mch |
32,422 |
11 |
32,411 |
0 (0.00%) |
0 (0.00%) |
|
2,908,360 |
1,240,334 |
1,668,026 |
133 (0.00%) |
223 (0.01%) |
jit-analyze output
aspnet.run.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 46759029 (overridden on cmd)
Total bytes of diff: 46786004 (overridden on cmd)
Total bytes of delta: 26975 (0.06 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
2060 : 101224.dasm (56.97 % of base)
1989 : 128894.dasm (56.04 % of base)
1910 : 128776.dasm (56.03 % of base)
1886 : 101125.dasm (54.18 % of base)
1876 : 119123.dasm (55.44 % of base)
260 : 118927.dasm (5.73 % of base)
250 : 101032.dasm (5.56 % of base)
247 : 128263.dasm (29.33 % of base)
247 : 100250.dasm (29.44 % of base)
247 : 118188.dasm (29.51 % of base)
231 : 128823.dasm (5.07 % of base)
218 : 114544.dasm (1.63 % of base)
187 : 127968.dasm (36.38 % of base)
167 : 117942.dasm (32.49 % of base)
167 : 89061.dasm (32.49 % of base)
156 : 121830.dasm (5.53 % of base)
154 : 118804.dasm (51.33 % of base)
139 : 100542.dasm (38.72 % of base)
139 : 128510.dasm (38.72 % of base)
139 : 118431.dasm (38.72 % of base)
Top file improvements (bytes):
-615 : 80044.dasm (-9.95 % of base)
-537 : 80893.dasm (-8.52 % of base)
-493 : 56946.dasm (-7.97 % of base)
-439 : 32952.dasm (-7.10 % of base)
-319 : 55701.dasm (-5.20 % of base)
-316 : 70616.dasm (-4.94 % of base)
-118 : 66851.dasm (-7.53 % of base)
-112 : 1093.dasm (-2.06 % of base)
-75 : 46449.dasm (-8.54 % of base)
-70 : 128904.dasm (-2.30 % of base)
-69 : 77873.dasm (-0.89 % of base)
-69 : 58361.dasm (-0.89 % of base)
-67 : 12096.dasm (-5.63 % of base)
-65 : 119155.dasm (-1.56 % of base)
-64 : 59533.dasm (-1.90 % of base)
-63 : 60067.dasm (-7.27 % of base)
-63 : 55978.dasm (-1.31 % of base)
-63 : 65957.dasm (-7.27 % of base)
-61 : 33371.dasm (-1.26 % of base)
-55 : 7827.dasm (-1.05 % of base)
70 total files with Code Size differences (33 improved, 37 regressed), 20 unchanged.
Top method regressions (bytes):
2060 (56.97 % of base) : 101224.dasm - OrchardCore.ContentManagement.Display.ContentDisplay.ContentPartDisplayDriverResolver:GetDisplayModeDrivers(System.String,System.String):System.Collections.Generic.IList`1[OrchardCore.ContentManagement.Display.ContentDisplay.IContentPartDisplayDriver]:this (Tier1)
1989 (56.04 % of base) : 128894.dasm - OrchardCore.ContentManagement.Display.ContentDisplay.ContentPartDisplayDriverResolver:GetDisplayModeDrivers(System.String,System.String):System.Collections.Generic.IList`1[OrchardCore.ContentManagement.Display.ContentDisplay.IContentPartDisplayDriver]:this (Tier1)
1910 (56.03 % of base) : 128776.dasm - OrchardCore.ContentManagement.Handlers.ContentPartHandlerResolver:GetHandlers(System.String):System.Collections.Generic.IList`1[OrchardCore.ContentManagement.Handlers.IContentPartHandler]:this (Tier1)
1886 (54.18 % of base) : 101125.dasm - OrchardCore.ContentManagement.Handlers.ContentPartHandlerResolver:GetHandlers(System.String):System.Collections.Generic.IList`1[OrchardCore.ContentManagement.Handlers.IContentPartHandler]:this (Tier1)
1876 (55.44 % of base) : 119123.dasm - OrchardCore.ContentManagement.Handlers.ContentPartHandlerResolver:GetHandlers(System.String):System.Collections.Generic.IList`1[OrchardCore.ContentManagement.Handlers.IContentPartHandler]:this (Tier1)
260 (5.73 % of base) : 118927.dasm - OrchardCore.DisplayManagement.Implementation.DefaultShapeFactory+<CreateAsync>d__10:MoveNext():this (Tier1)
250 (5.56 % of base) : 101032.dasm - OrchardCore.DisplayManagement.Implementation.DefaultShapeFactory+<CreateAsync>d__10:MoveNext():this (Tier1)
247 (29.33 % of base) : 128263.dasm - System.Collections.Generic.List`1[System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
247 (29.44 % of base) : 100250.dasm - System.Collections.Generic.List`1[System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
247 (29.51 % of base) : 118188.dasm - System.Collections.Generic.List`1[System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
231 (5.07 % of base) : 128823.dasm - OrchardCore.DisplayManagement.Implementation.DefaultShapeFactory+<CreateAsync>d__10:MoveNext():this (Tier1)
218 (1.63 % of base) : 114544.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
187 (36.38 % of base) : 127968.dasm - System.Linq.Enumerable:TryGetFirst[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Func`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],ubyte],byref):System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon] (Tier1-OSR)
167 (32.49 % of base) : 117942.dasm - System.Linq.Enumerable:TryGetFirst[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Func`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],ubyte],byref):System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon] (Tier1-OSR)
167 (32.49 % of base) : 89061.dasm - System.Linq.Enumerable:TryGetFirst[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Func`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],ubyte],byref):System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon] (Tier1-OSR)
156 (5.53 % of base) : 121830.dasm - Newtonsoft.Json.Utilities.JavaScriptUtils:WriteEscapedJavaScriptString(System.IO.TextWriter,System.String,ushort,ubyte,ubyte[],int,Newtonsoft.Json.IArrayPool`1[ushort],byref) (FullOpts)
154 (51.33 % of base) : 118804.dasm - System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:ToList():System.Collections.Generic.List`1[System.__Canon]:this (Tier1)
139 (38.72 % of base) : 100542.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
139 (38.72 % of base) : 128510.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
139 (38.72 % of base) : 118431.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
Top method improvements (bytes):
-615 (-9.95 % of base) : 80044.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1)
-537 (-8.52 % of base) : 80893.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1)
-493 (-7.97 % of base) : 56946.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1)
-439 (-7.10 % of base) : 32952.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1)
-319 (-5.20 % of base) : 55701.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1)
-316 (-4.94 % of base) : 70616.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1)
-118 (-7.53 % of base) : 66851.dasm - Microsoft.AspNetCore.Server.Kestrel.Core.Internal.HttpConnection:SelectProtocol():int:this (Tier1)
-112 (-2.06 % of base) : 1093.dasm - PlatformBenchmarks.BenchmarkApplication+<ProcessRequestsAsync>d__69:MoveNext():this (Tier1)
-75 (-8.54 % of base) : 46449.dasm - System.Net.Security.SslStream:DecryptData(int):System.Net.SecurityStatusPal:this (Tier1)
-70 (-2.30 % of base) : 128904.dasm - Castle.DynamicProxy.MixinData:.ctor(System.Collections.Generic.IEnumerable`1[System.Object]):this (Tier1)
-69 (-0.89 % of base) : 77873.dasm - Benchmarks.Middleware.MiddlewareHelpers:RenderFortunesHtml(System.Collections.Generic.IEnumerable`1[Benchmarks.Data.Fortune],Microsoft.AspNetCore.Http.HttpContext,System.Text.Encodings.Web.HtmlEncoder):System.Threading.Tasks.Task (Tier1)
-69 (-0.89 % of base) : 58361.dasm - Benchmarks.Middleware.MiddlewareHelpers:RenderFortunesHtml(System.Collections.Generic.IEnumerable`1[Benchmarks.Data.Fortune],Microsoft.AspNetCore.Http.HttpContext,System.Text.Encodings.Web.HtmlEncoder):System.Threading.Tasks.Task (Tier1)
-67 (-5.63 % of base) : 12096.dasm - System.Net.Http.Headers.HttpRequestHeaders:set_Host(System.String):this (Tier1)
-65 (-1.56 % of base) : 119155.dasm - Newtonsoft.Json.Serialization.JsonSerializerInternalReader:CreateObject(Newtonsoft.Json.JsonReader,System.Type,Newtonsoft.Json.Serialization.JsonContract,Newtonsoft.Json.Serialization.JsonProperty,Newtonsoft.Json.Serialization.JsonContainerContract,Newtonsoft.Json.Serialization.JsonProperty,System.Object):System.Object:this (Tier1)
-64 (-1.90 % of base) : 59533.dasm - System.Net.Security.SslStream+<ReadAsyncInternal>d__171`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (Tier1)
-63 (-7.27 % of base) : 60067.dasm - System.Net.Security.SslStream:DecryptData(int):System.Net.SecurityStatusPal:this (Tier1)
-63 (-7.27 % of base) : 65957.dasm - System.Net.Security.SslStream:DecryptData(int):System.Net.SecurityStatusPal:this (Tier1)
-63 (-1.31 % of base) : 55978.dasm - System.Text.Json.Serialization.JsonCollectionConverter`2[System.__Canon,System.__Canon]:OnTryWrite(System.Text.Json.Utf8JsonWriter,System.__Canon,System.Text.Json.JsonSerializerOptions,byref):ubyte:this (Tier1)
-61 (-1.26 % of base) : 33371.dasm - System.Text.Json.Serialization.JsonCollectionConverter`2[System.__Canon,System.__Canon]:OnTryWrite(System.Text.Json.Utf8JsonWriter,System.__Canon,System.Text.Json.JsonSerializerOptions,byref):ubyte:this (Tier1)
-55 (-1.05 % of base) : 7827.dasm - PlatformBenchmarks.BenchmarkApplication+<ProcessRequestsAsync>d__69:MoveNext():this (Tier1)
Top method regressions (percentages):
2060 (56.97 % of base) : 101224.dasm - OrchardCore.ContentManagement.Display.ContentDisplay.ContentPartDisplayDriverResolver:GetDisplayModeDrivers(System.String,System.String):System.Collections.Generic.IList`1[OrchardCore.ContentManagement.Display.ContentDisplay.IContentPartDisplayDriver]:this (Tier1)
1989 (56.04 % of base) : 128894.dasm - OrchardCore.ContentManagement.Display.ContentDisplay.ContentPartDisplayDriverResolver:GetDisplayModeDrivers(System.String,System.String):System.Collections.Generic.IList`1[OrchardCore.ContentManagement.Display.ContentDisplay.IContentPartDisplayDriver]:this (Tier1)
1910 (56.03 % of base) : 128776.dasm - OrchardCore.ContentManagement.Handlers.ContentPartHandlerResolver:GetHandlers(System.String):System.Collections.Generic.IList`1[OrchardCore.ContentManagement.Handlers.IContentPartHandler]:this (Tier1)
1876 (55.44 % of base) : 119123.dasm - OrchardCore.ContentManagement.Handlers.ContentPartHandlerResolver:GetHandlers(System.String):System.Collections.Generic.IList`1[OrchardCore.ContentManagement.Handlers.IContentPartHandler]:this (Tier1)
1886 (54.18 % of base) : 101125.dasm - OrchardCore.ContentManagement.Handlers.ContentPartHandlerResolver:GetHandlers(System.String):System.Collections.Generic.IList`1[OrchardCore.ContentManagement.Handlers.IContentPartHandler]:this (Tier1)
133 (52.16 % of base) : 35234.dasm - System.Linq.Enumerable+WhereSelectListIterator`2[System.__Canon,System.__Canon]:ToList():System.Collections.Generic.List`1[System.__Canon]:this (Tier1-OSR)
154 (51.33 % of base) : 118804.dasm - System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:ToList():System.Collections.Generic.List`1[System.__Canon]:this (Tier1)
137 (43.63 % of base) : 55099.dasm - System.Threading.SpinWait:SpinUntil(System.Func`1[ubyte],int):ubyte (Tier1)
137 (43.63 % of base) : 58596.dasm - System.Threading.SpinWait:SpinUntil(System.Func`1[ubyte],int):ubyte (Tier1)
137 (43.63 % of base) : 68996.dasm - System.Threading.SpinWait:SpinUntil(System.Func`1[ubyte],int):ubyte (Tier1)
137 (43.63 % of base) : 66595.dasm - System.Threading.SpinWait:SpinUntil(System.Func`1[ubyte],int):ubyte (Tier1)
137 (43.63 % of base) : 78134.dasm - System.Threading.SpinWait:SpinUntil(System.Func`1[ubyte],int):ubyte (Tier1)
139 (38.72 % of base) : 100542.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
139 (38.72 % of base) : 128510.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
139 (38.72 % of base) : 118431.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
121 (36.67 % of base) : 28992.dasm - System.Threading.SpinWait:SpinUntil(System.Func`1[ubyte],int):ubyte (Tier1)
187 (36.38 % of base) : 127968.dasm - System.Linq.Enumerable:TryGetFirst[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Func`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],ubyte],byref):System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon] (Tier1-OSR)
167 (32.49 % of base) : 117942.dasm - System.Linq.Enumerable:TryGetFirst[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Func`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],ubyte],byref):System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon] (Tier1-OSR)
167 (32.49 % of base) : 89061.dasm - System.Linq.Enumerable:TryGetFirst[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Func`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],ubyte],byref):System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon] (Tier1-OSR)
247 (29.51 % of base) : 118188.dasm - System.Collections.Generic.List`1[System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
Top method improvements (percentages):
-50 (-11.52 % of base) : 128791.dasm - System.ValueTuple`2[System.__Canon,System.__Canon]:Equals(System.ValueTuple`2[System.__Canon,System.__Canon]):ubyte:this (Tier1)
-50 (-11.34 % of base) : 101147.dasm - System.ValueTuple`2[System.__Canon,System.__Canon]:Equals(System.ValueTuple`2[System.__Canon,System.__Canon]):ubyte:this (Tier1)
-50 (-11.34 % of base) : 119140.dasm - System.ValueTuple`2[System.__Canon,System.__Canon]:Equals(System.ValueTuple`2[System.__Canon,System.__Canon]):ubyte:this (Tier1)
-615 (-9.95 % of base) : 80044.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1)
-75 (-8.54 % of base) : 46449.dasm - System.Net.Security.SslStream:DecryptData(int):System.Net.SecurityStatusPal:this (Tier1)
-537 (-8.52 % of base) : 80893.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1)
-493 (-7.97 % of base) : 56946.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1)
-118 (-7.53 % of base) : 66851.dasm - Microsoft.AspNetCore.Server.Kestrel.Core.Internal.HttpConnection:SelectProtocol():int:this (Tier1)
-31 (-7.49 % of base) : 19572.dasm - System.Net.Http.HttpConnectionPool:SendWithProxyAuthAsync(System.Net.Http.HttpRequestMessage,ubyte,ubyte,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[System.Net.Http.HttpResponseMessage]:this (Tier1)
-63 (-7.27 % of base) : 60067.dasm - System.Net.Security.SslStream:DecryptData(int):System.Net.SecurityStatusPal:this (Tier1)
-63 (-7.27 % of base) : 65957.dasm - System.Net.Security.SslStream:DecryptData(int):System.Net.SecurityStatusPal:this (Tier1)
-439 (-7.10 % of base) : 32952.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1)
-2 (-6.45 % of base) : 118712.dasm - OrchardCore.ResourceManagement.RequireSettings:UseVersion(System.String):OrchardCore.ResourceManagement.RequireSettings:this (Tier1)
-7 (-5.88 % of base) : 84806.dasm - System.Threading.CancellationTokenSource:NotifyCancellation(ubyte):this (Tier1)
-67 (-5.63 % of base) : 12096.dasm - System.Net.Http.Headers.HttpRequestHeaders:set_Host(System.String):this (Tier1)
-18 (-5.56 % of base) : 118574.dasm - System.Net.Sockets.SocketAsyncEventArgs:StartOperationAccept():this (Tier1)
-18 (-5.56 % of base) : 1312.dasm - System.Net.Sockets.SocketAsyncEventArgs:StartOperationAccept():this (Tier1)
-48 (-5.54 % of base) : 59644.dasm - System.Net.Security.SslStream:EncryptData(System.ReadOnlyMemory`1[ubyte]):System.Net.Security.ProtocolToken:this (Tier1)
-48 (-5.54 % of base) : 66268.dasm - System.Net.Security.SslStream:EncryptData(System.ReadOnlyMemory`1[ubyte]):System.Net.Security.ProtocolToken:this (Tier1)
-319 (-5.20 % of base) : 55701.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1)
benchmarks.run_pgo.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 45780921 (overridden on cmd)
Total bytes of diff: 45698446 (overridden on cmd)
Total bytes of delta: -82475 (-0.18 % of base)
diff is an improvement.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
284 : 55222.dasm (47.65 % of base)
284 : 109008.dasm (47.65 % of base)
284 : 135941.dasm (47.65 % of base)
284 : 75116.dasm (47.65 % of base)
265 : 96126.dasm (41.15 % of base)
261 : 96071.dasm (40.65 % of base)
212 : 121851.dasm (41.49 % of base)
173 : 63801.dasm (3.15 % of base)
147 : 118802.dasm (5.27 % of base)
137 : 76498.dasm (7.59 % of base)
119 : 78209.dasm (7.63 % of base)
110 : 71181.dasm (7.56 % of base)
98 : 119654.dasm (1.78 % of base)
97 : 106778.dasm (2.72 % of base)
96 : 137575.dasm (7.91 % of base)
94 : 107761.dasm (2.64 % of base)
90 : 121769.dasm (3.14 % of base)
84 : 137574.dasm (5.77 % of base)
79 : 127929.dasm (6.61 % of base)
79 : 137635.dasm (2.70 % of base)
Top file improvements (bytes):
-237 : 96727.dasm (-5.56 % of base)
-231 : 107735.dasm (-5.47 % of base)
-128 : 81331.dasm (-2.93 % of base)
-119 : 50644.dasm (-12.19 % of base)
-113 : 109608.dasm (-3.46 % of base)
-106 : 19305.dasm (-2.59 % of base)
-103 : 135197.dasm (-2.74 % of base)
-103 : 16545.dasm (-2.50 % of base)
-103 : 122286.dasm (-2.49 % of base)
-101 : 117689.dasm (-2.45 % of base)
-98 : 63887.dasm (-2.60 % of base)
-95 : 54670.dasm (-4.48 % of base)
-95 : 77274.dasm (-4.48 % of base)
-95 : 75923.dasm (-4.48 % of base)
-94 : 81834.dasm (-2.25 % of base)
-94 : 119560.dasm (-9.61 % of base)
-93 : 116321.dasm (-2.21 % of base)
-92 : 81333.dasm (-4.28 % of base)
-91 : 14085.dasm (-9.33 % of base)
-91 : 56406.dasm (-2.12 % of base)
83 total files with Code Size differences (42 improved, 41 regressed), 20 unchanged.
Top method regressions (bytes):
284 (47.65 % of base) : 55222.dasm - System.Collections.Generic.SegmentedArrayBuilder`1[System.__Canon]:AddNonICollectionRangeInlined(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
284 (47.65 % of base) : 109008.dasm - System.Collections.Generic.SegmentedArrayBuilder`1[System.__Canon]:AddNonICollectionRangeInlined(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
284 (47.65 % of base) : 135941.dasm - System.Collections.Generic.SegmentedArrayBuilder`1[System.__Canon]:AddNonICollectionRangeInlined(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
284 (47.65 % of base) : 75116.dasm - System.Collections.Generic.SegmentedArrayBuilder`1[System.__Canon]:AddNonICollectionRangeInlined(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
265 (41.15 % of base) : 96126.dasm - Microsoft.Cci.MetadataVisitor:Visit(System.Collections.Generic.IEnumerable`1[Microsoft.Cci.IMetadataNamedArgument]):this (Tier1)
261 (40.65 % of base) : 96071.dasm - Microsoft.Cci.MetadataVisitor:Visit(System.Collections.Generic.IEnumerable`1[Microsoft.Cci.IMetadataExpression]):this (Tier1)
212 (41.49 % of base) : 121851.dasm - System.Linq.Enumerable:Count[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):int (Tier1)
173 (3.15 % of base) : 63801.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
147 (5.27 % of base) : 118802.dasm - System.Reflection.CustomAttribute:AddCustomAttributes(byref,System.Reflection.RuntimeModule,int,System.RuntimeType,ubyte,System.RuntimeType+ListBuilder`1[System.Object]) (Tier1)
137 (7.59 % of base) : 76498.dasm - Utility:sscanf(System.String,System.String,System.Object[]):int (Tier1)
119 (7.63 % of base) : 78209.dasm - Utility:sscanf(System.String,System.String,System.Object[]):int (Tier1)
110 (7.56 % of base) : 71181.dasm - System.Text.RegularExpressions.RegexCache:GetOrAdd(System.String):System.Text.RegularExpressions.Regex (Tier1)
98 (1.78 % of base) : 119654.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
97 (2.72 % of base) : 106778.dasm - System.Reflection.CustomAttribute:AddCustomAttributes(byref,System.Reflection.RuntimeModule,int,System.RuntimeType,ubyte,System.RuntimeType+ListBuilder`1[System.Object]) (Tier1)
96 (7.91 % of base) : 137575.dasm - System.Text.RegularExpressions.RegexCache:Get(System.Text.RegularExpressions.RegexCache+Key):System.Text.RegularExpressions.Regex (Tier1)
94 (2.64 % of base) : 107761.dasm - System.Reflection.CustomAttribute:AddCustomAttributes(byref,System.Reflection.RuntimeModule,int,System.RuntimeType,ubyte,System.RuntimeType+ListBuilder`1[System.Object]) (Tier1)
90 (3.14 % of base) : 121769.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
84 (5.77 % of base) : 137574.dasm - System.Text.RegularExpressions.RegexCache:GetOrAdd(System.String):System.Text.RegularExpressions.Regex (Tier1)
79 (2.70 % of base) : 137635.dasm - System.Text.RegularExpressions.RegexCache:Add(System.Text.RegularExpressions.RegexCache+Key,System.Text.RegularExpressions.Regex) (Tier1)
79 (6.61 % of base) : 127929.dasm - System.Text.RegularExpressions.RegexCache:GetOrAdd(System.String):System.Text.RegularExpressions.Regex (Tier1)
Top method improvements (bytes):
-237 (-5.56 % of base) : 96727.dasm - Microsoft.Extensions.Configuration.ConfigurationProvider:GetChildKeys(System.Collections.Generic.IEnumerable`1[System.String],System.String):System.Collections.Generic.IEnumerable`1[System.String]:this (Tier1)
-231 (-5.47 % of base) : 107735.dasm - Microsoft.Extensions.Configuration.ConfigurationProvider:GetChildKeys(System.Collections.Generic.IEnumerable`1[System.String],System.String):System.Collections.Generic.IEnumerable`1[System.String]:this (Tier1)
-128 (-2.93 % of base) : 81331.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (Tier1)
-119 (-12.19 % of base) : 50644.dasm - System.Reflection.Emit.DynamicILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.FieldInfo):this (Tier1)
-113 (-3.46 % of base) : 109608.dasm - Microsoft.Extensions.Configuration.ConfigurationProvider:GetChildKeys(System.Collections.Generic.IEnumerable`1[System.String],System.String):System.Collections.Generic.IEnumerable`1[System.String]:this (Tier1)
-106 (-2.59 % of base) : 19305.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (Tier1)
-103 (-2.74 % of base) : 135197.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)
-103 (-2.50 % of base) : 16545.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (Tier1)
-103 (-2.49 % of base) : 122286.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (Tier1)
-101 (-2.45 % of base) : 117689.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (Tier1)
-98 (-2.60 % of base) : 63887.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)
-95 (-4.48 % of base) : 54670.dasm - System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong (Tier1)
-95 (-4.48 % of base) : 77274.dasm - System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong (Tier1)
-95 (-4.48 % of base) : 75923.dasm - System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong (Tier1)
-94 (-9.61 % of base) : 119560.dasm - System.Net.Security.SslStream:DecryptData(int):System.Net.SecurityStatusPal:this (Tier1)
-94 (-2.25 % of base) : 81834.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (Tier1)
-93 (-2.21 % of base) : 116321.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (Tier1)
-92 (-4.28 % of base) : 81333.dasm - System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong (Tier1)
-91 (-9.33 % of base) : 14085.dasm - System.Net.Security.SslStream:DecryptData(int):System.Net.SecurityStatusPal:this (Tier1)
-91 (-2.12 % of base) : 56406.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (Tier1)
Top method regressions (percentages):
284 (47.65 % of base) : 55222.dasm - System.Collections.Generic.SegmentedArrayBuilder`1[System.__Canon]:AddNonICollectionRangeInlined(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
284 (47.65 % of base) : 109008.dasm - System.Collections.Generic.SegmentedArrayBuilder`1[System.__Canon]:AddNonICollectionRangeInlined(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
284 (47.65 % of base) : 135941.dasm - System.Collections.Generic.SegmentedArrayBuilder`1[System.__Canon]:AddNonICollectionRangeInlined(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
284 (47.65 % of base) : 75116.dasm - System.Collections.Generic.SegmentedArrayBuilder`1[System.__Canon]:AddNonICollectionRangeInlined(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
212 (41.49 % of base) : 121851.dasm - System.Linq.Enumerable:Count[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):int (Tier1)
265 (41.15 % of base) : 96126.dasm - Microsoft.Cci.MetadataVisitor:Visit(System.Collections.Generic.IEnumerable`1[Microsoft.Cci.IMetadataNamedArgument]):this (Tier1)
261 (40.65 % of base) : 96071.dasm - Microsoft.Cci.MetadataVisitor:Visit(System.Collections.Generic.IEnumerable`1[Microsoft.Cci.IMetadataExpression]):this (Tier1)
8 (13.11 % of base) : 102866.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:IsInDocumentationComment(Microsoft.CodeAnalysis.SyntaxNode):ubyte (Tier1)
41 (11.08 % of base) : 96051.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder:MustBeWrapped(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol):ubyte (Tier1)
70 (9.71 % of base) : 127926.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]:TryGetValue(System.Text.RegularExpressions.RegexCache+Key,byref):ubyte:this (Tier1)
41 (9.58 % of base) : 95191.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder:Translate(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol]):System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.IParameterTypeInformation]:this (Tier1)
58 (9.48 % of base) : 73727.dasm - System.Runtime.Serialization.SerializationInfo:ThrowIfDeserializationInProgress(System.String,byref) (Tier1)
58 (9.48 % of base) : 74572.dasm - System.Runtime.Serialization.SerializationInfo:ThrowIfDeserializationInProgress(System.String,byref) (Tier1)
58 (9.48 % of base) : 17292.dasm - System.Runtime.Serialization.SerializationInfo:ThrowIfDeserializationInProgress(System.String,byref) (Tier1)
58 (9.46 % of base) : 65051.dasm - System.Runtime.Serialization.SerializationInfo:ThrowIfDeserializationInProgress(System.String,byref) (Tier1)
22 (9.02 % of base) : 96053.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder:ContainerIsGeneric(Microsoft.CodeAnalysis.CSharp.Symbol):ubyte (Tier1)
15 (8.88 % of base) : 102841.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedElementIfNotToken(byref):Microsoft.CodeAnalysis.SyntaxNode:this (Tier1)
67 (8.49 % of base) : 73641.dasm - System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[ulong],System.__Canon]:FindValue(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[ulong]):byref:this (Tier1)
96 (7.91 % of base) : 137575.dasm - System.Text.RegularExpressions.RegexCache:Get(System.Text.RegularExpressions.RegexCache+Key):System.Text.RegularExpressions.Regex (Tier1)
4 (7.84 % of base) : 96495.dasm - System.Reflection.PortableExecutable.ManagedTextSection:get_SizeOfImportAddressTable():int:this (Tier1)
Top method improvements (percentages):
-75 (-13.76 % of base) : 107733.dasm - Microsoft.Extensions.Configuration.ConfigurationProvider:Segment(System.String,int):System.String (Tier1)
-119 (-12.19 % of base) : 50644.dasm - System.Reflection.Emit.DynamicILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.FieldInfo):this (Tier1)
-85 (-11.01 % of base) : 134459.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-85 (-11.01 % of base) : 80899.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-85 (-11.01 % of base) : 81077.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-82 (-11.01 % of base) : 105645.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-82 (-11.01 % of base) : 82812.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-82 (-11.01 % of base) : 14300.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-82 (-11.01 % of base) : 117038.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-82 (-11.01 % of base) : 54124.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-82 (-11.01 % of base) : 63736.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-82 (-11.01 % of base) : 81292.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-85 (-11.00 % of base) : 66333.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-85 (-11.00 % of base) : 74613.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-85 (-11.00 % of base) : 78489.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-85 (-11.00 % of base) : 106025.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-85 (-11.00 % of base) : 53453.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-85 (-11.00 % of base) : 68045.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-85 (-11.00 % of base) : 72325.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-85 (-11.00 % of base) : 75241.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
coreclr_tests.run.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 464618729 (overridden on cmd)
Total bytes of diff: 464638271 (overridden on cmd)
Total bytes of delta: 19542 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
1487 : 402621.dasm (37.88 % of base)
1487 : 397367.dasm (37.88 % of base)
1287 : 400111.dasm (60.68 % of base)
1243 : 403743.dasm (59.93 % of base)
1073 : 402759.dasm (37.70 % of base)
1070 : 397867.dasm (37.62 % of base)
1007 : 403180.dasm (76.40 % of base)
967 : 398815.dasm (73.48 % of base)
883 : 403179.dasm (84.66 % of base)
844 : 398814.dasm (81.08 % of base)
765 : 397569.dasm (38.85 % of base)
708 : 402696.dasm (35.12 % of base)
471 : 402846.dasm (26.18 % of base)
453 : 397344.dasm (25.36 % of base)
358 : 261757.dasm (40.27 % of base)
260 : 397533.dasm (26.26 % of base)
259 : 402267.dasm (3.96 % of base)
254 : 392748.dasm (3.90 % of base)
249 : 395470.dasm (58.31 % of base)
244 : 402888.dasm (57.14 % of base)
Top file improvements (bytes):
-348 : 402646.dasm (-8.41 % of base)
-319 : 249186.dasm (-9.06 % of base)
-222 : 261582.dasm (-4.48 % of base)
-170 : 403581.dasm (-6.76 % of base)
-159 : 399545.dasm (-6.25 % of base)
-133 : 403630.dasm (-6.00 % of base)
-128 : 402829.dasm (-6.07 % of base)
-113 : 397798.dasm (-5.40 % of base)
-110 : 397996.dasm (-3.08 % of base)
-103 : 397099.dasm (-7.64 % of base)
-102 : 399586.dasm (-4.97 % of base)
-90 : 362092.dasm (-4.75 % of base)
-79 : 694672.dasm (-3.86 % of base)
-72 : 402672.dasm (-3.51 % of base)
-60 : 398655.dasm (-2.49 % of base)
-57 : 37729.dasm (-3.67 % of base)
-57 : 403742.dasm (-0.49 % of base)
-55 : 58902.dasm (-2.75 % of base)
-54 : 251734.dasm (-1.06 % of base)
-54 : 252619.dasm (-1.06 % of base)
85 total files with Code Size differences (42 improved, 43 regressed), 20 unchanged.
Top method regressions (bytes):
1487 (37.88 % of base) : 402621.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,byref):ubyte:this (Tier1)
1487 (37.88 % of base) : 397367.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,byref):ubyte:this (Tier1)
1287 (60.68 % of base) : 400111.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,byref):ubyte:this (Tier1)
1243 (59.93 % of base) : 403743.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,byref):ubyte:this (Tier1)
1073 (37.70 % of base) : 402759.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,byref):ubyte:this (Tier1)
1070 (37.62 % of base) : 397867.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,byref):ubyte:this (Tier1)
1007 (76.40 % of base) : 403180.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryAddOrGetExisting(System.__Canon,byref):System.__Canon:this (Tier1-OSR)
967 (73.48 % of base) : 398815.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryAddOrGetExisting(System.__Canon,byref):System.__Canon:this (Tier1-OSR)
883 (84.66 % of base) : 403179.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,byref):ubyte:this (Tier1-OSR)
844 (81.08 % of base) : 398814.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,byref):ubyte:this (Tier1-OSR)
765 (38.85 % of base) : 397569.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,byref):ubyte:this (Tier1)
708 (35.12 % of base) : 402696.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,byref):ubyte:this (Tier1)
471 (26.18 % of base) : 402846.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+ArrayTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+ArrayTypeKey,byref):ubyte:this (Tier1)
453 (25.36 % of base) : 397344.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+ArrayTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+ArrayTypeKey,byref):ubyte:this (Tier1)
358 (40.27 % of base) : 261757.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:ToArray():System.__Canon[]:this (Tier1)
260 (26.26 % of base) : 397533.dasm - Internal.TypeSystem.TypeSystemConstraintsHelpers:VerifyGenericParamConstraint(Internal.TypeSystem.InstantiationContext,Internal.TypeSystem.GenericParameterDesc,Internal.TypeSystem.InstantiationContext,Internal.TypeSystem.TypeDesc):ubyte (Tier1)
259 (3.96 % of base) : 402267.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:Expand(System.__Canon[]):this (Tier1-OSR)
254 (3.90 % of base) : 392748.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:Expand(System.__Canon[]):this (Tier1-OSR)
249 (58.31 % of base) : 395470.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
244 (57.14 % of base) : 402888.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
Top method improvements (bytes):
-348 (-8.41 % of base) : 402646.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:TryAddOrGetExisting(System.__Canon,byref):System.__Canon:this (Tier1)
-319 (-9.06 % of base) : 249186.dasm - System.Text.RegularExpressions.Regex:RunAllMatchesWithCallback[System.ValueTuple`6[System.__Canon,System.__Canon,System.Text.StructListBuilder`1[int],System.ReadOnlyMemory`1[ushort],int,int]](System.String,System.ReadOnlySpan`1[ushort],int,byref,System.Text.RegularExpressions.MatchCallback`1[System.ValueTuple`6[System.__Canon,System.__Canon,System.Text.StructListBuilder`1[int],System.ReadOnlyMemory`1[ushort],int,int]],int,ubyte):this (Tier1)
-222 (-4.48 % of base) : 261582.dasm - BinderTracingTests.BinderEventListener:OnEventWritten(System.Diagnostics.Tracing.EventWrittenEventArgs):this (Tier1)
-170 (-6.76 % of base) : 403581.dasm - Internal.IL.Stubs.InterlockedIntrinsics:EmitIL(ILCompiler.CompilationModuleGroup,Internal.TypeSystem.MethodDesc):Internal.IL.MethodIL (Tier1)
-159 (-6.25 % of base) : 399545.dasm - Internal.IL.Stubs.InterlockedIntrinsics:EmitIL(ILCompiler.CompilationModuleGroup,Internal.TypeSystem.MethodDesc):Internal.IL.MethodIL (Tier1)
-133 (-6.00 % of base) : 403630.dasm - Internal.IL.Stubs.RuntimeHelpersIntrinsics:EmitIL(Internal.TypeSystem.MethodDesc):Internal.IL.MethodIL (Tier1)
-128 (-6.07 % of base) : 402829.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+FieldForInstantiatedTypeKey,System.__Canon]:TryAddOrGetExisting(System.__Canon,byref):System.__Canon:this (Tier1)
-113 (-5.40 % of base) : 397798.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+FieldForInstantiatedTypeKey,System.__Canon]:TryAddOrGetExisting(System.__Canon,byref):System.__Canon:this (Tier1)
-110 (-3.08 % of base) : 397996.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeExplicitFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (Tier1)
-103 (-7.64 % of base) : 397099.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[System.__Canon,System.__Canon]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
-102 (-4.97 % of base) : 399586.dasm - Internal.IL.Stubs.RuntimeHelpersIntrinsics:EmitIL(Internal.TypeSystem.MethodDesc):Internal.IL.MethodIL (Tier1)
-90 (-4.75 % of base) : 362092.dasm - System.Reflection.Emit.TypeNameBuilder:AddAssemblyQualifiedName(System.Type,int):this (Tier1)
-79 (-3.86 % of base) : 694672.dasm - Program+TestDelegateToCanonMethods:Run() (FullOpts)
-72 (-3.51 % of base) : 402672.dasm - Internal.TypeSystem.InstantiatedType+<GetVirtualMethods>d__23:MoveNext():ubyte:this (Tier1)
-60 (-2.49 % of base) : 398655.dasm - Internal.JitInterface.CorInfoImpl:ceeInfoEmbedGenericHandle(byref,ubyte,byref):this (Tier1)
-57 (-0.49 % of base) : 403742.dasm - Internal.TypeSystem.RuntimeDeterminedTypeUtilities:ConvertInstantiationToSharedRuntimeForm(Internal.TypeSystem.Instantiation,Internal.TypeSystem.Instantiation,byref):Internal.TypeSystem.Instantiation (Tier1)
-57 (-3.67 % of base) : 37729.dasm - System.Reflection.Emit.DynamicILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.MethodInfo):this (Tier1)
-55 (-2.75 % of base) : 58902.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 (-1.06 % of base) : 251734.dasm - TestLibrary.OutOfProcessTest:RunOutOfProcessTest(System.String) (Tier1)
-54 (-1.06 % of base) : 252619.dasm - TestLibrary.OutOfProcessTest:RunOutOfProcessTest(System.String) (Tier1)
Top method regressions (percentages):
883 (84.66 % of base) : 403179.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,byref):ubyte:this (Tier1-OSR)
844 (81.08 % of base) : 398814.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,byref):ubyte:this (Tier1-OSR)
1007 (76.40 % of base) : 403180.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryAddOrGetExisting(System.__Canon,byref):System.__Canon:this (Tier1-OSR)
967 (73.48 % of base) : 398815.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryAddOrGetExisting(System.__Canon,byref):System.__Canon:this (Tier1-OSR)
1287 (60.68 % of base) : 400111.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,byref):ubyte:this (Tier1)
1243 (59.93 % of base) : 403743.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,byref):ubyte:this (Tier1)
249 (58.31 % of base) : 395470.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
244 (57.14 % of base) : 402888.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
57 (51.35 % of base) : 307304.dasm - k:b(c):int:this (Tier1)
55 (50.46 % of base) : 307303.dasm - $:f(a,b,c):int (Tier1)
57 (47.50 % of base) : 307313.dasm - f:b(c):int:this (Tier1)
358 (40.27 % of base) : 261757.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:ToArray():System.__Canon[]:this (Tier1)
765 (38.85 % of base) : 397569.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,byref):ubyte:this (Tier1)
1487 (37.88 % of base) : 402621.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,byref):ubyte:this (Tier1)
1487 (37.88 % of base) : 397367.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,byref):ubyte:this (Tier1)
1073 (37.70 % of base) : 402759.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,byref):ubyte:this (Tier1)
1070 (37.62 % of base) : 397867.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,byref):ubyte:this (Tier1)
708 (35.12 % of base) : 402696.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,byref):ubyte:this (Tier1)
80 (26.67 % of base) : 307306.dasm - $:e(a,b):b (Tier1)
260 (26.26 % of base) : 397533.dasm - Internal.TypeSystem.TypeSystemConstraintsHelpers:VerifyGenericParamConstraint(Internal.TypeSystem.InstantiationContext,Internal.TypeSystem.GenericParameterDesc,Internal.TypeSystem.InstantiationContext,Internal.TypeSystem.TypeDesc):ubyte (Tier1)
Top method improvements (percentages):
-25 (-9.92 % of base) : 261745.dasm - BinderTracingTests.BinderTracingTest+CustomALC:Load(System.Reflection.AssemblyName):System.Reflection.Assembly:this (Tier1)
-38 (-9.87 % of base) : 107702.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-38 (-9.87 % of base) : 363937.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-38 (-9.87 % of base) : 367265.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-38 (-9.87 % of base) : 8019.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-38 (-9.87 % of base) : 367706.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-38 (-9.87 % of base) : 387078.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-38 (-9.87 % of base) : 1823.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-38 (-9.87 % of base) : 24647.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-38 (-9.87 % of base) : 249790.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-38 (-9.87 % of base) : 251494.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-38 (-9.87 % of base) : 262581.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-38 (-9.87 % of base) : 282118.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-38 (-9.87 % of base) : 289369.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-38 (-9.87 % of base) : 298421.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-38 (-9.87 % of base) : 307129.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-38 (-9.87 % of base) : 310430.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-38 (-9.87 % of base) : 32429.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-38 (-9.87 % of base) : 362481.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-38 (-9.87 % of base) : 404562.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
libraries.pmi.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 64172055 (overridden on cmd)
Total bytes of diff: 64175286 (overridden on cmd)
Total bytes of delta: 3231 (0.01 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
139 : 240692.dasm (3.51 % of base)
125 : 217835.dasm (2.47 % of base)
116 : 205010.dasm (5.37 % of base)
112 : 208510.dasm (1.47 % of base)
88 : 301043.dasm (7.83 % of base)
84 : 95192.dasm (4.73 % of base)
77 : 16644.dasm (4.42 % of base)
77 : 270235.dasm (10.77 % of base)
73 : 280987.dasm (7.91 % of base)
60 : 303726.dasm (6.48 % of base)
60 : 92174.dasm (12.55 % of base)
53 : 217834.dasm (1.79 % of base)
53 : 303870.dasm (5.96 % of base)
50 : 217849.dasm (3.09 % of base)
50 : 232959.dasm (3.51 % of base)
34 : 244101.dasm (7.05 % of base)
34 : 244250.dasm (7.04 % of base)
34 : 230740.dasm (2.46 % of base)
34 : 230750.dasm (2.48 % of base)
33 : 161096.dasm (3.52 % of base)
Top file improvements (bytes):
-39 : 176393.dasm (-0.89 % of base)
-38 : 132298.dasm (-0.59 % of base)
-38 : 61651.dasm (-1.70 % of base)
-35 : 112539.dasm (-7.48 % of base)
-34 : 208023.dasm (-1.50 % of base)
-34 : 86606.dasm (-7.33 % of base)
-29 : 57479.dasm (-1.13 % of base)
-28 : 241530.dasm (-1.77 % of base)
-28 : 86616.dasm (-1.38 % of base)
-25 : 261162.dasm (-2.92 % of base)
-25 : 261163.dasm (-3.11 % of base)
-25 : 35692.dasm (-3.13 % of base)
-25 : 61659.dasm (-1.97 % of base)
-25 : 62417.dasm (-0.91 % of base)
-24 : 229816.dasm (-4.72 % of base)
-23 : 260995.dasm (-4.88 % of base)
-21 : 87244.dasm (-0.80 % of base)
-19 : 235980.dasm (-2.76 % of base)
-19 : 264628.dasm (-1.35 % of base)
-18 : 62474.dasm (-0.61 % of base)
71 total files with Code Size differences (33 improved, 38 regressed), 20 unchanged.
Top method regressions (bytes):
139 (3.51 % of base) : 240692.dasm - System.Xml.Serialization.XmlSerializationReader:ReadArray(System.String,System.String):System.Array:this (FullOpts)
125 (2.47 % of base) : 217835.dasm - System.Management.PropertyData:MapValueToWmiValue(System.Object,int,ubyte):System.Object (FullOpts)
116 (5.37 % of base) : 205010.dasm - System.Data.DataTable:ParseSortString(System.String):System.Data.IndexField[]:this (FullOpts)
112 (1.47 % of base) : 208510.dasm - System.Data.Common.SqlConvert:ChangeTypeForXML(System.Object,System.Type):System.Object (FullOpts)
88 (7.83 % of base) : 301043.dasm - System.Net.HttpWebResponse:get_CharacterSet():System.String:this (FullOpts)
84 (4.73 % of base) : 95192.dasm - System.Enum:TryParseByName[short](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
77 (10.77 % of base) : 270235.dasm - System.CommandLine.EnvironmentVariablesDirective+EnvironmentVariablesDirectiveAction:SetEnvVars(System.CommandLine.ParseResult):this (FullOpts)
77 (4.42 % of base) : 16644.dasm - System.Enum:TryParseByName[short](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
73 (7.91 % of base) : 280987.dasm - System.ComponentModel.PropertyTabAttribute:InitializeTabClasses():this (FullOpts)
60 (12.55 % of base) : 92174.dasm - Microsoft.CodeAnalysis.CSharp.ValueSetFactory+DecimalValueSetFactory:Microsoft.CodeAnalysis.CSharp.IValueSetFactory.Related(int,Microsoft.CodeAnalysis.ConstantValue):Microsoft.CodeAnalysis.CSharp.IValueSet:this (FullOpts)
60 (6.48 % of base) : 303726.dasm - System.Net.HeaderInfoTable:ParseValueHelper(System.String,ubyte):System.String[] (FullOpts)
53 (1.79 % of base) : 217834.dasm - System.Management.PropertyData:MapWmiValueToValue(System.Object,int,ubyte):System.Object (FullOpts)
53 (5.96 % of base) : 303870.dasm - System.Net.WebSockets.WebSocketHandle:ParseDeflateOptions(System.ReadOnlySpan`1[ushort],System.Net.WebSockets.WebSocketDeflateOptions):System.Net.WebSockets.WebSocketDeflateOptions (FullOpts)
50 (3.09 % of base) : 217849.dasm - System.Management.QualifierData:MapQualValueToWmiValue(System.Object):System.Object (FullOpts)
50 (3.51 % of base) : 232959.dasm - System.Xml.Schema.TypedObject:Equals(System.Xml.Schema.TypedObject):ubyte:this (FullOpts)
34 (7.05 % of base) : 244101.dasm - System.Security.Cryptography.DSA:VerifyData(ubyte[],int,int,ubyte[],System.Security.Cryptography.HashAlgorithmName,int):ubyte:this (FullOpts)
34 (7.04 % of base) : 244250.dasm - System.Security.Cryptography.ECDsa:VerifyData(ubyte[],int,int,ubyte[],System.Security.Cryptography.HashAlgorithmName,int):ubyte:this (FullOpts)
34 (2.46 % of base) : 230740.dasm - System.Xml.XmlTextReaderImpl+<ReadContentAsBinHexAsync>d__485:MoveNext():this (FullOpts)
34 (2.48 % of base) : 230750.dasm - System.Xml.XmlTextReaderImpl+<ReadElementContentAsBinHexAsync>d__488:MoveNext():this (FullOpts)
33 (3.52 % of base) : 161096.dasm - Newtonsoft.Json.Utilities.DateTimeUtils:WriteDateTimeString(ushort[],int,System.DateTime,System.Nullable`1[System.TimeSpan],int,int):int (FullOpts)
Top method improvements (bytes):
-39 (-0.89 % of base) : 176393.dasm - Microsoft.Build.BackEnd.Scheduler:WriteNodeUtilizationGraph(Microsoft.Build.BackEnd.Logging.ILoggingService,Microsoft.Build.Framework.BuildEventContext,ubyte):this (FullOpts)
-38 (-1.70 % of base) : 61651.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetDiagnosticsWithoutFiltering(int,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):this (FullOpts)
-38 (-0.59 % of base) : 132298.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicDeclarationComputer:ComputeDeclarationsCore(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.SyntaxNode,System.Func`3[Microsoft.CodeAnalysis.SyntaxNode,System.Nullable`1[int],ubyte],ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.DeclarationInfo],System.Nullable`1[int],System.Threading.CancellationToken) (FullOpts)
-35 (-7.48 % of base) : 112539.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:GenerateAllDeclarationErrorsImpl(System.Threading.CancellationToken):this (FullOpts)
-34 (-7.33 % of base) : 86606.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
-34 (-1.50 % of base) : 208023.dasm - System.Data.Common.DbConnectionStringBuilder:GetProperties(System.Collections.Hashtable):this (FullOpts)
-29 (-1.13 % of base) : 57479.dasm - Microsoft.CodeAnalysis.CSharp.Binder:LookupAttributeType(Microsoft.CodeAnalysis.CSharp.LookupResult,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol,System.String,int,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],int,ubyte,byref):this (FullOpts)
-28 (-1.77 % of base) : 241530.dasm - Internal.Cryptography.PkcsHelpers:TryGetRsaOaepEncryptionPadding(System.Nullable`1[System.ReadOnlyMemory`1[ubyte]],byref,byref):ubyte (FullOpts)
-28 (-1.38 % of base) : 86616.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckMembersAgainstBaseType(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):this (FullOpts)
-25 (-1.97 % of base) : 61659.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetDiagnosticsForSyntaxTree(int,Microsoft.CodeAnalysis.SyntaxTree,System.Nullable`1[Microsoft.CodeAnalysis.Text.TextSpan],ubyte,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Diagnostic]:this (FullOpts)
-25 (-0.91 % of base) : 62417.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:DefaultVisit(Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
-25 (-3.13 % of base) : 35692.dasm - Microsoft.Diagnostics.Tracing.Session.TraceEventSession:CaptureState(System.Guid,ulong,int,System.Object):this (FullOpts)
-25 (-3.11 % of base) : 261163.dasm - Microsoft.Extensions.Diagnostics.Metrics.Configuration.MetricsConfigureOptions:LoadInstrumentRules(Microsoft.Extensions.Diagnostics.Metrics.MetricsOptions,Microsoft.Extensions.Configuration.IConfigurationSection,int,System.String) (FullOpts)
-25 (-2.92 % of base) : 261162.dasm - Microsoft.Extensions.Diagnostics.Metrics.Configuration.MetricsConfigureOptions:LoadMeterRules(Microsoft.Extensions.Diagnostics.Metrics.MetricsOptions,Microsoft.Extensions.Configuration.IConfigurationSection,int,System.String) (FullOpts)
-24 (-4.72 % of base) : 229816.dasm - System.Xml.XmlReader:CheckElement(System.String,System.String):this (FullOpts)
-23 (-4.88 % of base) : 260995.dasm - Microsoft.Extensions.DependencyModel.Resolution.DotNetReferenceAssembliesPathResolver:GetDefaultDotNetReferenceAssembliesPath(Microsoft.Extensions.DependencyModel.IFileSystem):System.String (FullOpts)
-21 (-0.80 % of base) : 87244.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbolBase:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-19 (-1.35 % of base) : 264628.dasm - R2RDump.R2RDiff:DiffTitle():this (FullOpts)
-19 (-2.76 % of base) : 235980.dasm - System.Xml.Xsl.Xslt.XPathPatternParser:ParseIdKeyPattern():System.Xml.Xsl.Qil.QilNode:this (FullOpts)
-18 (-0.61 % of base) : 62474.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:CompileNamedType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol):this (FullOpts)
Top method regressions (percentages):
60 (12.55 % of base) : 92174.dasm - Microsoft.CodeAnalysis.CSharp.ValueSetFactory+DecimalValueSetFactory:Microsoft.CodeAnalysis.CSharp.IValueSetFactory.Related(int,Microsoft.CodeAnalysis.ConstantValue):Microsoft.CodeAnalysis.CSharp.IValueSet:this (FullOpts)
77 (10.77 % of base) : 270235.dasm - System.CommandLine.EnvironmentVariablesDirective+EnvironmentVariablesDirectiveAction:SetEnvVars(System.CommandLine.ParseResult):this (FullOpts)
19 (8.41 % of base) : 224736.dasm - System.Runtime.Serialization.Json.XmlJsonWriter:LookupPrefix(System.String):System.String:this (FullOpts)
73 (7.91 % of base) : 280987.dasm - System.ComponentModel.PropertyTabAttribute:InitializeTabClasses():this (FullOpts)
88 (7.83 % of base) : 301043.dasm - System.Net.HttpWebResponse:get_CharacterSet():System.String:this (FullOpts)
34 (7.05 % of base) : 244101.dasm - System.Security.Cryptography.DSA:VerifyData(ubyte[],int,int,ubyte[],System.Security.Cryptography.HashAlgorithmName,int):ubyte:this (FullOpts)
34 (7.04 % of base) : 244250.dasm - System.Security.Cryptography.ECDsa:VerifyData(ubyte[],int,int,ubyte[],System.Security.Cryptography.HashAlgorithmName,int):ubyte:this (FullOpts)
28 (6.78 % of base) : 15749.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:check@1478-2(ubyte,System.Collections.IEqualityComparer,System.Array,System.Array,long,long,long,long):ubyte (FullOpts)
60 (6.48 % of base) : 303726.dasm - System.Net.HeaderInfoTable:ParseValueHelper(System.String,ubyte):System.String[] (FullOpts)
53 (5.96 % of base) : 303870.dasm - System.Net.WebSockets.WebSocketHandle:ParseDeflateOptions(System.ReadOnlySpan`1[ushort],System.Net.WebSockets.WebSocketDeflateOptions):System.Net.WebSockets.WebSocketDeflateOptions (FullOpts)
22 (5.77 % of base) : 92171.dasm - Microsoft.CodeAnalysis.CSharp.ValueSetFactory+DecimalValueSetFactory:Related(int,System.Decimal):Microsoft.CodeAnalysis.CSharp.IValueSet`1[System.Decimal]:this (FullOpts)
22 (5.46 % of base) : 303727.dasm - System.Net.HeaderInfoTable:IsDuringExpiresAttributeParsing(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
116 (5.37 % of base) : 205010.dasm - System.Data.DataTable:ParseSortString(System.String):System.Data.IndexField[]:this (FullOpts)
84 (4.73 % of base) : 95192.dasm - System.Enum:TryParseByName[short](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
22 (4.46 % of base) : 33648.dasm - System.Diagnostics.Process:BuildCommandLine(System.Diagnostics.ProcessStartInfo,byref) (FullOpts)
22 (4.46 % of base) : 56636.dasm - System.Diagnostics.Process:BuildCommandLine(System.Diagnostics.ProcessStartInfo,byref) (FullOpts)
15 (4.45 % of base) : 219095.dasm - System.Net.Http.AuthenticationHelper:ComputeHash(System.String,System.String):System.String (FullOpts)
77 (4.42 % of base) : 16644.dasm - System.Enum:TryParseByName[short](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
14 (4.36 % of base) : 297165.dasm - System.Net.CookieTokenizer:Extract():System.String:this (FullOpts)
14 (4.36 % of base) : 300257.dasm - System.Net.CookieTokenizer:Extract():System.String:this (FullOpts)
Top method improvements (percentages):
-35 (-7.48 % of base) : 112539.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:GenerateAllDeclarationErrorsImpl(System.Threading.CancellationToken):this (FullOpts)
-34 (-7.33 % of base) : 86606.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
-23 (-4.88 % of base) : 260995.dasm - Microsoft.Extensions.DependencyModel.Resolution.DotNetReferenceAssembliesPathResolver:GetDefaultDotNetReferenceAssembliesPath(Microsoft.Extensions.DependencyModel.IFileSystem):System.String (FullOpts)
-24 (-4.72 % of base) : 229816.dasm - System.Xml.XmlReader:CheckElement(System.String,System.String):this (FullOpts)
-14 (-4.46 % of base) : 244964.dasm - System.Security.Cryptography.RSA:SignData(System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.RSASignaturePadding):ubyte[]:this (FullOpts)
-14 (-4.46 % of base) : 244966.dasm - System.Security.Cryptography.RSA:SignHash(System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.RSASignaturePadding):ubyte[]:this (FullOpts)
-10 (-4.29 % of base) : 116119.dasm - Microsoft.CodeAnalysis.VisualBasic.MethodCompiler:VisitNamespace(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamespaceSymbol):this (FullOpts)
-10 (-4.00 % of base) : 62472.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:VisitNamedType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):System.Object:this (FullOpts)
-10 (-4.00 % of base) : 62469.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:VisitNamespace(Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceSymbol,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):System.Object:this (FullOpts)
-17 (-4.00 % of base) : 244094.dasm - System.Security.Cryptography.DSA:SignData(ubyte[],int,int,System.Security.Cryptography.HashAlgorithmName,int):ubyte[]:this (FullOpts)
-17 (-4.00 % of base) : 244229.dasm - System.Security.Cryptography.ECDsa:SignData(ubyte[],int,int,System.Security.Cryptography.HashAlgorithmName,int):ubyte[]:this (FullOpts)
-8 (-3.90 % of base) : 175459.dasm - Microsoft.Build.Execution.BuildParameters:Initialize(Microsoft.Build.Collections.PropertyDictionary`1[Microsoft.Build.Execution.ProjectPropertyInstance],Microsoft.Build.Evaluation.ProjectRootElementCacheBase,Microsoft.Build.Evaluation.ToolsetProvider):this (FullOpts)
-11 (-3.37 % of base) : 259112.dasm - Microsoft.Diagnostics.Tools.RuntimeClient.EventPipeClient:.cctor() (FullOpts)
-11 (-3.22 % of base) : 259131.dasm - Microsoft.Diagnostics.Tools.RuntimeClient.DiagnosticsIpc.IpcClient:.cctor() (FullOpts)
-25 (-3.13 % of base) : 35692.dasm - Microsoft.Diagnostics.Tracing.Session.TraceEventSession:CaptureState(System.Guid,ulong,int,System.Object):this (FullOpts)
-25 (-3.11 % of base) : 261163.dasm - Microsoft.Extensions.Diagnostics.Metrics.Configuration.MetricsConfigureOptions:LoadInstrumentRules(Microsoft.Extensions.Diagnostics.Metrics.MetricsOptions,Microsoft.Extensions.Configuration.IConfigurationSection,int,System.String) (FullOpts)
-25 (-2.92 % of base) : 261162.dasm - Microsoft.Extensions.Diagnostics.Metrics.Configuration.MetricsConfigureOptions:LoadMeterRules(Microsoft.Extensions.Diagnostics.Metrics.MetricsOptions,Microsoft.Extensions.Configuration.IConfigurationSection,int,System.String) (FullOpts)
-11 (-2.87 % of base) : 169657.dasm - Microsoft.Build.Framework.FileClassifier:.cctor() (FullOpts)
-19 (-2.76 % of base) : 235980.dasm - System.Xml.Xsl.Xslt.XPathPatternParser:ParseIdKeyPattern():System.Xml.Xsl.Qil.QilNode:this (FullOpts)
-15 (-2.71 % of base) : 182534.dasm - System.Configuration.StringValidator:Validate(System.Object):this (FullOpts)
libraries_tests.run.windows.x64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 309629720 (overridden on cmd)
Total bytes of diff: 309889417 (overridden on cmd)
Total bytes of delta: 259697 (0.08 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
4509 : 702124.dasm (48.63 % of base)
4441 : 702125.dasm (94.93 % of base)
2780 : 628059.dasm (73.47 % of base)
2362 : 69060.dasm (65.57 % of base)
2084 : 727599.dasm (39.34 % of base)
2024 : 54261.dasm (64.91 % of base)
1976 : 124263.dasm (62.63 % of base)
1768 : 742823.dasm (49.40 % of base)
1733 : 66004.dasm (93.93 % of base)
1700 : 122149.dasm (49.16 % of base)
1636 : 123961.dasm (89.20 % of base)
1620 : 70542.dasm (45.39 % of base)
1551 : 65940.dasm (57.94 % of base)
1402 : 123252.dasm (42.48 % of base)
1355 : 345722.dasm (40.56 % of base)
1335 : 58135.dasm (42.03 % of base)
1186 : 702311.dasm (76.12 % of base)
1184 : 506207.dasm (30.15 % of base)
1155 : 423187.dasm (59.20 % of base)
1155 : 469666.dasm (59.63 % of base)
Top file improvements (bytes):
-750 : 65336.dasm (-5.35 % of base)
-717 : 493320.dasm (-6.25 % of base)
-700 : 123123.dasm (-5.45 % of base)
-577 : 124396.dasm (-3.89 % of base)
-532 : 56831.dasm (-2.73 % of base)
-514 : 121306.dasm (-2.72 % of base)
-459 : 683097.dasm (-4.09 % of base)
-447 : 493567.dasm (-4.75 % of base)
-377 : 257138.dasm (-5.59 % of base)
-341 : 633763.dasm (-5.94 % of base)
-317 : 391064.dasm (-5.73 % of base)
-312 : 633453.dasm (-4.70 % of base)
-312 : 462604.dasm (-4.70 % of base)
-312 : 597642.dasm (-4.70 % of base)
-308 : 365060.dasm (-4.64 % of base)
-295 : 245903.dasm (-5.36 % of base)
-295 : 49586.dasm (-5.36 % of base)
-295 : 149896.dasm (-5.36 % of base)
-295 : 162636.dasm (-5.36 % of base)
-295 : 768773.dasm (-5.36 % of base)
94 total files with Code Size differences (42 improved, 52 regressed), 20 unchanged.
Top method regressions (bytes):
4509 (48.63 % of base) : 702124.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.Text.Json.Serialization.Tests.Point_2D_With_ExtData]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
4441 (94.93 % of base) : 702125.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.Text.Json.Serialization.Tests.Point_2D_With_ExtData]:ReadConstructorArguments(byref,byref,System.Text.Json.JsonSerializerOptions):this (Tier1)
2780 (73.47 % of base) : 628059.dasm - System.Text.DBCSCodePageEncoding:ReadBestFitTable():this (Tier1-OSR)
2362 (65.57 % of base) : 69060.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.BaseTypeAnalysis:<GetManagedKind>g__dependsOnDefinitelyManagedType|4_0(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.CSharp.Symbol],byref):System.ValueTuple`2[ubyte,ubyte] (Tier1)
2084 (39.34 % of base) : 727599.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:ComputeAbstractMembers():System.Collections.Immutable.ImmutableHashSet`1[Microsoft.CodeAnalysis.CSharp.Symbol]:this (Tier1)
2024 (64.91 % of base) : 54261.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]]],System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]],int):System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]] (Tier1)
1976 (62.63 % of base) : 124263.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]]],System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]],int):System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]] (Tier1)
1768 (49.40 % of base) : 742823.dasm - Microsoft.CodeAnalysis.Workspace:<UpdateReferencesAfterAdd>g__UpdateReferencesAfterAdd|90_1(Microsoft.CodeAnalysis.Solution):Microsoft.CodeAnalysis.Solution (Tier1)
1733 (93.93 % of base) : 66004.dasm - System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.SyntaxToken]:UnionWith(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxToken]):this (Tier1)
1700 (49.16 % of base) : 122149.dasm - Microsoft.Interop.TypePositionInfo:GetByValueContentsMarshalKind(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.AttributeData],Microsoft.CodeAnalysis.Compilation):System.ValueTuple`3[int,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.Location] (Tier1)
1636 (89.20 % of base) : 123961.dasm - System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.SyntaxToken]:UnionWith(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxToken]):this (Tier1)
1620 (45.39 % of base) : 70542.dasm - Microsoft.Interop.TypePositionInfo:GetByValueContentsMarshalKind(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.AttributeData],Microsoft.CodeAnalysis.Compilation):System.ValueTuple`3[int,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.Location] (Tier1)
1551 (57.94 % of base) : 65940.dasm - Microsoft.Interop.UseSiteAttributeProvider:.ctor(System.Collections.Immutable.ImmutableArray`1[Microsoft.Interop.IUseSiteAttributeParser],System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.AttributeData],Microsoft.Interop.IElementInfoProvider,Microsoft.Interop.GeneratorDiagnosticsBag,Microsoft.Interop.GetMarshallingInfoCallback):this (Tier1)
1402 (42.48 % of base) : 123252.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:GetUnusedFieldWarnings(System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Diagnostic]:this (Tier1)
1355 (40.56 % of base) : 345722.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
1335 (42.03 % of base) : 58135.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:GetUnusedFieldWarnings(System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Diagnostic]:this (Tier1)
1186 (76.12 % of base) : 702311.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
1184 (30.15 % of base) : 506207.dasm - System.Xml.Xsl.Xslt.QilGenerator:CompileCallTemplate(System.Xml.Xsl.Xslt.XslNodeEx):System.Xml.Xsl.Qil.QilNode:this (Tier1)
1155 (59.20 % of base) : 423187.dasm - Xunit.Sdk.ReflectionMethodInfo:GetCustomAttributes(System.Reflection.MethodInfo,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
1155 (59.63 % of base) : 469666.dasm - Xunit.Sdk.ReflectionMethodInfo:GetCustomAttributes(System.Reflection.MethodInfo,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
Top method improvements (bytes):
-750 (-5.35 % of base) : 65336.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckValidNullableMethodOverride[System.ValueTuple`2[System.__Canon,ubyte]](Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Symbols.ReportMismatchInReturnType`1[System.ValueTuple`2[System.__Canon,ubyte]],Microsoft.CodeAnalysis.CSharp.Symbols.ReportMismatchInParameterType`1[System.ValueTuple`2[System.__Canon,ubyte]],System.ValueTuple`2[System.__Canon,ubyte],ubyte):ubyte (Tier1)
-717 (-6.25 % of base) : 493320.dasm - System.Xml.XmlLoader:LoadNode(ubyte):System.Xml.XmlNode:this (Tier1)
-700 (-5.45 % of base) : 123123.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MemberSignatureComparer:Equals(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):ubyte:this (Tier1)
-577 (-3.89 % of base) : 124396.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckValidNullableMethodOverride[System.__Canon](Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Symbols.ReportMismatchInReturnType`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.Symbols.ReportMismatchInParameterType`1[System.__Canon],System.__Canon,ubyte):ubyte (Tier1)
-532 (-2.73 % of base) : 56831.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (Tier1)
-514 (-2.72 % of base) : 121306.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindAttributeCore(Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundAttribute:this (Tier1)
-459 (-4.09 % of base) : 683097.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
-447 (-4.75 % of base) : 493567.dasm - System.Xml.Serialization.XmlSerializationWriterILGen:WriteEnumAndArrayTypes():this (Tier1)
-377 (-5.59 % of base) : 257138.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-341 (-5.94 % of base) : 633763.dasm - System.Text.Encodings.Web.TextEncoder:EncodeCore(System.IO.TextWriter,System.ReadOnlySpan`1[ushort]):this (Tier1)
-317 (-5.73 % of base) : 391064.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-312 (-4.70 % of base) : 633453.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-312 (-4.70 % of base) : 462604.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-312 (-4.70 % of base) : 597642.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-308 (-4.64 % of base) : 365060.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-295 (-5.36 % of base) : 245903.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-295 (-5.36 % of base) : 49586.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-295 (-5.36 % of base) : 149896.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-295 (-5.36 % of base) : 162636.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-295 (-5.36 % of base) : 768773.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
Top method regressions (percentages):
215 (97.29 % of base) : 404205.dasm - System.Linq.Enumerable+EnumerablePartition`1[int]:SkipAndCount(uint,System.Collections.Generic.IEnumerator`1[int]):uint (Tier1)
144 (96.00 % of base) : 496377.dasm - System.Xml.XPath.XPathNavigator:MoveToRoot():this (Tier1)
4441 (94.93 % of base) : 702125.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.Text.Json.Serialization.Tests.Point_2D_With_ExtData]:ReadConstructorArguments(byref,byref,System.Text.Json.JsonSerializerOptions):this (Tier1)
1733 (93.93 % of base) : 66004.dasm - System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.SyntaxToken]:UnionWith(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxToken]):this (Tier1)
1636 (89.20 % of base) : 123961.dasm - System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.SyntaxToken]:UnionWith(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxToken]):this (Tier1)
363 (86.63 % of base) : 406588.dasm - System.Linq.Enumerable+EnumerablePartition`1[System.__Canon]:SkipAndCount(uint,System.Collections.Generic.IEnumerator`1[System.__Canon]):uint (Tier1)
1095 (82.83 % of base) : 632708.dasm - System.Text.Encodings.Web.TextEncoder:EncodeCore(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref,byref,ubyte):int:this (Tier1-OSR)
1094 (76.61 % of base) : 461488.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
1186 (76.12 % of base) : 702311.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
637 (75.03 % of base) : 504353.dasm - System.Xml.Xsl.Qil.QilCloneVisitor:VisitChildren(System.Xml.Xsl.Qil.QilNode):System.Xml.Xsl.Qil.QilNode:this (Tier1)
691 (73.59 % of base) : 742148.dasm - Microsoft.Cci.MetadataWriter:AddCustomAttributesToTable[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],ubyte):this (Tier1)
2780 (73.47 % of base) : 628059.dasm - System.Text.DBCSCodePageEncoding:ReadBestFitTable():this (Tier1-OSR)
394 (72.29 % of base) : 748809.dasm - Microsoft.CodeAnalysis.Diagnostics.SuppressMessageAttributeState:DecodeGlobalSuppressMessageAttributes(Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.Diagnostics.SuppressMessageAttributeState+GlobalSuppressions,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.AttributeData]) (Tier1)
943 (72.09 % of base) : 70332.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalysisResultBuilder:UpdateLocalDiagnostics_NoLock[System.__Canon](Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Diagnostic],ubyte,System.Func`2[System.__Canon,System.__Canon],byref):this (Tier1)
1057 (71.23 % of base) : 536114.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
379 (70.32 % of base) : 122462.dasm - Microsoft.CodeAnalysis.Diagnostics.SuppressMessageAttributeState:DecodeGlobalSuppressMessageAttributes(Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.Diagnostics.SuppressMessageAttributeState+GlobalSuppressions,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.AttributeData]) (Tier1)
379 (70.32 % of base) : 216287.dasm - Microsoft.CodeAnalysis.Diagnostics.SuppressMessageAttributeState:DecodeGlobalSuppressMessageAttributes(Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.Diagnostics.SuppressMessageAttributeState+GlobalSuppressions,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.AttributeData]) (Tier1)
225 (69.66 % of base) : 254972.dasm - System.Collections.Frozen.FrozenSetInternalBase`2[ulong,System.Collections.Frozen.ValueTypeDefaultComparerFrozenSet`1+GSW[ulong]]:IsSubsetOfSetWithCompatibleComparer(System.Collections.Generic.IReadOnlySet`1[ulong]):ubyte:this (Tier1-OSR)
750 (69.57 % of base) : 504196.dasm - System.Xml.Xsl.Qil.QilReplaceVisitor:VisitChildren(System.Xml.Xsl.Qil.QilNode):System.Xml.Xsl.Qil.QilNode:this (Tier1)
923 (69.56 % of base) : 402528.dasm - System.Linq.Lookup`2[System.__Canon,System.__Canon]:Create(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.__Canon] (Tier1)
Top method improvements (percentages):
-59 (-12.42 % of base) : 493191.dasm - System.ValueTuple`2[System.__Canon,System.__Canon]:Equals(System.ValueTuple`2[System.__Canon,System.__Canon]):ubyte:this (Tier1)
-36 (-12.41 % of base) : 504142.dasm - System.Xml.Xsl.Qil.QilName:Equals(System.Object):ubyte:this (Tier1)
-23 (-12.30 % of base) : 727737.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (Tier1)
-23 (-12.30 % of base) : 66496.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (Tier1)
-84 (-12.23 % of base) : 681459.dasm - System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]:Equals(System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]):ubyte:this (Tier1)
-14 (-11.76 % of base) : 721452.dasm - System.Text.RegularExpressions.Generator.RegexGenerator:<EmitTryFindNextPossibleStartingPosition>g__IsValidInFieldName|24_7(System.String):ubyte (Tier1)
-17 (-11.41 % of base) : 495854.dasm - System.Xml.DocumentXPathNavigator:PreviousText(System.Xml.XmlNode):System.Xml.XmlNode:this (Tier1)
-30 (-11.32 % of base) : 684072.dasm - System.Dynamic.Utils.CacheDict`2[System.__Canon,System.__Canon]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
-30 (-11.24 % of base) : 168834.dasm - System.IO.FileSystemWatcher:Dispose(ubyte):this (Tier1)
-44 (-10.89 % of base) : 684071.dasm - System.Dynamic.Utils.TypeExtensions:GetParametersCached(System.Reflection.MethodBase):System.Reflection.ParameterInfo[] (Tier1)
-4 (-10.81 % of base) : 734309.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass1:ShouldNotSchedule(Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol):this (Tier1)
-45 (-10.25 % of base) : 450940.dasm - System.Net.Security.SslStream:ReadAsync(ubyte[],int,int,System.Threading.CancellationToken):System.Threading.Tasks.Task`1[int]:this (Tier1)
-144 (-10.18 % of base) : 720775.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol:GetUseSiteDiagnosticImpl():Microsoft.CodeAnalysis.DiagnosticInfo:this (Tier1)
-44 (-10.16 % of base) : 431971.dasm - System.Net.Security.SslStream:ReadAsync(ubyte[],int,int,System.Threading.CancellationToken):System.Threading.Tasks.Task`1[int]:this (Tier1)
-78 (-9.92 % of base) : 630741.dasm - System.Linq.Expressions.Expression:CreateLambda(System.Type,System.Linq.Expressions.Expression,System.String,ubyte,System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.ParameterExpression]):System.Linq.Expressions.LambdaExpression (Tier1)
-68 (-9.78 % of base) : 289144.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-271 (-9.54 % of base) : 727147.dasm - Microsoft.CodeAnalysis.CSharp.NullabilityRewriter:VisitConversion(Microsoft.CodeAnalysis.CSharp.BoundConversion):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
-25 (-9.43 % of base) : 163140.dasm - System.Dynamic.Utils.CacheDict`2[System.__Canon,System.__Canon]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
-37 (-9.07 % of base) : 161189.dasm - System.IO.Path:GetDirectoryName(System.String):System.String (Tier1)
-37 (-9.07 % of base) : 538972.dasm - System.IO.Path:GetDirectoryName(System.String):System.String (Tier1)
librariestestsnotieredcompilation.run.windows.x64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 149849548 (overridden on cmd)
Total bytes of diff: 149862539 (overridden on cmd)
Total bytes of delta: 12991 (0.01 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
205 : 199961.dasm (8.11 % of base)
156 : 53043.dasm (5.53 % of base)
156 : 22569.dasm (5.53 % of base)
136 : 148617.dasm (5.43 % of base)
125 : 166566.dasm (2.49 % of base)
116 : 115630.dasm (5.44 % of base)
116 : 109686.dasm (5.43 % of base)
111 : 75739.dasm (2.85 % of base)
111 : 356035.dasm (2.86 % of base)
110 : 203726.dasm (4.31 % of base)
109 : 109991.dasm (1.44 % of base)
106 : 148053.dasm (9.56 % of base)
105 : 146363.dasm (5.12 % of base)
103 : 147904.dasm (6.25 % of base)
92 : 179388.dasm (8.71 % of base)
92 : 67139.dasm (3.55 % of base)
90 : 147251.dasm (5.32 % of base)
87 : 199901.dasm (6.83 % of base)
82 : 247248.dasm (1.22 % of base)
82 : 221343.dasm (1.22 % of base)
Top file improvements (bytes):
-136 : 318889.dasm (-3.86 % of base)
-66 : 57302.dasm (-2.99 % of base)
-66 : 64416.dasm (-2.98 % of base)
-49 : 246634.dasm (-3.09 % of base)
-48 : 37442.dasm (-2.37 % of base)
-47 : 5728.dasm (-2.29 % of base)
-43 : 227793.dasm (-3.03 % of base)
-40 : 348708.dasm (-1.45 % of base)
-35 : 314416.dasm (-2.74 % of base)
-34 : 38151.dasm (-8.02 % of base)
-34 : 8210.dasm (-8.02 % of base)
-31 : 334419.dasm (-1.54 % of base)
-30 : 252146.dasm (-2.62 % of base)
-30 : 57474.dasm (-1.47 % of base)
-28 : 115925.dasm (-0.63 % of base)
-28 : 200824.dasm (-5.66 % of base)
-28 : 246636.dasm (-2.77 % of base)
-28 : 246640.dasm (-2.80 % of base)
-28 : 64515.dasm (-1.38 % of base)
-27 : 25161.dasm (-1.15 % of base)
79 total files with Code Size differences (38 improved, 41 regressed), 20 unchanged.
Top method regressions (bytes):
205 (8.11 % of base) : 199961.dasm - System.Xml.XmlSchemaTests.TestData:.cctor() (FullOpts)
156 (5.53 % of base) : 53043.dasm - Newtonsoft.Json.Utilities.JavaScriptUtils:WriteEscapedJavaScriptString(System.IO.TextWriter,System.String,ushort,ubyte,ubyte[],int,Newtonsoft.Json.IArrayPool`1[ushort],byref) (FullOpts)
156 (5.53 % of base) : 22569.dasm - Newtonsoft.Json.Utilities.JavaScriptUtils:WriteEscapedJavaScriptString(System.IO.TextWriter,System.String,ushort,ubyte,ubyte[],int,Newtonsoft.Json.IArrayPool`1[ushort],byref) (FullOpts)
136 (5.43 % of base) : 148617.dasm - System.IO.Tests.Enumeration.MatchCasingTests:MatchCase():this (FullOpts)
125 (2.49 % of base) : 166566.dasm - System.Management.PropertyData:MapValueToWmiValue(System.Object,int,ubyte):System.Object (FullOpts)
116 (5.44 % of base) : 115630.dasm - System.Data.DataTable:ParseSortString(System.String):System.Data.IndexField[]:this (FullOpts)
116 (5.43 % of base) : 109686.dasm - System.Data.DataTable:ParseSortString(System.String):System.Data.IndexField[]:this (FullOpts)
111 (2.85 % of base) : 75739.dasm - System.Xml.Serialization.XmlSerializationReader:ReadArray(System.String,System.String):System.Array:this (FullOpts)
111 (2.86 % of base) : 356035.dasm - System.Xml.Serialization.XmlSerializationReader:ReadArray(System.String,System.String):System.Array:this (FullOpts)
110 (4.31 % of base) : 203726.dasm - System.Xml.RwFactoryWriterTests.CWriterFactory:SetupSettings():this (FullOpts)
109 (1.44 % of base) : 109991.dasm - System.Data.Common.SqlConvert:ChangeTypeForXML(System.Object,System.Type):System.Object (FullOpts)
106 (9.56 % of base) : 148053.dasm - System.IO.Tests.Directory_Move:ToNewDirectoryButWithDifferentCasing():this (FullOpts)
105 (5.12 % of base) : 146363.dasm - System.IO.Compression.Tests.ZipFile_Extract:Windows_ZipWithInvalidFileNames():this (FullOpts)
103 (6.25 % of base) : 147904.dasm - System.IO.Tests.Enumeration.RecursionDepthTests:EnumerateDirectory_WithSpecifedRecursionDepth(int,int):this (FullOpts)
92 (3.55 % of base) : 67139.dasm - __OptionValidationStaticInstances.<Validators_g>FC6C8D0237F0299AAFDF6994EF736626342A9503CFB1CEAB9041E9AEC04C81065____Attributes:.cctor() (FullOpts)
92 (8.71 % of base) : 179388.dasm - Systen.Net.Mail.Tests.LoopbackSmtpServer+ParsedMailMessage:Parse(System.String):Systen.Net.Mail.Tests.LoopbackSmtpServer+ParsedMailMessage (FullOpts)
90 (5.32 % of base) : 147251.dasm - System.IO.Tests.Enumeration.MatchTypesTests:StarDotBehavior():this (FullOpts)
87 (6.83 % of base) : 199901.dasm - System.Xml.XmlSchemaValidatorApiTests.TCXmlSchemaValidatorMisc:CreateSchema1(System.String) (FullOpts)
82 (1.22 % of base) : 247248.dasm - System.Tests.StringTests:TrimWhiteSpaceMultipleTimes_Memory() (FullOpts)
82 (1.22 % of base) : 221343.dasm - System.Tests.StringTests:TrimWhiteSpaceMultipleTimes_Memory() (FullOpts)
Top method improvements (bytes):
-136 (-3.86 % of base) : 318889.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex20360_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-66 (-2.99 % of base) : 57302.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetDiagnosticsWithoutFiltering(int,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):this (FullOpts)
-66 (-2.98 % of base) : 64416.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetDiagnosticsWithoutFiltering(int,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):this (FullOpts)
-49 (-3.09 % of base) : 246634.dasm - System.Tests.BooleanTests_GenericMath:ParseValidStringTest(System.String,ubyte) (FullOpts)
-48 (-2.37 % of base) : 37442.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetDiagnosticsWithoutSeverityFiltering(int,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Predicate`1[Microsoft.CodeAnalysis.CSharp.Symbol],System.Threading.CancellationToken):this (FullOpts)
-47 (-2.29 % of base) : 5728.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetDiagnosticsWithoutSeverityFiltering(int,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Predicate`1[Microsoft.CodeAnalysis.CSharp.Symbol],System.Threading.CancellationToken):this (FullOpts)
-43 (-3.03 % of base) : 227793.dasm - (dynamicClass):ReadArrayOfKeyValueOfbooleancharFromJsonIsGetOnly(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,System.Runtime.Serialization.DataContracts.CollectionDataContract) (FullOpts)
-40 (-1.45 % of base) : 348708.dasm - System.Threading.Tasks.Tests.ParallelForTests:TestParallelForEachConversions() (FullOpts)
-35 (-2.74 % of base) : 314416.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex99_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-34 (-8.02 % of base) : 38151.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
-34 (-8.02 % of base) : 8210.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
-31 (-1.54 % of base) : 334419.dasm - NuGet.Common.NuGetEnvironment:GetFolderPath(int):System.String (FullOpts)
-30 (-1.47 % of base) : 57474.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckMembersAgainstBaseType(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):this (FullOpts)
-30 (-2.62 % of base) : 252146.dasm - System.Security.Cryptography.Cose.Tests.CoseHeaderMapTests:SetValue_InvalidCoseHeaderValue():this (FullOpts)
-28 (-1.38 % of base) : 64515.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckMembersAgainstBaseType(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):this (FullOpts)
-28 (-0.63 % of base) : 115925.dasm - System.Data.OleDb.Tests.OleDbParameterTests:OleDbParameterCollection_MultipleScenarios_Success():this (FullOpts)
-28 (-2.77 % of base) : 246636.dasm - System.Tests.BooleanTests_GenericMath:ParseInvalidSpanTest(System.String,System.Type) (FullOpts)
-28 (-2.80 % of base) : 246640.dasm - System.Tests.BooleanTests_GenericMath:ParseInvalidStringTest(System.String,System.Type) (FullOpts)
-28 (-5.66 % of base) : 200824.dasm - System.Xml.XmlReader:CheckElement(System.String,System.String):this (FullOpts)
-27 (-1.15 % of base) : 25161.dasm - Microsoft.CodeAnalysis.LanguageService.AbstractDeclaredSymbolInfoFactoryService`10[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:AddDeclaredSymbolInfos(Microsoft.CodeAnalysis.SyntaxNode,System.__Canon,Roslyn.Utilities.StringTable,System.String,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.FindSymbols.DeclaredSymbolInfo],System.Collections.Generic.Dictionary`2[System.String,System.String],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int]],System.String,System.String,System.Threading.CancellationToken):this (FullOpts)
Top method regressions (percentages):
41 (11.85 % of base) : 148058.dasm - System.IO.Tests.Directory_Move:<ThrowIOExceptionWhenMovingDirectoryToItself>b__20_0():this (FullOpts)
43 (11.20 % of base) : 199783.dasm - System.Xml.XmlSchemaValidatorApiTests.TCValidateAfterAddInvalidSchema:.cctor() (FullOpts)
63 (10.92 % of base) : 148023.dasm - System.IO.Tests.Directory_Move:DirectoryWithDifferentCasingThanFileSystem_ToAnotherDirectory():this (FullOpts)
66 (10.56 % of base) : 203735.dasm - System.Xml.Tests.CGenericTestModule:Init(System.Object):int:this (FullOpts)
70 (10.23 % of base) : 148030.dasm - System.IO.Tests.Directory_Move:DirectoryWithDifferentCasingThanFileSystem_ToItself():this (FullOpts)
77 (9.75 % of base) : 205325.dasm - System.Xml.XmlWriterApiTests.TCFullEndElement+TCWriteValue+TCXmlLang:XmlLang_5(System.Xml.XmlWriterApiTests.XmlWriterUtils):this (FullOpts)
106 (9.56 % of base) : 148053.dasm - System.IO.Tests.Directory_Move:ToNewDirectoryButWithDifferentCasing():this (FullOpts)
65 (9.08 % of base) : 148063.dasm - System.IO.Tests.Directory_Move:SameDirectoryWithDifferentCasing_WithDirectoryContent():this (FullOpts)
22 (8.91 % of base) : 148019.dasm - System.IO.Tests.Directory_Move:<WindowsWildCharacterPath_Core>b__34_0():this (FullOpts)
22 (8.91 % of base) : 147464.dasm - System.IO.Tests.File_Move:<WindowsWildCharacterPath_Core>b__19_0():this (FullOpts)
92 (8.71 % of base) : 179388.dasm - Systen.Net.Mail.Tests.LoopbackSmtpServer+ParsedMailMessage:Parse(System.String):Systen.Net.Mail.Tests.LoopbackSmtpServer+ParsedMailMessage (FullOpts)
49 (8.67 % of base) : 118699.dasm - System.Diagnostics.Tests.ProcessTests:ProcessStart_UseShellExecute_ExecuteOrder():this (FullOpts)
63 (8.51 % of base) : 148052.dasm - System.IO.Tests.Directory_Move:SameDirectoryWithDifferentCasing_WithFileContent():this (FullOpts)
56 (8.27 % of base) : 215535.dasm - System.Tests.AppDomainTests:CopyTestAssemblies():this (FullOpts)
28 (8.24 % of base) : 198850.dasm - System.Xml.XslCompiledTransformApiTests.SameInstanceXslTransformTestCase:Init(System.Object):this (FullOpts)
28 (8.24 % of base) : 197369.dasm - System.Xml.XslTransformApiTests.CSameInstanceXslTransformTestCase:Init(System.Object):this (FullOpts)
44 (8.16 % of base) : 169999.dasm - System.SpanTests.SpanTests:<EnumerateLines_Battery>g__ParseRange|145_3(System.String):System.Range (FullOpts)
32 (8.14 % of base) : 203356.dasm - System.Xml.XmlWriterApiTests.XmlWriterUtils:FullPath(System.String):System.String (FullOpts)
205 (8.11 % of base) : 199961.dasm - System.Xml.XmlSchemaTests.TestData:.cctor() (FullOpts)
78 (8.00 % of base) : 200495.dasm - System.Xml.XmlSchemaTests.TC_SchemaSet_ProhibitDTD:v15():this (FullOpts)
Top method improvements (percentages):
-34 (-8.02 % of base) : 38151.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
-34 (-8.02 % of base) : 8210.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetSynthesizedExplicitImplementations(System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
-28 (-5.66 % of base) : 200824.dasm - System.Xml.XmlReader:CheckElement(System.String,System.String):this (FullOpts)
-21 (-5.26 % of base) : 258755.dasm - System.Security.Cryptography.X509Certificates.Tests.X500DistinguishedNameEncodingTests:InvalidInput(System.String,System.String) (FullOpts)
-15 (-5.08 % of base) : 253751.dasm - System.Security.Cryptography.RSA:SignData(System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.RSASignaturePadding):ubyte[]:this (FullOpts)
-15 (-5.08 % of base) : 249749.dasm - System.Security.Cryptography.RSA:SignData(System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.RSASignaturePadding):ubyte[]:this (FullOpts)
-15 (-5.08 % of base) : 253747.dasm - System.Security.Cryptography.RSA:SignHash(System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.RSASignaturePadding):ubyte[]:this (FullOpts)
-15 (-5.08 % of base) : 249753.dasm - System.Security.Cryptography.RSA:SignHash(System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.RSASignaturePadding):ubyte[]:this (FullOpts)
-17 (-4.45 % of base) : 261884.dasm - System.Security.Cryptography.X509Certificates.Tests.PfxFormatTests_SingleCert:ReadEmptyPfx(ubyte[],System.String):this (FullOpts)
-24 (-4.08 % of base) : 261887.dasm - System.Security.Cryptography.X509Certificates.Tests.PfxFormatTests_SingleCert:ReadWrongPassword(ubyte[],System.String):this (FullOpts)
-10 (-4.00 % of base) : 38802.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:VisitNamedType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):System.Object:this (FullOpts)
-10 (-4.00 % of base) : 57666.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:VisitNamedType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):System.Object:this (FullOpts)
-10 (-4.00 % of base) : 64631.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:VisitNamedType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):System.Object:this (FullOpts)
-10 (-4.00 % of base) : 8641.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:VisitNamedType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):System.Object:this (FullOpts)
-10 (-4.00 % of base) : 11890.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:VisitNamespace(Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceSymbol,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):System.Object:this (FullOpts)
-10 (-4.00 % of base) : 38806.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:VisitNamespace(Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceSymbol,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):System.Object:this (FullOpts)
-10 (-4.00 % of base) : 57661.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:VisitNamespace(Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceSymbol,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):System.Object:this (FullOpts)
-10 (-4.00 % of base) : 64626.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:VisitNamespace(Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceSymbol,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):System.Object:this (FullOpts)
-17 (-4.00 % of base) : 252450.dasm - System.Security.Cryptography.DSA:SignData(ubyte[],int,int,System.Security.Cryptography.HashAlgorithmName,int):ubyte[]:this (FullOpts)
-12 (-3.87 % of base) : 77093.dasm - System.Xml.Serialization.XmlCustomFormatter:FromTime(System.DateTime):System.String (FullOpts)