Assembly Diffs
linux arm
Diffs are based on 2,239,012 contexts (829,328 MinOpts, 1,409,684 FullOpts).
MISSED contexts: base: 71,273 (3.08%), diff: 71,652 (3.10%)
Overall (-25,352 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.linux.arm.checked.mch |
15,290,340 |
-344 |
benchmarks.run_pgo.linux.arm.checked.mch |
63,930,056 |
-980 |
benchmarks.run_tiered.linux.arm.checked.mch |
21,546,378 |
-348 |
coreclr_tests.run.linux.arm.checked.mch |
321,751,292 |
-3,566 |
libraries.crossgen2.linux.arm.checked.mch |
34,522,594 |
-938 |
libraries.pmi.linux.arm.checked.mch |
49,852,844 |
-2,056 |
libraries_tests.run.linux.arm.Release.mch |
243,535,854 |
-13,848 |
librariestestsnotieredcompilation.run.linux.arm.Release.mch |
94,520,720 |
-3,166 |
realworld.run.linux.arm.checked.mch |
13,606,688 |
-106 |
FullOpts (-25,352 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.linux.arm.checked.mch |
14,901,138 |
-344 |
benchmarks.run_pgo.linux.arm.checked.mch |
52,730,090 |
-980 |
benchmarks.run_tiered.linux.arm.checked.mch |
12,893,378 |
-348 |
coreclr_tests.run.linux.arm.checked.mch |
109,273,704 |
-3,566 |
libraries.crossgen2.linux.arm.checked.mch |
34,521,364 |
-938 |
libraries.pmi.linux.arm.checked.mch |
49,746,620 |
-2,056 |
libraries_tests.run.linux.arm.Release.mch |
122,566,722 |
-13,848 |
librariestestsnotieredcompilation.run.linux.arm.Release.mch |
84,449,984 |
-3,166 |
realworld.run.linux.arm.checked.mch |
13,171,388 |
-106 |
Example diffs
benchmarks.run.linux.arm.checked.mch
-24 (-32.43%) : 14130.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
@@ -8,78 +8,61 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 2.50) byref -> r0 this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> r4 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> r1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> r1 class-hnd "spilling QMark2" <System.Int32>
-; V04 tmp2 [V04,T03] ( 2, 2 ) int -> r5 "impAppendStmt"
-; V05 cse0 [V05,T05] ( 3, 1 ) int -> r1 "CSE - moderate"
-; V06 cse1 [V06,T04] ( 4, 1.25) int -> r3 "CSE - moderate"
+; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> r3 class-hnd "spilling QMark2" <System.Int32>
+; V04 tmp2 [V04,T03] ( 2, 2 ) int -> r0 "impAppendStmt"
;
; Lcl frame size = 0
G_M40448_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr}
- add r11, sp, 8
- mov r4, r1
- ; gcrRegs +[r4]
- ;; size=10 bbWeight=1 PerfScore 3.00
-G_M40448_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz
- ; byrRegs +[r0]
- mov r1, r4
+ push {r11,lr}
+ mov r11, sp
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M40448_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz
; gcrRegs +[r1]
- cmp r1, 0
+ ; byrRegs +[r0]
+ mov r3, r1
+ ; gcrRegs +[r3]
+ cmp r3, 0
beq SHORT G_M40448_IG04
;; size=6 bbWeight=1 PerfScore 3.00
-G_M40448_IG03: ; bbWeight=0.25, gcrefRegs=0012 {r1 r4}, byrefRegs=0001 {r0}, byref, isz
- ldr r1, [r1]
- ; gcrRegs -[r1]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- cmp r1, r3
+G_M40448_IG03: ; bbWeight=0.25, gcrefRegs=000A {r1 r3}, byrefRegs=0001 {r0}, byref, isz
+ ldr r3, [r3]
+ ; gcrRegs -[r3]
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ cmp r3, r2
beq SHORT G_M40448_IG06
;; size=14 bbWeight=0.25 PerfScore 1.25
G_M40448_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4]
+ ; gcrRegs -[r1]
; byrRegs -[r0]
movs r0, 0
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M40448_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,pc}
+ pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M40448_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, gcvars, byref, isz
- ; gcrRegs +[r4]
- ; byrRegs +[r0]
- ldr r5, [r0]
- cmp r1, r3
- beq SHORT G_M40448_IG08
- ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M40448_IG07: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- ; byrRegs -[r0]
- mov r1, r4
+G_M40448_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, gcvars, byref, isz
; gcrRegs +[r1]
- mov r0, r3
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // CORINFO_HELP_UNBOX
- ; gcrRegs -[r1]
- ;; size=16 bbWeight=0.25 PerfScore 1.50
-G_M40448_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r4+0x04]
- cmp r5, r0
- beq SHORT G_M40448_IG09
+ ; byrRegs +[r0]
+ ldr r0, [r0]
+ ; byrRegs -[r0]
+ ldr r3, [r1+0x04]
+ cmp r0, r3
+ beq SHORT G_M40448_IG07
movs r0, 0
- b SHORT G_M40448_IG10
- ;; size=10 bbWeight=0.50 PerfScore 2.50
-G_M40448_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4]
+ b SHORT G_M40448_IG08
+ ;; size=12 bbWeight=0.50 PerfScore 3.00
+G_M40448_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r1]
movs r0, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M40448_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- pop {r4,r5,r11,pc}
+G_M40448_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 74, prolog size 8, PerfScore 14.75, instruction count 29, allocated bytes for code 74 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 50, prolog size 6, PerfScore 11.25, instruction count 20, allocated bytes for code 50 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -91,7 +74,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 74 (0x00004a)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -103,7 +86,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end
FF end
-18 (-13.85%) : 33614.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (FullOpts)
@@ -7,87 +7,78 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T05] ( 4, 4 ) struct ( 8) [sp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V01 arg1 [V01,T06] ( 4, 4 ) struct ( 8) [sp+0x18] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V02 loc0 [V02,T00] ( 7, 24.50) int -> r0
+; V00 arg0 [V00,T07] ( 4, 4 ) struct ( 8) [sp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
+; V01 arg1 [V01,T08] ( 4, 4 ) struct ( 8) [sp+0x18] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
+; V02 loc0 [V02,T00] ( 7, 24.50) int -> lr
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> r12 "dup spill"
-; V05 tmp2 [V05,T07] ( 3, 5.50) byref -> r3 single-def "V00.[000..004)"
-; V06 tmp3 [V06,T04] ( 5, 7 ) int -> r2 "V00.[004..008)"
-; V07 tmp4 [V07,T08] ( 3, 5.50) byref -> r1 single-def "V01.[000..004)"
-; V08 tmp5 [V08,T03] ( 6, 7.50) int -> lr "V01.[004..008)"
-; V09 cse0 [V09,T02] ( 6, 13.50) int -> r4 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> lr "dup spill"
+; V05 tmp2 [V05,T09] ( 2, 5 ) byref -> r0 single-def "V00.[000..004)"
+; V06 tmp3 [V06,T06] ( 4, 6.50) int -> r3 "V00.[004..008)"
+; V07 tmp4 [V07,T10] ( 2, 5 ) byref -> r2 single-def "V01.[000..004)"
+; V08 tmp5 [V08,T05] ( 5, 7 ) int -> r1 "V01.[004..008)"
+; V09 cse0 [V09,T03] ( 3, 8.50) int -> r4 "CSE - aggressive"
+; V10 cse1 [V10,T04] ( 3, 8.50) int -> r12 "CSE - aggressive"
+; V11 cse2 [V11,T02] ( 3, 12 ) int -> r12 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M264_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r0,r1,r2,r3}
- push {r4,r5,r11,lr}
+ push {r3,r4,r11,lr}
add r11, sp, 8
;; size=10 bbWeight=1 PerfScore 3.00
G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr r3, [sp+0x10]
- ; byrRegs +[r3]
- ldr r2, [sp+0x14]
- ldr r1, [sp+0x18]
- ; byrRegs +[r1]
- ldr lr, [sp+0x1C]
- cmp r2, lr
+ ldr r0, [sp+0x10]
+ ; byrRegs +[r0]
+ ldr r3, [sp+0x14]
+ ldr r2, [sp+0x18]
+ ; byrRegs +[r2]
+ ldr r1, [sp+0x1C]
+ cmp r3, r1
beq SHORT G_M264_IG04
- ;; size=14 bbWeight=1 PerfScore 6.00
+ ;; size=12 bbWeight=1 PerfScore 6.00
G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r1 r3]
- cmp r2, lr
+ ; byrRegs -[r0 r2]
+ cmp r3, r1
blt SHORT G_M264_IG11
- b SHORT G_M264_IG09
+ b SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, byref
- ; byrRegs +[r1 r3]
- mov r0, lr
+G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {r0 r2}, byref
+ ; byrRegs +[r0 r2]
+ mov lr, r1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, byref, isz
- add r12, r0, -1
- mov r0, r12
- cmp r0, 0
- blt SHORT G_M264_IG06
- cmp r0, r2
+G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {r0 r2}, byref, isz
+ add lr, lr, -1
+ cmp lr, 0
+ blt SHORT G_M264_IG09
+ cmp lr, r3
bhs SHORT G_M264_IG13
- lsls r4, r0, 2
- ldr r5, [r3+r4]
- cmp r0, lr
+ lsl r12, lr, 2
+ ldr r4, [r0+r12]
+ cmp lr, r1
bhs SHORT G_M264_IG13
- ldr r4, [r1+r4]
- cmp r5, r4
+ ldr r12, [r2+r12]
+ cmp r4, r12
beq SHORT G_M264_IG05
- ;; size=28 bbWeight=4 PerfScore 52.00
-G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, byref, isz
- cmp r12, 0
- bge SHORT G_M264_IG08
- movs r0, 0
- ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,lr}
+ ;; size=34 bbWeight=4 PerfScore 48.00
+G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[r0 r2]
+ cmp r12, r4
+ bhi SHORT G_M264_IG11
+ ;; size=4 bbWeight=0.50 PerfScore 1.00
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ movs r0, 1
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ pop {r3,r4,r11,lr}
add sp, 16
bx lr
;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M264_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, gcvars, byref, isz
- cmp r12, r2
- bhs SHORT G_M264_IG13
- lsl r4, r12, 2
- ldr r0, [r3+r4]
- cmp r12, lr
- bhs SHORT G_M264_IG13
- ldr r3, [r1+r4]
- ; byrRegs -[r3]
- cmp r0, r3
- blo SHORT G_M264_IG11
- ;; size=20 bbWeight=0.50 PerfScore 4.50
-G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[r1]
- movs r0, 1
+G_M264_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ movs r0, 0
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,lr}
+ pop {r3,r4,r11,lr}
add sp, 16
bx lr
;; size=8 bbWeight=0.50 PerfScore 1.50
@@ -95,7 +86,7 @@ G_M264_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byre
mov r0, -1
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M264_IG12: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,lr}
+ pop {r3,r4,r11,lr}
add sp, 16
bx lr
;; size=8 bbWeight=0.50 PerfScore 1.50
@@ -107,7 +98,7 @@ G_M264_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRe
bkpt
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 130, prolog size 10, PerfScore 74.50, instruction count 53, allocated bytes for code 130 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 112, prolog size 10, PerfScore 66.00, instruction count 43, allocated bytes for code 112 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -119,7 +110,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 65 (0x00041) Actual length = 130 (0x000082)
+ Function Length : 56 (0x00038) Actual length = 112 (0x000070)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -134,11 +125,11 @@ Unwind Info:
Condition : 14 (0xe) (always)
Epilog Start Index : 5 (0x05)
---- Unwind codes ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 18 pop {r3,r4,r11,lr} ; opsize 32
EC 0F pop {r0,r1,r2,r3} ; opsize 16
FF end
---- Epilog start at index 5 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 18 pop {r3,r4,r11,lr} ; opsize 32
04 add sp, sp, #16 ; opsize 16
FD end + nop ; opsize 16
FF end
-16 (-8.42%) : 28828.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
@@ -7,20 +7,21 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T05] ( 6, 22 ) int -> r0
-; V01 arg1 [V01,T06] ( 5, 18 ) int -> r4 single-def
-; V02 arg2 [V02,T08] ( 5, 11 ) ref -> r5 class-hnd single-def <int[]>
-; V03 loc0 [V03,T00] ( 17,112 ) int -> r7
-; V04 loc1 [V04,T01] ( 14,104 ) int -> r1
+; V00 arg0 [V00,T06] ( 6, 22 ) int -> r0
+; V01 arg1 [V01,T07] ( 5, 18 ) int -> r4 single-def
+; V02 arg2 [V02,T09] ( 5, 11 ) ref -> r5 class-hnd single-def <int[]>
+; V03 loc0 [V03,T00] ( 16,110 ) int -> r7
+; V04 loc1 [V04,T01] ( 11, 98 ) int -> r1
; V05 loc2 [V05,T04] ( 4, 38 ) int -> lr
-; V06 loc3 [V06,T10] ( 4, 8 ) int -> r12
+; V06 loc3 [V06,T11] ( 4, 8 ) int -> r8
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T11] ( 2, 8 ) int -> r8 "Strict ordering of exceptions for Array store"
-; V09 tmp2 [V09,T07] ( 2, 16 ) int -> r0 "arg temp"
-; V10 cse0 [V10,T02] ( 11, 51 ) byref -> r6 hoist "CSE - aggressive"
-; V11 cse1 [V11,T03] ( 7, 46 ) int -> r2 "CSE - aggressive"
-; V12 cse2 [V12,T12] ( 3, 6 ) int -> r1 "CSE - aggressive"
-; V13 cse3 [V13,T09] ( 3, 10 ) int -> r3 "CSE - aggressive"
+; V08 tmp1 [V08,T12] ( 2, 8 ) int -> r12 "Strict ordering of exceptions for Array store"
+; V09 tmp2 [V09,T08] ( 2, 16 ) int -> r0 "arg temp"
+; V10 cse0 [V10,T05] ( 3, 34 ) int -> r12 "CSE - aggressive"
+; V11 cse1 [V11,T02] ( 10, 49 ) byref -> r6 hoist "CSE - aggressive"
+; V12 cse2 [V12,T03] ( 6, 44 ) int -> r2 "CSE - aggressive"
+; V13 cse3 [V13,T13] ( 3, 6 ) int -> r1 "CSE - aggressive"
+; V14 cse4 [V14,T10] ( 3, 10 ) int -> r3 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -70,7 +71,7 @@ G_M36260_IG08: ; bbWeight=8, gcrefRegs=0020 {r5}, byrefRegs=0040 {r6}, by
;; size=2 bbWeight=8 PerfScore 8.00
G_M36260_IG09: ; bbWeight=16, gcrefRegs=0020 {r5}, byrefRegs=0040 {r6}, byref, isz
cmp r1, r7
- ble SHORT G_M36260_IG10
+ ble SHORT G_M36260_IG11
cmp r1, r2
bhs SHORT G_M36260_IG15
lsl r12, r1, 2
@@ -79,21 +80,15 @@ G_M36260_IG09: ; bbWeight=16, gcrefRegs=0020 {r5}, byrefRegs=0040 {r6}, b
bge SHORT G_M36260_IG08
;; size=20 bbWeight=16 PerfScore 128.00
G_M36260_IG10: ; bbWeight=2, gcrefRegs=0020 {r5}, byrefRegs=0040 {r6}, byref, isz
- cmp r7, r1
- bge SHORT G_M36260_IG11
cmp r7, r2
bhs SHORT G_M36260_IG15
- lsl r12, r7, 2
- ldr r12, [r6+r12]
- cmp r1, r2
- bhs SHORT G_M36260_IG15
- lsl r8, r1, 2
+ lsl r8, r7, 2
ldr r8, [r6+r8]
lsl r9, r7, 2
- str r8, [r6+r9]
- lsl r8, r1, 2
- str r12, [r6+r8]
- ;; size=44 bbWeight=2 PerfScore 28.00
+ str r12, [r6+r9]
+ lsl r12, r1, 2
+ str r8, [r6+r12]
+ ;; size=28 bbWeight=2 PerfScore 16.00
G_M36260_IG11: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0040 {r6}, byref, isz
cmp r7, r1
blt SHORT G_M36260_IG06
@@ -104,9 +99,9 @@ G_M36260_IG12: ; bbWeight=2, gcrefRegs=0020 {r5}, byrefRegs=0040 {r6}, by
cmp r7, r2
bhs SHORT G_M36260_IG15
lsls r1, r7, 2
- ldr r12, [r6+r1]
+ ldr r8, [r6+r1]
str lr, [r6+r1]
- str r12, [r6+r3]
+ str r8, [r6+r3]
;; size=18 bbWeight=2 PerfScore 12.00
G_M36260_IG13: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0040 {r6}, byref, isz
subs r1, r7, 1
@@ -134,7 +129,7 @@ G_M36260_IG15: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
bkpt
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 190, prolog size 12, PerfScore 418.00, instruction count 71, allocated bytes for code 190 (MethodHash=1870725b) for method Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
+; Total bytes of code 174, prolog size 12, PerfScore 406.00, instruction count 65, allocated bytes for code 174 (MethodHash=1870725b) for method Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
; ============================================================
Unwind Info:
@@ -146,7 +141,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 95 (0x0005f) Actual length = 190 (0x0000be)
+ Function Length : 87 (0x00057) Actual length = 174 (0x0000ae)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+14 (+1.62%) : 2771.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
@@ -11,16 +11,16 @@
; V00 arg0 [V00,T07] ( 22, 23 ) ref -> r4 class-hnd single-def <System.Collections.Generic.List`1[System.String]>
; V01 loc0 [V01,T19] ( 7, 3.50) ref -> r5 class-hnd exact single-def <System.String>
; V02 loc1 [V02 ] ( 20, 54 ) struct ( 8) [r11-0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 44,151.58) int -> r7
+; V03 loc2 [V03,T00] ( 46,185.58) int -> r7
; V04 loc3 [V04,T21] ( 4, 2 ) int -> r0
;* V05 loc4 [V05 ] ( 0, 0 ) struct ( 8) zero-ref <System.Span`1[ushort]>
-; V06 loc5 [V06,T06] ( 9, 25.50) int -> r6
+; V06 loc5 [V06,T06] ( 9, 25.50) int -> r8
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V09 tmp2 [V09,T05] ( 5, 28 ) ref -> r7 class-hnd exact "impAppendStmt" <System.String>
+; V09 tmp2 [V09,T05] ( 5, 28 ) ref -> r6 class-hnd exact "impAppendStmt" <System.String>
; V10 tmp3 [V10,T24] ( 2, 2 ) int -> r3 "Inlining Arg"
; V11 tmp4 [V11,T23] ( 2, 2 ) ref -> r2 class-hnd exact single-def "Inlining Arg" <System.String>
-; V12 tmp5 [V12,T03] ( 6, 32 ) ref -> r8 class-hnd "Inlining Arg" <System.__Canon>
+; V12 tmp5 [V12,T04] ( 6, 32 ) ref -> r7 class-hnd "Inlining Arg" <System.__Canon>
; V13 tmp6 [V13,T15] ( 2, 4 ) ubyte -> r0 "Inline return value spill temp"
; V14 tmp7 [V14,T17] ( 2, 8 ) byref -> r0 "impAppendStmt"
; V15 tmp8 [V15,T25] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
@@ -40,9 +40,9 @@
; V29 cse2 [V29,T29] ( 2, 1 ) int -> r3 "CSE - moderate"
; V30 cse3 [V30,T11] ( 3, 12 ) int -> r0 "CSE - aggressive"
; V31 cse4 [V31,T10] ( 3, 12 ) ref -> r3 "CSE - aggressive"
-; V32 cse5 [V32,T04] ( 15, 30.54) int -> r6 "CSE - aggressive"
-; V33 cse6 [V33,T02] ( 10, 46 ) byref -> r8 hoist multi-def "CSE - aggressive"
-; V34 cse7 [V34,T01] ( 3, 48 ) int -> r3 "CSE - aggressive"
+; V32 cse5 [V32,T01] ( 17, 64.54) int -> r6 "CSE - aggressive"
+; V33 cse6 [V33,T03] ( 10, 46 ) byref -> r8 hoist multi-def "CSE - aggressive"
+; V34 cse7 [V34,T02] ( 3, 48 ) int -> r3 "CSE - aggressive"
; V35 cse8 [V35,T16] ( 4, 8 ) int -> r10 "CSE - aggressive"
; V36 cse9 [V36,T12] ( 3, 12 ) int -> r3 "CSE - aggressive"
; V37 cse10 [V37,T18] ( 2, 8 ) int -> r1 "CSE - aggressive"
@@ -66,7 +66,7 @@ G_M28069_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M28069_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4+0x08]
cmp r0, 0
- beq G_M28069_IG31
+ beq G_M28069_IG30
;; size=8 bbWeight=1 PerfScore 3.00
G_M28069_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4+0x04]
@@ -74,18 +74,18 @@ G_M28069_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
movs r3, 0
ldr r2, [r0+0x04]
cmp r3, r2
- bhs G_M28069_IG34
+ bhs G_M28069_IG33
ldr r5, [r0+0x08]
; gcrRegs +[r5]
ldr r6, [r5+0x04]
cmp r6, 100
- bgt G_M28069_IG31
+ bgt G_M28069_IG30
adds r0, r6, 2
; gcrRegs -[r0]
movs r3, 2
umull r3, r2, r0, r3
cmp r2, 0
- bne G_M28069_IG33
+ bne G_M28069_IG32
tst r3, r3
beq SHORT G_M28069_IG06
adds r3, 7
@@ -108,12 +108,12 @@ G_M28069_IG05: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
;; size=4 bbWeight=0.50 PerfScore 1.00
G_M28069_IG06: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
cmp r0, 0
- blt G_M28069_IG35
+ blt G_M28069_IG34
str r3, [r9+0x08] // [V17 tmp10]
str r0, [r9+0x0C] // [V18 tmp11]
movs r7, 0
cmp r6, 0
- ble SHORT G_M28069_IG15
+ ble SHORT G_M28069_IG14
add r8, r5, 8
; byrRegs +[r8]
;; size=24 bbWeight=0.50 PerfScore 4.00
@@ -121,107 +121,105 @@ G_M28069_IG07: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8},
lsls r0, r7, 1
ldrh r0, [r8+r0]
cmp r0, 39
- bne SHORT G_M28069_IG11
+ bne SHORT G_M28069_IG10
;; size=10 bbWeight=4 PerfScore 16.00
G_M28069_IG08: ; bbWeight=16, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
ldr r0, [r9+0x0C] // [V18 tmp11]
cmp r7, r0
- bhs G_M28069_IG34
+ bhs G_M28069_IG33
ldr r0, [r9+0x08] // [V17 tmp10]
; byrRegs +[r0]
lsls r3, r7, 1
+ cmp r7, r6
+ bhs G_M28069_IG33
ldrh r2, [r8+r3]
strh r2, [r0+r3]
adds r7, r7, 1
cmp r6, r7
- ble SHORT G_M28069_IG09
+ ble G_M28069_IG30
+ cmp r7, r6
+ bhs G_M28069_IG33
lsls r0, r7, 1
; byrRegs -[r0]
ldrh r0, [r8+r0]
cmp r0, 39
bne SHORT G_M28069_IG08
- ;; size=38 bbWeight=16 PerfScore 224.00
-G_M28069_IG09: ; bbWeight=2, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
- cmp r6, r7
- bgt SHORT G_M28069_IG12
- ;; size=4 bbWeight=2 PerfScore 4.00
-G_M28069_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r4-r5]
- ; byrRegs -[r8]
- b SHORT G_M28069_IG31
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M28069_IG11: ; bbWeight=2, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
- ; gcrRegs +[r4-r5]
- ; byrRegs +[r8]
+ ;; size=52 bbWeight=16 PerfScore 288.00
+G_M28069_IG09: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
+ b SHORT G_M28069_IG11
+ ;; size=2 bbWeight=4 PerfScore 4.00
+G_M28069_IG10: ; bbWeight=2, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
cmp r0, 121
- beq SHORT G_M28069_IG14
+ beq SHORT G_M28069_IG13
;; size=4 bbWeight=2 PerfScore 4.00
-G_M28069_IG12: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
+G_M28069_IG11: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
ldr r0, [r9+0x0C] // [V18 tmp11]
cmp r7, r0
- bhs G_M28069_IG34
+ bhs G_M28069_IG33
ldr r0, [r9+0x08] // [V17 tmp10]
; byrRegs +[r0]
lsls r3, r7, 1
+ cmp r7, r6
+ bhs G_M28069_IG33
ldrh r2, [r8+r3]
strh r2, [r0+r3]
adds r7, r7, 1
cmp r6, r7
bgt SHORT G_M28069_IG07
- ;; size=28 bbWeight=4 PerfScore 40.00
-G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ ;; size=34 bbWeight=4 PerfScore 48.00
+G_M28069_IG12: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r0 r8]
- b SHORT G_M28069_IG15
+ b SHORT G_M28069_IG14
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
ldr r0, [r9+0x0C] // [V18 tmp11]
cmp r7, r0
- bhs G_M28069_IG34
+ bhs G_M28069_IG33
ldr r0, [r9+0x08] // [V17 tmp10]
; byrRegs +[r0]
lsls r3, r7, 1
movs r2, 121
strh r2, [r0+r3]
;; size=20 bbWeight=0.50 PerfScore 3.50
-G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r0]
subs r0, r6, 1
cmp r0, r7
- ble G_M28069_IG31
+ ble G_M28069_IG30
adds r0, r7, 1
cmp r0, r6
- bhs G_M28069_IG34
+ bhs G_M28069_IG33
add r8, r5, 8
; byrRegs +[r8]
lsls r0, r7, 1
add r10, r0, 2
ldrh r0, [r8+r10]
cmp r0, 121
- bne G_M28069_IG31
+ bne G_M28069_IG30
adds r0, r7, 2
cmp r6, r0
- ble SHORT G_M28069_IG16
+ ble SHORT G_M28069_IG15
adds r0, r7, 2
cmp r0, r6
- bhs G_M28069_IG34
+ bhs G_M28069_IG33
lsls r0, r7, 1
adds r0, r0, 4
ldrh r0, [r8+r0]
cmp r0, 121
- beq G_M28069_IG31
+ beq G_M28069_IG30
;; size=64 bbWeight=0.50 PerfScore 11.50
-G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
+G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
adds r0, r7, 3
ldr r3, [r9+0x0C] // [V18 tmp11]
cmp r0, r3
- blt SHORT G_M28069_IG17
+ blt SHORT G_M28069_IG16
movs r0, 0
- b SHORT G_M28069_IG18
+ b SHORT G_M28069_IG17
;; size=14 bbWeight=0.50 PerfScore 3.00
-G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref
+G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref
movs r0, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M28069_IG18: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
+G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
@@ -230,7 +228,7 @@ G_M28069_IG18: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r
adds r0, r7, 1
ldr r3, [r9+0x0C] // [V18 tmp11]
cmp r0, r3
- bhs G_M28069_IG34
+ bhs G_M28069_IG33
ldr r0, [r9+0x08] // [V17 tmp10]
; byrRegs +[r0]
movs r3, 121
@@ -239,7 +237,7 @@ G_M28069_IG18: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r
; byrRegs -[r0]
ldr r3, [r9+0x0C] // [V18 tmp11]
cmp r0, r3
- bhs G_M28069_IG34
+ bhs G_M28069_IG33
ldr r0, [r9+0x08] // [V17 tmp10]
; byrRegs +[r0]
lsls r3, r7, 1
@@ -250,7 +248,7 @@ G_M28069_IG18: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r
; byrRegs -[r0]
ldr r3, [r9+0x0C] // [V18 tmp11]
cmp r0, r3
- bhs G_M28069_IG34
+ bhs G_M28069_IG33
ldr r0, [r9+0x08] // [V17 tmp10]
; byrRegs +[r0]
lsls r3, r7, 1
@@ -258,16 +256,16 @@ G_M28069_IG18: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r
...
+10 (+2.84%) : 7370.dasm - System.IO.Path:TryJoin(System.ReadOnlySpan1[ushort],System.ReadOnlySpan
1[ushort],System.Span`1[ushort],byref):ubyte (FullOpts)
@@ -16,7 +16,7 @@
; V05 loc1 [V05,T21] ( 3, 1.50) int -> r10
;* V06 loc2 [V06 ] ( 0, 0 ) byref -> zero-ref single-def
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T07] ( 5, 2.50) byref -> r7
+; V08 tmp1 [V08,T07] ( 5, 2.50) byref -> r9
; V09 tmp2 [V09,T22] ( 3, 1.50) int -> r0
;* V10 tmp3 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V11 tmp4 [V11,T05] ( 3, 3 ) int -> r0 "Span.get_Item index"
@@ -103,22 +103,22 @@ G_M17254_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}
ldr r8, [sp+0x34]
cmp r8, 0
bne SHORT G_M17254_IG07
- add r7, sp, 40
- ; byrRegs +[r7]
+ addw r9, sp, 40
+ ; byrRegs +[r9]
b SHORT G_M17254_IG06
- ;; size=14 bbWeight=0.50 PerfScore 2.50
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
G_M17254_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref
- ; byrRegs -[r7]
- add r7, sp, 48
- ; byrRegs +[r7]
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M17254_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00B0 {r4 r5 r7}, byref, isz
- ldr r2, [r7+0x04]
+ ; byrRegs -[r9]
+ addw r9, sp, 48
+ ; byrRegs +[r9]
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M17254_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0230 {r4 r5 r9}, byref, isz
+ ldr r2, [r9+0x04]
cmp r6, r2
blt SHORT G_M17254_IG17
cmp r2, r6
bhi G_M17254_IG26
- ldr r1, [r7]
+ ldr r1, [r9]
; byrRegs +[r1]
lsls r2, r2, 1
mov r0, r5
@@ -128,12 +128,12 @@ G_M17254_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00B0 {r4 r5
ldr r3, [r3]
blx r3 // <unknown method>
; byrRegs -[r0-r1 r5]
- ldr r0, [r7+0x04]
+ ldr r0, [r9+0x04]
str r0, [r4]
b SHORT G_M17254_IG22
- ;; size=36 bbWeight=0.50 PerfScore 7.50
+ ;; size=42 bbWeight=0.50 PerfScore 7.50
G_M17254_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
- ; byrRegs -[r7] +[r5]
+ ; byrRegs -[r9] +[r5]
ldr r1, [sp+0x28]
; byrRegs +[r1]
mov r0, r1
@@ -291,7 +291,7 @@ G_M17254_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bkpt
;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 352, prolog size 10, PerfScore 69.00, instruction count 140, allocated bytes for code 352 (MethodHash=7c1abc99) for method System.IO.Path:TryJoin(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (FullOpts)
+; Total bytes of code 362, prolog size 10, PerfScore 69.00, instruction count 140, allocated bytes for code 362 (MethodHash=7c1abc99) for method System.IO.Path:TryJoin(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -303,7 +303,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 176 (0x000b0) Actual length = 352 (0x000160)
+ Function Length : 181 (0x000b5) Actual length = 362 (0x00016a)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+34 (+3.23%) : 2143.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
@@ -10,14 +10,14 @@
;
; V00 this [V00,T00] ( 27, 55.50) byref -> r4 this single-def
; V01 arg1 [V01,T19] ( 4, 3.50) byref -> r5 single-def
-; V02 loc0 [V02,T01] ( 18, 55.50) ushort -> r8
+; V02 loc0 [V02,T01] ( 18, 57.50) ushort -> r8
; V03 loc1 [V03 ] ( 36, 70.50) struct (16) [r11-0x30] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Text.ValueStringBuilder>
-; V04 loc2 [V04,T04] ( 8, 16 ) ushort -> [r11-0x34]
+; V04 loc2 [V04,T09] ( 6, 8 ) ushort -> [r11-0x34]
;* V05 loc3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref <System.Span`1[ushort]>
;* V06 loc4 [V06 ] ( 0, 0 ) int -> zero-ref
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V09 tmp2 [V09,T07] ( 5, 14.50) ushort -> r7 "Inline stloc first use temp"
+; V09 tmp2 [V09,T06] ( 5, 14.50) ushort -> r7 "Inline stloc first use temp"
; V10 tmp3 [V10,T10] ( 4, 8 ) int -> r0 "Inline stloc first use temp"
;* V11 tmp4 [V11 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
; V12 tmp5 [V12,T32] ( 2, 2 ) int -> r0 "Inlining Arg"
@@ -37,14 +37,14 @@
;* V26 tmp19 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
; V27 tmp20 [V27,T16] ( 4, 8 ) int -> r0 "Inline stloc first use temp"
;* V28 tmp21 [V28 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
-; V29 tmp22 [V29,T09] ( 4, 10 ) ushort -> r8 "Inline stloc first use temp"
+; V29 tmp22 [V29,T08] ( 4, 10 ) ushort -> r8 "Inline stloc first use temp"
; V30 tmp23 [V30,T17] ( 4, 8 ) int -> r0 "Inline stloc first use temp"
;* V31 tmp24 [V31 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V32 tmp25 [V32,T05] ( 4, 16 ) int -> r4 "Inlining Arg"
+; V32 tmp25 [V32,T04] ( 4, 16 ) int -> r4 "Inlining Arg"
;* V33 tmp26 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V34 tmp27 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V35 tmp28 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V36 tmp29 [V36,T03] ( 4, 32 ) int -> r4 "Inlining Arg"
+; V36 tmp29 [V36,T03] ( 4, 32 ) int -> r8 "Inlining Arg"
;* V37 tmp30 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V38 tmp31 [V38 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP
;* V39 tmp32 [V39 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x4)" P-INDEP
@@ -63,8 +63,8 @@
; V52 GsCookie [V52 ] ( 1, 1 ) int -> [r11-0x38] do-not-enreg[X] addr-exposed "GSSecurityCookie"
; V53 cse0 [V53,T18] ( 5, 7 ) int -> r7 multi-def "CSE - moderate"
; V54 cse1 [V54,T33] ( 3, 1.50) int -> r0 "CSE - conservative"
-; V55 cse2 [V55,T06] ( 4, 16 ) int -> r0 "CSE - aggressive"
-; V56 cse3 [V56,T08] ( 8, 14 ) ref -> r6 "CSE - aggressive"
+; V55 cse2 [V55,T05] ( 4, 16 ) int -> r0 "CSE - aggressive"
+; V56 cse3 [V56,T07] ( 8, 14 ) ref -> r6 "CSE - aggressive"
; TEMP_01 ref -> [r11-0x3C]
;
; Lcl frame size = 36
@@ -106,7 +106,7 @@ G_M25128_IG03: ; bbWeight=8, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5},
ldr r0, [r4+0x08]
ldr r3, [r4+0x04]
cmp r0, r3
- bge G_M25128_IG24
+ bge G_M25128_IG20
;; size=10 bbWeight=8 PerfScore 32.00
G_M25128_IG04: ; bbWeight=2, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
ldr r0, [r4+0x08]
@@ -114,25 +114,25 @@ G_M25128_IG04: ; bbWeight=2, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5},
str r3, [r4+0x08]
ldr r3, [r4+0x04]
cmp r0, r3
- bhs G_M25128_IG57
+ bhs G_M25128_IG55
ldr r3, [r4]
; byrRegs +[r3]
lsls r0, r0, 1
ldrh r7, [r3+r0]
cmp r7, 0
- beq G_M25128_IG58
+ beq G_M25128_IG56
;; size=26 bbWeight=2 PerfScore 22.00
G_M25128_IG05: ; bbWeight=8, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
; byrRegs -[r3]
mov r8, r7
cmp r8, 0
- beq G_M25128_IG29
+ beq G_M25128_IG25
;; size=10 bbWeight=8 PerfScore 24.00
G_M25128_IG06: ; bbWeight=4, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
cmp r8, 44
- beq G_M25128_IG25
+ beq G_M25128_IG21
cmp r8, 61
- beq G_M25128_IG27
+ beq G_M25128_IG23
mov r0, r8
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -167,132 +167,144 @@ G_M25128_IG10: ; bbWeight=0.50, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r
ldr r0, [r4+0x08]
ldr r1, [r4+0x04]
cmp r0, r1
- bge G_M25128_IG31
+ bge G_M25128_IG27
adds r1, r0, 1
str r1, [r4+0x08]
ldr r1, [r4+0x04]
cmp r0, r1
- bhs G_M25128_IG57
+ bhs G_M25128_IG55
ldr r1, [r4]
; byrRegs +[r1]
lsls r0, r0, 1
ldrh r8, [r1+r0]
cmp r8, 0
- beq G_M25128_IG58
+ beq G_M25128_IG56
;; size=40 bbWeight=0.50 PerfScore 7.50
G_M25128_IG11: ; bbWeight=4, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
; byrRegs -[r1]
cmp r8, 0
- beq G_M25128_IG46
+ beq G_M25128_IG44
cmp r3, 0
- beq SHORT G_M25128_IG13
- ;; size=12 bbWeight=4 PerfScore 16.00
+ beq G_M25128_IG28
+ ;; size=14 bbWeight=4 PerfScore 16.00
G_M25128_IG12: ; bbWeight=2, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
cmp r8, r3
- beq G_M25128_IG47
+ beq G_M25128_IG45
;; size=6 bbWeight=2 PerfScore 4.00
G_M25128_IG13: ; bbWeight=4, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
- cmp r3, 0
- bne SHORT G_M25128_IG15
- ;; size=4 bbWeight=4 PerfScore 8.00
-G_M25128_IG14: ; bbWeight=2, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
- cmp r8, 44
- beq G_M25128_IG53
- cmp r8, 61
- beq G_M25128_IG53
- ;; size=16 bbWeight=2 PerfScore 8.00
-G_M25128_IG15: ; bbWeight=4, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
- str r3, [r9+0x0C]
- cmp r3, 0
- bne SHORT G_M25128_IG17
- ;; size=8 bbWeight=4 PerfScore 12.00
-G_M25128_IG16: ; bbWeight=2, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
- cmp r8, 39
- beq G_M25128_IG58
- cmp r8, 34
- beq G_M25128_IG58
- ;; size=16 bbWeight=2 PerfScore 8.00
-G_M25128_IG17: ; bbWeight=4, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
cmp r8, 92
- bne G_M25128_IG43
+ bne G_M25128_IG41
;; size=8 bbWeight=4 PerfScore 8.00
-G_M25128_IG18: ; bbWeight=2, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
+G_M25128_IG14: ; bbWeight=2, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
ldr r7, [r4+0x08]
ldr r0, [r4+0x04]
cmp r7, r0
- bge SHORT G_M25128_IG32
+ bge G_M25128_IG30
adds r0, r7, 1
str r0, [r4+0x08]
ldr r0, [r4+0x04]
cmp r7, r0
- bhs G_M25128_IG57
+ bhs G_M25128_IG55
ldr r0, [r4]
; byrRegs +[r0]
lsls r1, r7, 1
ldrh r1, [r0+r1]
cmp r1, 0
- beq G_M25128_IG58
- ;; size=32 bbWeight=2 PerfScore 28.00
-G_M25128_IG19: ; bbWeight=2, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
+ beq G_M25128_IG56
+ ;; size=34 bbWeight=2 PerfScore 28.00
+G_M25128_IG15: ; bbWeight=2, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
; byrRegs -[r0]
cmp r1, 61
- bhi SHORT G_M25128_IG34
+ bhi SHORT G_M25128_IG32
cmp r1, 39
- bhi SHORT G_M25128_IG33
+ bhi SHORT G_M25128_IG31
cmp r1, 34
- beq SHORT G_M25128_IG20
+ beq SHORT G_M25128_IG16
cmp r1, 39
- bne G_M25128_IG58
+ bne G_M25128_IG56
;; size=18 bbWeight=2 PerfScore 16.00
-G_M25128_IG20: ; bbWeight=2, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
+G_M25128_IG16: ; bbWeight=2, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
ldr r0, [r9+0x14]
ldr r2, [r9+0x18]
; byrRegs +[r2]
ldr lr, [r9+0x1C]
cmp r0, lr
- bhs SHORT G_M25128_IG36
+ bhs SHORT G_M25128_IG34
lsl lr, r0, 1
strh r1, [r2+lr]
adds r0, r0, 1
str r0, [r9+0x14]
;; size=30 bbWeight=2 PerfScore 18.00
-G_M25128_IG21: ; bbWeight=4, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
+G_M25128_IG17: ; bbWeight=4, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
; byrRegs -[r2]
ldr r0, [r4+0x08]
- ldr r1, [r4+0x04]
- cmp r0, r1
- bge G_M25128_IG45
+ ldr r2, [r4+0x04]
+ cmp r0, r2
+ bge G_M25128_IG43
;; size=10 bbWeight=4 PerfScore 16.00
-G_M25128_IG22: ; bbWeight=2, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
+G_M25128_IG18: ; bbWeight=2, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
ldr r0, [r4+0x08]
- adds r1, r0, 1
- str r1, [r4+0x08]
- ldr r1, [r4+0x04]
- cmp r0, r1
- bhs G_M25128_IG57
- ldr r1, [r4]
- ; byrRegs +[r1]
+ adds r2, r0, 1
+ str r2, [r4+0x08]
+ ldr r2, [r4+0x04]
+ cmp r0, r2
+ bhs G_M25128_IG55
+ ldr r2, [r4]
+ ; byrRegs +[r2]
lsls r0, r0, 1
- ldrh r8, [r1+r0]
+ ldrh r8, [r2+r0]
cmp r8, 0
- beq G_M25128_IG58
+ beq G_M25128_IG56
;; size=30 bbWeight=2 PerfScore 22.00
-G_M25128_IG23: ; bbWeight=4, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
- ; byrRegs -[r1]
- ldr r3, [r9+0x0C] // [V04 loc2]
+G_M25128_IG19: ; bbWeight=4, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
+ ; byrRegs -[r2]
b SHORT G_M25128_IG11
- ;; size=6 bbWeight=4 PerfScore 8.00
-G_M25128_IG24: ; bbWeight=2, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
+ ;; size=2 bbWeight=4 PerfScore 4.00
+G_M25128_IG20: ; bbWeight=2, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
movs r7, 0
b SHORT G_M25128_IG05
;; size=4 bbWeight=2 PerfScore 4.00
-G_M25128_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M25128_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
...
benchmarks.run_pgo.linux.arm.checked.mch
-24 (-32.43%) : 19845.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
@@ -9,81 +9,64 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 3 ) byref -> r5 this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> r4 class-hnd single-def <System.Object>
+; V00 this [V00,T02] ( 3, 3 ) byref -> r0 this single-def
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> r1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> r0 class-hnd "spilling QMark2" <System.Reflection.MetadataImport>
+; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> r3 class-hnd "spilling QMark2" <System.Reflection.MetadataImport>
;* V04 tmp2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.MetadataImport>
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref "field V04.m_keepalive (fldOffset=0x0)" P-INDEP
-; V06 tmp4 [V06,T05] ( 2, 2 ) int -> r0 "field V04.m_metadataImport2 (fldOffset=0x4)" P-INDEP
-; V07 cse0 [V07,T04] ( 3, 2 ) int -> r1 "CSE - aggressive"
-; V08 cse1 [V08,T03] ( 4, 2.50) int -> r0 "CSE - aggressive"
+; V06 tmp4 [V06,T03] ( 2, 2 ) int -> r3 "field V04.m_metadataImport2 (fldOffset=0x4)" P-INDEP
;
; Lcl frame size = 0
G_M38955_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr}
- add r11, sp, 8
- mov r5, r0
- ; byrRegs +[r5]
- mov r4, r1
- ; gcrRegs +[r4]
- ;; size=12 bbWeight=1 PerfScore 4.00
-G_M38955_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
- mov r0, r4
- ; gcrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M38955_IG09
+ push {r11,lr}
+ mov r11, sp
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M38955_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz
+ ; gcrRegs +[r1]
+ ; byrRegs +[r0]
+ mov r3, r1
+ ; gcrRegs +[r3]
+ cmp r3, 0
+ bne SHORT G_M38955_IG05
;; size=6 bbWeight=1 PerfScore 3.00
-G_M38955_IG03: ; bbWeight=0.50, gcrefRegs=0011 {r0 r4}, byrefRegs=0020 {r5}, byref, isz
- ldr r1, [r0]
- movw r0, 0xd1ff
- ; gcrRegs -[r0]
- movt r0, 0xd1ff
- cmp r1, r0
- bne SHORT G_M38955_IG09
- ;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M38955_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
- cmp r1, r0
- bne SHORT G_M38955_IG08
- ;; size=4 bbWeight=1 PerfScore 2.00
-G_M38955_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
- ldr r0, [r4+0x08]
- ldr r3, [r5+0x04]
- cmp r0, r3
- beq SHORT G_M38955_IG06
+G_M38955_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r1 r3]
+ ; byrRegs -[r0]
movs r0, 0
- b SHORT G_M38955_IG07
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M38955_IG04: ; bbWeight=1, epilog, nogc, extend
+ pop {r11,pc}
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M38955_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000A {r1 r3}, byrefRegs=0001 {r0}, gcvars, byref, isz
+ ; gcrRegs +[r1 r3]
+ ; byrRegs +[r0]
+ ldr r3, [r3]
+ ; gcrRegs -[r3]
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ cmp r3, r2
+ bne SHORT G_M38955_IG03
+ ;; size=14 bbWeight=0.50 PerfScore 2.50
+G_M38955_IG06: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz
+ ldr r3, [r1+0x08]
+ ldr r0, [r0+0x04]
+ ; byrRegs -[r0]
+ cmp r3, r0
+ beq SHORT G_M38955_IG07
+ movs r0, 0
+ b SHORT G_M38955_IG08
;; size=12 bbWeight=1 PerfScore 6.00
-G_M38955_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4]
- ; byrRegs -[r5]
+G_M38955_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r1]
movs r0, 1
;; size=2 bbWeight=1 PerfScore 1.00
-G_M38955_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- pop {r4,r5,r11,pc}
+G_M38955_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop {r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M38955_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, gcvars, byref, isz
- ; gcrRegs +[r4]
- ; byrRegs +[r5]
- mov r1, r4
- ; gcrRegs +[r1]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_UNBOX
- ; gcrRegs -[r1]
- b SHORT G_M38955_IG05
- ;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M38955_IG09: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4]
- ; byrRegs -[r5]
- movs r0, 0
- ;; size=2 bbWeight=0.25 PerfScore 0.25
-G_M38955_IG10: ; bbWeight=0.25, epilog, nogc, extend
- pop {r4,r5,r11,pc}
- ;; size=4 bbWeight=0.25 PerfScore 0.25
-; Total bytes of code 74, prolog size 8, PerfScore 22.50, instruction count 29, allocated bytes for code 74 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 50, prolog size 6, PerfScore 17.50, instruction count 20, allocated bytes for code 50 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -95,7 +78,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 74 (0x00004a)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -107,7 +90,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end
FF end
-24 (-32.43%) : 13211.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
@@ -9,81 +9,64 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 3 ) byref -> r5 this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> r4 class-hnd single-def <System.Object>
+; V00 this [V00,T02] ( 3, 3 ) byref -> r0 this single-def
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> r1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> r0 class-hnd "spilling QMark2" <System.Reflection.MetadataImport>
+; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> r3 class-hnd "spilling QMark2" <System.Reflection.MetadataImport>
;* V04 tmp2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.MetadataImport>
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref "field V04.m_keepalive (fldOffset=0x0)" P-INDEP
-; V06 tmp4 [V06,T05] ( 2, 2 ) int -> r0 "field V04.m_metadataImport2 (fldOffset=0x4)" P-INDEP
-; V07 cse0 [V07,T04] ( 3, 2 ) int -> r1 "CSE - aggressive"
-; V08 cse1 [V08,T03] ( 4, 2.50) int -> r0 "CSE - aggressive"
+; V06 tmp4 [V06,T03] ( 2, 2 ) int -> r3 "field V04.m_metadataImport2 (fldOffset=0x4)" P-INDEP
;
; Lcl frame size = 0
G_M38955_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr}
- add r11, sp, 8
- mov r5, r0
- ; byrRegs +[r5]
- mov r4, r1
- ; gcrRegs +[r4]
- ;; size=12 bbWeight=1 PerfScore 4.00
-G_M38955_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
- mov r0, r4
- ; gcrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M38955_IG09
+ push {r11,lr}
+ mov r11, sp
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M38955_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz
+ ; gcrRegs +[r1]
+ ; byrRegs +[r0]
+ mov r3, r1
+ ; gcrRegs +[r3]
+ cmp r3, 0
+ bne SHORT G_M38955_IG05
;; size=6 bbWeight=1 PerfScore 3.00
-G_M38955_IG03: ; bbWeight=0.50, gcrefRegs=0011 {r0 r4}, byrefRegs=0020 {r5}, byref, isz
- ldr r1, [r0]
- movw r0, 0xd1ff
- ; gcrRegs -[r0]
- movt r0, 0xd1ff
- cmp r1, r0
- bne SHORT G_M38955_IG09
- ;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M38955_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
- cmp r1, r0
- bne SHORT G_M38955_IG08
- ;; size=4 bbWeight=1 PerfScore 2.00
-G_M38955_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
- ldr r0, [r4+0x08]
- ldr r3, [r5+0x04]
- cmp r0, r3
- beq SHORT G_M38955_IG06
+G_M38955_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r1 r3]
+ ; byrRegs -[r0]
movs r0, 0
- b SHORT G_M38955_IG07
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M38955_IG04: ; bbWeight=1, epilog, nogc, extend
+ pop {r11,pc}
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M38955_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000A {r1 r3}, byrefRegs=0001 {r0}, gcvars, byref, isz
+ ; gcrRegs +[r1 r3]
+ ; byrRegs +[r0]
+ ldr r3, [r3]
+ ; gcrRegs -[r3]
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ cmp r3, r2
+ bne SHORT G_M38955_IG03
+ ;; size=14 bbWeight=0.50 PerfScore 2.50
+G_M38955_IG06: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz
+ ldr r3, [r1+0x08]
+ ldr r0, [r0+0x04]
+ ; byrRegs -[r0]
+ cmp r3, r0
+ beq SHORT G_M38955_IG07
+ movs r0, 0
+ b SHORT G_M38955_IG08
;; size=12 bbWeight=1 PerfScore 6.00
-G_M38955_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4]
- ; byrRegs -[r5]
+G_M38955_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r1]
movs r0, 1
;; size=2 bbWeight=1 PerfScore 1.00
-G_M38955_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- pop {r4,r5,r11,pc}
+G_M38955_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop {r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M38955_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, gcvars, byref, isz
- ; gcrRegs +[r4]
- ; byrRegs +[r5]
- mov r1, r4
- ; gcrRegs +[r1]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_UNBOX
- ; gcrRegs -[r1]
- b SHORT G_M38955_IG05
- ;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M38955_IG09: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4]
- ; byrRegs -[r5]
- movs r0, 0
- ;; size=2 bbWeight=0.25 PerfScore 0.25
-G_M38955_IG10: ; bbWeight=0.25, epilog, nogc, extend
- pop {r4,r5,r11,pc}
- ;; size=4 bbWeight=0.25 PerfScore 0.25
-; Total bytes of code 74, prolog size 8, PerfScore 22.50, instruction count 29, allocated bytes for code 74 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 50, prolog size 6, PerfScore 17.50, instruction count 20, allocated bytes for code 50 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -95,7 +78,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 74 (0x00004a)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -107,7 +90,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end
FF end
-22 (-30.56%) : 24101.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
@@ -9,76 +9,64 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 3 ) byref -> r5 this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> r4 class-hnd single-def <System.Object>
+; V00 this [V00,T02] ( 3, 3 ) byref -> r0 this single-def
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> r1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> r1 class-hnd "spilling QMark2" <System.Reflection.MetadataImport>
+; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> r3 class-hnd "spilling QMark2" <System.Reflection.MetadataImport>
;* V04 tmp2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.MetadataImport>
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref "field V04.m_keepalive (fldOffset=0x0)" P-INDEP
-; V06 tmp4 [V06,T05] ( 2, 2 ) int -> r0 "field V04.m_metadataImport2 (fldOffset=0x4)" P-INDEP
-; V07 cse0 [V07,T04] ( 3, 2 ) int -> r1 "CSE - aggressive"
-; V08 cse1 [V08,T03] ( 4, 2.50) int -> r0 "CSE - aggressive"
+; V06 tmp4 [V06,T03] ( 2, 2 ) int -> r3 "field V04.m_metadataImport2 (fldOffset=0x4)" P-INDEP
;
; Lcl frame size = 0
-G_M38955_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr}
- add r11, sp, 8
- mov r5, r0
- ; byrRegs +[r5]
- mov r4, r1
- ; gcrRegs +[r4]
- ;; size=12 bbWeight=1 PerfScore 4.00
-G_M38955_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
- mov r1, r4
+G_M38955_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push {r11,lr}
+ mov r11, sp
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M38955_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz
; gcrRegs +[r1]
- cmp r1, 0
- beq SHORT G_M38955_IG09
+ ; byrRegs +[r0]
+ mov r3, r1
+ ; gcrRegs +[r3]
+ cmp r3, 0
+ beq SHORT G_M38955_IG04
;; size=6 bbWeight=1 PerfScore 3.00
-G_M38955_IG03: ; bbWeight=0.50, gcrefRegs=0012 {r1 r4}, byrefRegs=0020 {r5}, byref, isz
- ldr r1, [r1]
- ; gcrRegs -[r1]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- cmp r1, r0
- bne SHORT G_M38955_IG09
- ;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M38955_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
- cmp r1, r0
+G_M38955_IG03: ; bbWeight=0.50, gcrefRegs=000A {r1 r3}, byrefRegs=0001 {r0}, byref, isz
+ ldr r3, [r3]
+ ; gcrRegs -[r3]
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ cmp r3, r2
beq SHORT G_M38955_IG06
- ;; size=4 bbWeight=1 PerfScore 2.00
-G_M38955_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref
- mov r1, r4
- ; gcrRegs +[r1]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_UNBOX
+ ;; size=14 bbWeight=0.50 PerfScore 2.50
+G_M38955_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r1]
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M38955_IG06: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
- ldr r0, [r4+0x08]
- ldr r3, [r5+0x04]
- cmp r0, r3
+ ; byrRegs -[r0]
+ movs r0, 0
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M38955_IG05: ; bbWeight=1, epilog, nogc, extend
+ pop {r11,pc}
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M38955_IG06: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, gcvars, byref, isz
+ ; gcrRegs +[r1]
+ ; byrRegs +[r0]
+ ldr r3, [r1+0x08]
+ ldr r0, [r0+0x04]
+ ; byrRegs -[r0]
+ cmp r3, r0
beq SHORT G_M38955_IG07
movs r0, 0
b SHORT G_M38955_IG08
;; size=12 bbWeight=1 PerfScore 6.00
G_M38955_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4]
- ; byrRegs -[r5]
+ ; gcrRegs -[r1]
movs r0, 1
;; size=2 bbWeight=1 PerfScore 1.00
G_M38955_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- pop {r4,r5,r11,pc}
+ pop {r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M38955_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- movs r0, 0
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M38955_IG10: ; bbWeight=0, epilog, nogc, extend
- pop {r4,r5,r11,pc}
- ;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 72, prolog size 8, PerfScore 21.50, instruction count 28, allocated bytes for code 72 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 50, prolog size 6, PerfScore 17.50, instruction count 20, allocated bytes for code 50 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -90,7 +78,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 36 (0x00024) Actual length = 72 (0x000048)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -102,7 +90,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end
FF end
+18 (+5.59%) : 53679.dasm - System.Text.Ascii:ChangeCaseushort,ushort,System.Text.Ascii+ToLowerConversion:int (Tier1)
@@ -13,12 +13,12 @@
; V01 arg1 [V01,T03] ( 4, 4 ) struct ( 8) [sp+0x38] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[ushort]>
; V02 arg2 [V02,T15] ( 2, 1 ) byref -> [sp+0x40] single-def
; V03 loc0 [V03,T04] ( 6, 4 ) int -> r5
-; V04 loc1 [V04,T14] ( 3, 2 ) int -> r9
+; V04 loc1 [V04,T14] ( 3, 2 ) int -> r10
;* V05 loc2 [V05 ] ( 0, 0 ) int -> zero-ref
; V06 loc3 [V06 ] ( 1, 1 ) byref -> [sp+0x04] must-init pinned single-def
;* V07 loc4 [V07 ] ( 0, 0 ) int -> zero-ref
; V08 loc5 [V08 ] ( 1, 1 ) byref -> [sp+0x00] must-init pinned single-def
-; V09 loc6 [V09,T05] ( 6, 4 ) int -> r10
+; V09 loc6 [V09,T05] ( 6, 4 ) int -> r4
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V11 tmp1 [V11 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ubyte]>
;* V12 tmp2 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
@@ -26,14 +26,14 @@
;* V14 tmp4 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V15 tmp5 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V16 tmp6 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V17 tmp7 [V17,T00] ( 4, 8 ) int -> r8 "Inlining Arg"
+; V17 tmp7 [V17,T01] ( 5, 8 ) int -> r8 "Inlining Arg"
;* V18 tmp8 [V18 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V19 tmp9 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V20 tmp10 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp11 [V21 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V22 tmp12 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V23 tmp13 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V24 tmp14 [V24,T01] ( 4, 8 ) int -> r9 "Inlining Arg"
+; V24 tmp14 [V24,T00] ( 6, 8 ) int -> r9 "Inlining Arg"
;* V25 tmp15 [V25 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V26 tmp16 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V27 tmp17 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -91,7 +91,7 @@
; V79 tmp69 [V79,T07] ( 4, 4 ) byref -> r4 single-def "V00.[000..004)"
; V80 tmp70 [V80,T06] ( 5, 4 ) int -> r5 "V00.[004..008)"
; V81 tmp71 [V81,T08] ( 4, 4 ) byref -> r6 single-def "V01.[000..004)"
-; V82 tmp72 [V82,T12] ( 5, 3 ) int -> r7 "V01.[004..008)"
+; V82 tmp72 [V82,T12] ( 6, 3 ) int -> r7 "V01.[004..008)"
; V83 tmp73 [V83,T09] ( 2, 4 ) int -> r0 "Cast away GC"
; V84 tmp74 [V84,T10] ( 2, 4 ) int -> r1 "Cast away GC"
; V85 tmp75 [V85,T11] ( 2, 4 ) int -> r1 "argument with side effect"
@@ -114,42 +114,26 @@ G_M42491_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldr r6, [sp+0x38]
; byrRegs +[r6]
ldr r7, [sp+0x3C]
- movs r0, 2
- smull r8, r1, r5, r0
- cmp r1, r8 ASR 31
+ movs r1, 2
+ smull r8, r0, r5, r1
+ cmp r0, r8 ASR 31
bne SHORT G_M42491_IG10
cmp r8, 0
blt SHORT G_M42491_IG11
- ;; size=26 bbWeight=1 PerfScore 10.00
-G_M42491_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref, isz
- movs r0, 2
- smull r9, r1, r7, r0
- cmp r1, r9 ASR 31
+ movs r1, 2
+ smull r9, r0, r7, r1
+ cmp r0, r9 ASR 31
bne SHORT G_M42491_IG10
cmp r9, 0
- bge SHORT G_M42491_IG04
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- movw r1, 0xd1ff
- movt r1, 0xd1ff
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // <unknown method>
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- movw r1, 0xd1ff
- movt r1, 0xd1ff
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // <unknown method>
- ;; size=74 bbWeight=1 PerfScore 22.00
-G_M42491_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref, isz
+ blt SHORT G_M42491_IG12
+ ;; size=44 bbWeight=1 PerfScore 16.00
+G_M42491_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref, isz
cmp r8, 0
- beq SHORT G_M42491_IG12
+ beq SHORT G_M42491_IG13
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M42491_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref, isz
cmp r9, 0
- beq SHORT G_M42491_IG12
+ beq SHORT G_M42491_IG13
subs r1, r6, r4
cmp r1, r8
blo SHORT G_M42491_IG05
@@ -157,9 +141,9 @@ G_M42491_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, b
cmp r0, r1
blo SHORT G_M42491_IG05
cmp r5, r7
- bgt SHORT G_M42491_IG13
+ bgt SHORT G_M42491_IG14
b SHORT G_M42491_IG06
- ;; size=32 bbWeight=1 PerfScore 13.00
+ ;; size=26 bbWeight=1 PerfScore 11.00
G_M42491_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r4 r6]
movs r0, 72
@@ -171,7 +155,7 @@ G_M42491_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
;; size=16 bbWeight=0 PerfScore 0.00
G_M42491_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref
; byrRegs +[r4 r6]
- mov r9, 0
+ mov r10, 0
;; size=4 bbWeight=1 PerfScore 1.00
G_M42491_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref, isz
str r4, [sp+0x04] // [V06 loc3]
@@ -184,18 +168,18 @@ G_M42491_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, b
ldr r3, [r3]
blx r3 // <unknown method>
; byrRegs -[r4 r6]
- mov r10, r0
- cmp r10, r5
- bhi SHORT G_M42491_IG14
- ldr r4, [sp+0x40] // [V02 arg2]
- ; byrRegs +[r4]
- str r10, [r4]
- cmp r5, r10
- bne SHORT G_M42491_IG15
- ;; size=38 bbWeight=1 PerfScore 16.00
+ mov r4, r0
+ cmp r4, r5
+ bhi SHORT G_M42491_IG15
+ ldr r6, [sp+0x40] // [V02 arg2]
+ ; byrRegs +[r6]
+ str r4, [r6]
+ cmp r5, r4
+ bne SHORT G_M42491_IG16
+ ;; size=36 bbWeight=1 PerfScore 16.00
G_M42491_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[r4]
- mov r0, r9
+ ; byrRegs -[r6]
+ mov r0, r10
;; size=2 bbWeight=1 PerfScore 1.00
G_M42491_IG09: ; bbWeight=1, epilog, nogc, extend
add sp, 12
@@ -218,18 +202,43 @@ G_M42491_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, b
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
- b SHORT G_M42491_IG03
- ;; size=30 bbWeight=0 PerfScore 0.00
+ movs r0, 2
+ smull r9, r1, r7, r0
+ cmp r1, r9 ASR 31
+ bne SHORT G_M42491_IG10
+ cmp r9, 0
+ bge SHORT G_M42491_IG03
+ ;; size=46 bbWeight=0 PerfScore 0.00
G_M42491_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref, isz
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ movw r1, 0xd1ff
+ movt r1, 0xd1ff
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // <unknown method>
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ movw r1, 0xd1ff
+ movt r1, 0xd1ff
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // <unknown method>
+ cmp r8, 0
+ bne SHORT G_M42491_IG04
+ ;; size=62 bbWeight=0 PerfScore 0.00
+G_M42491_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref, isz
cmp r5, r7
ble SHORT G_M42491_IG06
;; size=4 bbWeight=0 PerfScore 0.00
-G_M42491_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref, isz
+G_M42491_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref, isz
mov r5, r7
- mov r9, 1
+ mov r10, 1
b SHORT G_M42491_IG07
;; size=8 bbWeight=0 PerfScore 0.00
-G_M42491_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M42491_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r4 r6]
movw r0, 0xd1ff
movt r0, 0xd1ff
@@ -239,24 +248,24 @@ G_M42491_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
- ldr r4, [sp+0x40] // [V02 arg2]
- ; byrRegs +[r4]
- str r10, [r4]
- cmp r5, r10
+ ldr r6, [sp+0x40] // [V02 arg2]
+ ; byrRegs +[r6]
+ str r4, [r6]
+ cmp r5, r4
beq SHORT G_M42491_IG08
- ;; size=38 bbWeight=0 PerfScore 0.00
-G_M42491_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[r4]
+ ;; size=36 bbWeight=0 PerfScore 0.00
+G_M42491_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[r6]
movs r0, 3
;; size=2 bbWeight=0 PerfScore 0.00
-G_M42491_IG16: ; bbWeight=0, epilog, nogc, extend
+G_M42491_IG17: ; bbWeight=0, epilog, nogc, extend
add sp, 12
pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
add sp, 16
bx lr
;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 322, prolog size 18, PerfScore 74.00, instruction count 114, allocated bytes for code 322 (MethodHash=d7945a04) for method System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToLowerConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
+; Total bytes of code 340, prolog size 18, PerfScore 58.00, instruction count 121, allocated bytes for code 340 (MethodHash=d7945a04) for method System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToLowerConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
; ============================================================
Unwind Info:
@@ -268,7 +277,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 161 (0x000a1) Actual length = 322 (0x000142)
+ Function Length : 170 (0x000aa) Actual length = 340 (0x000154)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+18 (+5.59%) : 40904.dasm - System.Text.Ascii:ChangeCaseushort,ushort,System.Text.Ascii+ToUpperConversion:int (Tier1)
@@ -13,12 +13,12 @@
; V01 arg1 [V01,T03] ( 4, 4 ) struct ( 8) [sp+0x38] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[ushort]>
; V02 arg2 [V02,T15] ( 2, 1 ) byref -> [sp+0x40] single-def
; V03 loc0 [V03,T04] ( 6, 4 ) int -> r5
-; V04 loc1 [V04,T14] ( 3, 2 ) int -> r9
+; V04 loc1 [V04,T14] ( 3, 2 ) int -> r10
;* V05 loc2 [V05 ] ( 0, 0 ) int -> zero-ref
; V06 loc3 [V06 ] ( 1, 1 ) byref -> [sp+0x04] must-init pinned single-def
;* V07 loc4 [V07 ] ( 0, 0 ) int -> zero-ref
; V08 loc5 [V08 ] ( 1, 1 ) byref -> [sp+0x00] must-init pinned single-def
-; V09 loc6 [V09,T05] ( 6, 4 ) int -> r10
+; V09 loc6 [V09,T05] ( 6, 4 ) int -> r4
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V11 tmp1 [V11 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ubyte]>
;* V12 tmp2 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
@@ -26,14 +26,14 @@
;* V14 tmp4 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V15 tmp5 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V16 tmp6 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V17 tmp7 [V17,T00] ( 4, 8 ) int -> r8 "Inlining Arg"
+; V17 tmp7 [V17,T01] ( 5, 8 ) int -> r8 "Inlining Arg"
;* V18 tmp8 [V18 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V19 tmp9 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V20 tmp10 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp11 [V21 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V22 tmp12 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V23 tmp13 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V24 tmp14 [V24,T01] ( 4, 8 ) int -> r9 "Inlining Arg"
+; V24 tmp14 [V24,T00] ( 6, 8 ) int -> r9 "Inlining Arg"
;* V25 tmp15 [V25 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V26 tmp16 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V27 tmp17 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -91,7 +91,7 @@
; V79 tmp69 [V79,T07] ( 4, 4 ) byref -> r4 single-def "V00.[000..004)"
; V80 tmp70 [V80,T06] ( 5, 4 ) int -> r5 "V00.[004..008)"
; V81 tmp71 [V81,T08] ( 4, 4 ) byref -> r6 single-def "V01.[000..004)"
-; V82 tmp72 [V82,T12] ( 5, 3 ) int -> r7 "V01.[004..008)"
+; V82 tmp72 [V82,T12] ( 6, 3 ) int -> r7 "V01.[004..008)"
; V83 tmp73 [V83,T09] ( 2, 4 ) int -> r0 "Cast away GC"
; V84 tmp74 [V84,T10] ( 2, 4 ) int -> r1 "Cast away GC"
; V85 tmp75 [V85,T11] ( 2, 4 ) int -> r1 "argument with side effect"
@@ -114,42 +114,26 @@ G_M47258_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldr r6, [sp+0x38]
; byrRegs +[r6]
ldr r7, [sp+0x3C]
- movs r0, 2
- smull r8, r1, r5, r0
- cmp r1, r8 ASR 31
+ movs r1, 2
+ smull r8, r0, r5, r1
+ cmp r0, r8 ASR 31
bne SHORT G_M47258_IG10
cmp r8, 0
blt SHORT G_M47258_IG11
- ;; size=26 bbWeight=1 PerfScore 10.00
-G_M47258_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref, isz
- movs r0, 2
- smull r9, r1, r7, r0
- cmp r1, r9 ASR 31
+ movs r1, 2
+ smull r9, r0, r7, r1
+ cmp r0, r9 ASR 31
bne SHORT G_M47258_IG10
cmp r9, 0
- bge SHORT G_M47258_IG04
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- movw r1, 0xd1ff
- movt r1, 0xd1ff
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // <unknown method>
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- movw r1, 0xd1ff
- movt r1, 0xd1ff
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // <unknown method>
- ;; size=74 bbWeight=1 PerfScore 22.00
-G_M47258_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref, isz
+ blt SHORT G_M47258_IG12
+ ;; size=44 bbWeight=1 PerfScore 16.00
+G_M47258_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref, isz
cmp r8, 0
- beq SHORT G_M47258_IG12
+ beq SHORT G_M47258_IG13
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M47258_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref, isz
cmp r9, 0
- beq SHORT G_M47258_IG12
+ beq SHORT G_M47258_IG13
subs r1, r6, r4
cmp r1, r8
blo SHORT G_M47258_IG05
@@ -157,9 +141,9 @@ G_M47258_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, b
cmp r0, r1
blo SHORT G_M47258_IG05
cmp r5, r7
- bgt SHORT G_M47258_IG13
+ bgt SHORT G_M47258_IG14
b SHORT G_M47258_IG06
- ;; size=32 bbWeight=1 PerfScore 13.00
+ ;; size=26 bbWeight=1 PerfScore 11.00
G_M47258_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r4 r6]
movs r0, 72
@@ -171,7 +155,7 @@ G_M47258_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
;; size=16 bbWeight=0 PerfScore 0.00
G_M47258_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref
; byrRegs +[r4 r6]
- mov r9, 0
+ mov r10, 0
;; size=4 bbWeight=1 PerfScore 1.00
G_M47258_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref, isz
str r4, [sp+0x04] // [V06 loc3]
@@ -184,18 +168,18 @@ G_M47258_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, b
ldr r3, [r3]
blx r3 // <unknown method>
; byrRegs -[r4 r6]
- mov r10, r0
- cmp r10, r5
- bhi SHORT G_M47258_IG14
- ldr r4, [sp+0x40] // [V02 arg2]
- ; byrRegs +[r4]
- str r10, [r4]
- cmp r5, r10
- bne SHORT G_M47258_IG15
- ;; size=38 bbWeight=1 PerfScore 16.00
+ mov r4, r0
+ cmp r4, r5
+ bhi SHORT G_M47258_IG15
+ ldr r6, [sp+0x40] // [V02 arg2]
+ ; byrRegs +[r6]
+ str r4, [r6]
+ cmp r5, r4
+ bne SHORT G_M47258_IG16
+ ;; size=36 bbWeight=1 PerfScore 16.00
G_M47258_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[r4]
- mov r0, r9
+ ; byrRegs -[r6]
+ mov r0, r10
;; size=2 bbWeight=1 PerfScore 1.00
G_M47258_IG09: ; bbWeight=1, epilog, nogc, extend
add sp, 12
@@ -218,18 +202,43 @@ G_M47258_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, b
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
- b SHORT G_M47258_IG03
- ;; size=30 bbWeight=0 PerfScore 0.00
+ movs r0, 2
+ smull r9, r1, r7, r0
+ cmp r1, r9 ASR 31
+ bne SHORT G_M47258_IG10
+ cmp r9, 0
+ bge SHORT G_M47258_IG03
+ ;; size=46 bbWeight=0 PerfScore 0.00
G_M47258_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref, isz
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ movw r1, 0xd1ff
+ movt r1, 0xd1ff
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // <unknown method>
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ movw r1, 0xd1ff
+ movt r1, 0xd1ff
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // <unknown method>
+ cmp r8, 0
+ bne SHORT G_M47258_IG04
+ ;; size=62 bbWeight=0 PerfScore 0.00
+G_M47258_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref, isz
cmp r5, r7
ble SHORT G_M47258_IG06
;; size=4 bbWeight=0 PerfScore 0.00
-G_M47258_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref, isz
+G_M47258_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref, isz
mov r5, r7
- mov r9, 1
+ mov r10, 1
b SHORT G_M47258_IG07
;; size=8 bbWeight=0 PerfScore 0.00
-G_M47258_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M47258_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r4 r6]
movw r0, 0xd1ff
movt r0, 0xd1ff
@@ -239,24 +248,24 @@ G_M47258_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
- ldr r4, [sp+0x40] // [V02 arg2]
- ; byrRegs +[r4]
- str r10, [r4]
- cmp r5, r10
+ ldr r6, [sp+0x40] // [V02 arg2]
+ ; byrRegs +[r6]
+ str r4, [r6]
+ cmp r5, r4
beq SHORT G_M47258_IG08
- ;; size=38 bbWeight=0 PerfScore 0.00
-G_M47258_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[r4]
+ ;; size=36 bbWeight=0 PerfScore 0.00
+G_M47258_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[r6]
movs r0, 3
;; size=2 bbWeight=0 PerfScore 0.00
-G_M47258_IG16: ; bbWeight=0, epilog, nogc, extend
+G_M47258_IG17: ; bbWeight=0, epilog, nogc, extend
add sp, 12
pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
add sp, 16
bx lr
;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 322, prolog size 18, PerfScore 74.00, instruction count 114, allocated bytes for code 322 (MethodHash=ad1d4765) for method System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
+; Total bytes of code 340, prolog size 18, PerfScore 58.00, instruction count 121, allocated bytes for code 340 (MethodHash=ad1d4765) for method System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
; ============================================================
Unwind Info:
@@ -268,7 +277,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 161 (0x000a1) Actual length = 322 (0x000142)
+ Function Length : 170 (0x000aa) Actual length = 340 (0x000154)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+12 (+7.59%) : 100544.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
@@ -9,18 +9,18 @@
; 3 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 9, 5 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
-; V01 loc0 [V01,T03] ( 5, 5 ) int -> r5
+; V00 this [V00,T00] ( 10, 5 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
+; V01 loc0 [V01,T08] ( 5, 2 ) int -> r5
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;# 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 "Inline return value spill temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V05 tmp2 [V05,T06] ( 5, 4 ) ref -> r6 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
-; V06 tmp3 [V06,T04] ( 3, 4.50) ref -> r1 single-def "CASTCLASS eval op1"
-; V07 tmp4 [V07,T07] ( 3, 2.50) int -> r2 "fgMakeTemp is creating a new local variable"
-; V08 tmp5 [V08,T00] ( 5, 7.50) ref -> r3 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V09 tmp6 [V09,T05] ( 3, 4.50) ref -> r1 single-def "CASTCLASS eval op1"
-; V10 tmp7 [V10,T08] ( 3, 2.50) int -> r2 "fgMakeTemp is creating a new local variable"
-; V11 tmp8 [V11,T01] ( 5, 7.50) ref -> r3 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V05 tmp2 [V05,T05] ( 5, 4 ) ref -> r6 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
+; V06 tmp3 [V06,T03] ( 3, 4.50) ref -> r1 single-def "CASTCLASS eval op1"
+; V07 tmp4 [V07,T06] ( 3, 2.50) int -> r2 "fgMakeTemp is creating a new local variable"
+; V08 tmp5 [V08,T01] ( 5, 5.50) ref -> r3 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V09 tmp6 [V09,T04] ( 3, 4.50) ref -> r1 single-def "CASTCLASS eval op1"
+; V10 tmp7 [V10,T07] ( 3, 2.50) int -> r3 "fgMakeTemp is creating a new local variable"
+; V11 tmp8 [V11,T02] ( 5, 5.50) ref -> r2 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
;
; Lcl frame size = 4
@@ -36,11 +36,11 @@ G_M4380_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
ldr r6, [r4+0x40]
; gcrRegs +[r6]
cmp r6, 0
- beq SHORT G_M4380_IG14
+ beq SHORT G_M4380_IG12
ldrb r0, [r6+0x0C]
and r0, r0, 2
cmp r0, 2
- bne SHORT G_M4380_IG14
+ bne SHORT G_M4380_IG12
;; size=18 bbWeight=1 PerfScore 8.00
G_M4380_IG03: ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref, isz
ldr r1, [r6+0x04]
@@ -48,7 +48,7 @@ G_M4380_IG03: ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, by
mov r3, r1
; gcrRegs +[r3]
cmp r3, 0
- beq SHORT G_M4380_IG07
+ beq SHORT G_M4380_IG06
;; size=8 bbWeight=1 PerfScore 4.00
G_M4380_IG04: ; bbWeight=0.50, gcrefRegs=001A {r1 r3 r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r6]
@@ -56,9 +56,9 @@ G_M4380_IG04: ; bbWeight=0.50, gcrefRegs=001A {r1 r3 r4}, byrefRegs=0000
movw r2, 0xd1ff
movt r2, 0xd1ff
cmp r0, r2
- beq SHORT G_M4380_IG06
+ beq SHORT G_M4380_IG13
;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M4380_IG05: ; bbWeight=0.25, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref
+G_M4380_IG05: ; bbWeight=0.25, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r3]
mov r0, r2
movw r3, 0xd1ff
@@ -67,60 +67,53 @@ G_M4380_IG05: ; bbWeight=0.25, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {},
; gcrRegs -[r1] +[r0]
mov r3, r0
; gcrRegs +[r3]
- ;; size=14 bbWeight=0.25 PerfScore 1.25
-G_M4380_IG06: ; bbWeight=1, gcrefRegs=0018 {r3 r4}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r0]
- ldr r5, [r3+0x40]
- ;; size=2 bbWeight=1 PerfScore 1.00
-G_M4380_IG07: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r3]
+ b SHORT G_M4380_IG13
+ ;; size=16 bbWeight=0.25 PerfScore 1.50
+G_M4380_IG06: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0 r3]
ldr r0, [r4+0x44]
; gcrRegs +[r0]
cmp r0, 0
- beq SHORT G_M4380_IG15
+ beq SHORT G_M4380_IG14
;; size=6 bbWeight=1 PerfScore 3.00
-G_M4380_IG08: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M4380_IG07: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
ldr r0, [r4+0x44]
; gcrRegs +[r0]
ldr r1, [r0+0x04]
; gcrRegs +[r1]
- mov r3, r1
- ; gcrRegs +[r3]
- cmp r3, 0
- beq SHORT G_M4380_IG12
+ mov r2, r1
+ ; gcrRegs +[r2]
+ cmp r2, 0
+ beq SHORT G_M4380_IG10
;; size=10 bbWeight=1 PerfScore 5.00
-G_M4380_IG09: ; bbWeight=0.50, gcrefRegs=000A {r1 r3}, byrefRegs=0000 {}, byref, isz
+G_M4380_IG08: ; bbWeight=0.50, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0 r4]
- ldr r0, [r3]
- movw r2, 0xd1ff
- movt r2, 0xd1ff
- cmp r0, r2
- beq SHORT G_M4380_IG11
+ ldr r0, [r2]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r0, r3
+ beq SHORT G_M4380_IG15
;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M4380_IG10: ; bbWeight=0.25, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r3]
- mov r0, r2
+G_M4380_IG09: ; bbWeight=0.25, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r2]
+ mov r0, r3
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[r1] +[r0]
- mov r3, r0
- ; gcrRegs +[r3]
- ;; size=14 bbWeight=0.25 PerfScore 1.25
-G_M4380_IG11: ; bbWeight=1, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r0]
- ldr r0, [r3+0x40]
- orrs r5, r0
- ;; size=4 bbWeight=1 PerfScore 2.00
-G_M4380_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r3]
+ mov r2, r0
+ ; gcrRegs +[r2]
+ b SHORT G_M4380_IG15
+ ;; size=16 bbWeight=0.25 PerfScore 1.50
+G_M4380_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r0 r2]
mov r0, r5
;; size=2 bbWeight=1 PerfScore 1.00
-G_M4380_IG13: ; bbWeight=1, epilog, nogc, extend
+G_M4380_IG11: ; bbWeight=1, epilog, nogc, extend
pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M4380_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M4380_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r4]
mov r0, r4
; gcrRegs +[r0]
@@ -133,8 +126,16 @@ G_M4380_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byre
; gcrRegs +[r6]
b SHORT G_M4380_IG03
;; size=18 bbWeight=0 PerfScore 0.00
-G_M4380_IG15: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r6]
+G_M4380_IG13: ; bbWeight=0, gcrefRegs=0018 {r3 r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r6] +[r3]
+ ldr r5, [r3+0x40]
+ ldr r1, [r4+0x44]
+ ; gcrRegs +[r1]
+ cmp r1, 0
+ bne SHORT G_M4380_IG07
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M4380_IG14: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r1 r3]
add r1, r4, 68
; byrRegs +[r1]
mov r0, r4
@@ -145,10 +146,16 @@ G_M4380_IG15: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
blx r3 // <unknown method>
; gcrRegs -[r0]
; byrRegs -[r1]
- b SHORT G_M4380_IG08
+ b SHORT G_M4380_IG07
;; size=20 bbWeight=0 PerfScore 0.00
+G_M4380_IG15: ; bbWeight=0, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r4] +[r2]
+ ldr r3, [r2+0x40]
+ orrs r5, r3
+ b SHORT G_M4380_IG10
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 158, prolog size 8, PerfScore 35.50, instruction count 62, allocated bytes for code 158 (MethodHash=64b3eee3) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
+; Total bytes of code 170, prolog size 8, PerfScore 33.00, instruction count 68, allocated bytes for code 170 (MethodHash=64b3eee3) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
; ============================================================
Unwind Info:
@@ -160,7 +167,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 79 (0x0004f) Actual length = 158 (0x00009e)
+ Function Length : 85 (0x00055) Actual length = 170 (0x0000aa)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
benchmarks.run_tiered.linux.arm.checked.mch
-22 (-30.56%) : 29825.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
@@ -8,77 +8,61 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 2.50) byref -> r0 this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> r4 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> r1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> r1 class-hnd "spilling QMark2" <System.Int32>
-; V04 tmp2 [V04,T03] ( 2, 2 ) int -> r5 "impAppendStmt"
-; V05 cse0 [V05,T05] ( 3, 1 ) int -> r1 "CSE - moderate"
-; V06 cse1 [V06,T04] ( 4, 1.25) int -> r3 "CSE - moderate"
+; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> r3 class-hnd "spilling QMark2" <System.Int32>
+; V04 tmp2 [V04,T03] ( 2, 2 ) int -> r0 "impAppendStmt"
;
; Lcl frame size = 0
G_M40448_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr}
- add r11, sp, 8
- mov r4, r1
- ; gcrRegs +[r4]
- ;; size=10 bbWeight=1 PerfScore 3.00
-G_M40448_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz
- ; byrRegs +[r0]
- mov r1, r4
+ push {r11,lr}
+ mov r11, sp
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M40448_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz
; gcrRegs +[r1]
- cmp r1, 0
+ ; byrRegs +[r0]
+ mov r3, r1
+ ; gcrRegs +[r3]
+ cmp r3, 0
beq SHORT G_M40448_IG04
;; size=6 bbWeight=1 PerfScore 3.00
-G_M40448_IG03: ; bbWeight=0.25, gcrefRegs=0012 {r1 r4}, byrefRegs=0001 {r0}, byref, isz
- ldr r1, [r1]
- ; gcrRegs -[r1]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- cmp r1, r3
+G_M40448_IG03: ; bbWeight=0.25, gcrefRegs=000A {r1 r3}, byrefRegs=0001 {r0}, byref, isz
+ ldr r3, [r3]
+ ; gcrRegs -[r3]
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ cmp r3, r2
beq SHORT G_M40448_IG06
;; size=14 bbWeight=0.25 PerfScore 1.25
G_M40448_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4]
+ ; gcrRegs -[r1]
; byrRegs -[r0]
movs r0, 0
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M40448_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,pc}
+ pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M40448_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, gcvars, byref, isz
- ; gcrRegs +[r4]
- ; byrRegs +[r0]
- ldr r5, [r0]
- cmp r1, r3
- beq SHORT G_M40448_IG08
- ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M40448_IG07: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- ; byrRegs -[r0]
- mov r1, r4
+G_M40448_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, gcvars, byref, isz
; gcrRegs +[r1]
- mov r0, r3
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_UNBOX
- ; gcrRegs -[r1]
- ;; size=14 bbWeight=0.25 PerfScore 1.25
-G_M40448_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r4+0x04]
- cmp r5, r0
- beq SHORT G_M40448_IG09
+ ; byrRegs +[r0]
+ ldr r0, [r0]
+ ; byrRegs -[r0]
+ ldr r3, [r1+0x04]
+ cmp r0, r3
+ beq SHORT G_M40448_IG07
movs r0, 0
- b SHORT G_M40448_IG10
- ;; size=10 bbWeight=0.50 PerfScore 2.50
-G_M40448_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4]
+ b SHORT G_M40448_IG08
+ ;; size=12 bbWeight=0.50 PerfScore 3.00
+G_M40448_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r1]
movs r0, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M40448_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- pop {r4,r5,r11,pc}
+G_M40448_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 72, prolog size 8, PerfScore 14.50, instruction count 28, allocated bytes for code 72 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 50, prolog size 6, PerfScore 11.25, instruction count 20, allocated bytes for code 50 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -90,7 +74,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 36 (0x00024) Actual length = 72 (0x000048)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -102,7 +86,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end
FF end
-22 (-30.56%) : 4278.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
@@ -8,80 +8,64 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 2.50) byref -> r5 this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> r4 class-hnd single-def <System.Object>
+; V00 this [V00,T02] ( 3, 2.50) byref -> r0 this single-def
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> r1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> r0 class-hnd "spilling QMark2" <System.Reflection.MetadataImport>
+; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> r3 class-hnd "spilling QMark2" <System.Reflection.MetadataImport>
;* V04 tmp2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.MetadataImport>
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref "field V04.m_keepalive (fldOffset=0x0)" P-INDEP
-; V06 tmp4 [V06,T05] ( 2, 1 ) int -> r0 "field V04.m_metadataImport2 (fldOffset=0x4)" P-INDEP
-; V07 cse0 [V07,T04] ( 3, 1 ) int -> r1 "CSE - moderate"
-; V08 cse1 [V08,T03] ( 4, 1.25) int -> r0 "CSE - moderate"
+; V06 tmp4 [V06,T03] ( 2, 1 ) int -> r3 "field V04.m_metadataImport2 (fldOffset=0x4)" P-INDEP
;
; Lcl frame size = 0
G_M38955_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr}
- add r11, sp, 8
- mov r5, r0
- ; byrRegs +[r5]
- mov r4, r1
- ; gcrRegs +[r4]
- ;; size=12 bbWeight=1 PerfScore 4.00
-G_M38955_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
- mov r0, r4
- ; gcrRegs +[r0]
- cmp r0, 0
+ push {r11,lr}
+ mov r11, sp
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M38955_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz
+ ; gcrRegs +[r1]
+ ; byrRegs +[r0]
+ mov r3, r1
+ ; gcrRegs +[r3]
+ cmp r3, 0
beq SHORT G_M38955_IG04
;; size=6 bbWeight=1 PerfScore 3.00
-G_M38955_IG03: ; bbWeight=0.25, gcrefRegs=0011 {r0 r4}, byrefRegs=0020 {r5}, byref, isz
- ldr r1, [r0]
- movw r0, 0xd1ff
- ; gcrRegs -[r0]
- movt r0, 0xd1ff
- cmp r1, r0
+G_M38955_IG03: ; bbWeight=0.25, gcrefRegs=000A {r1 r3}, byrefRegs=0001 {r0}, byref, isz
+ ldr r3, [r3]
+ ; gcrRegs -[r3]
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ cmp r3, r2
beq SHORT G_M38955_IG06
;; size=14 bbWeight=0.25 PerfScore 1.25
G_M38955_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4]
- ; byrRegs -[r5]
+ ; gcrRegs -[r1]
+ ; byrRegs -[r0]
movs r0, 0
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M38955_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,pc}
+ pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M38955_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, gcvars, byref, isz
- ; gcrRegs +[r4]
- ; byrRegs +[r5]
- cmp r1, r0
- beq SHORT G_M38955_IG08
- ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M38955_IG07: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref
- mov r1, r4
+G_M38955_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, gcvars, byref, isz
; gcrRegs +[r1]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_UNBOX
- ; gcrRegs -[r1]
- ;; size=12 bbWeight=0.25 PerfScore 1.00
-G_M38955_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
- ldr r0, [r4+0x08]
- ldr r3, [r5+0x04]
- cmp r0, r3
- beq SHORT G_M38955_IG09
+ ; byrRegs +[r0]
+ ldr r3, [r1+0x08]
+ ldr r0, [r0+0x04]
+ ; byrRegs -[r0]
+ cmp r3, r0
+ beq SHORT G_M38955_IG07
movs r0, 0
- b SHORT G_M38955_IG10
+ b SHORT G_M38955_IG08
;; size=12 bbWeight=0.50 PerfScore 3.00
-G_M38955_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4]
- ; byrRegs -[r5]
+G_M38955_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r1]
movs r0, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M38955_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- pop {r4,r5,r11,pc}
+G_M38955_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 72, prolog size 8, PerfScore 15.25, instruction count 28, allocated bytes for code 72 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 50, prolog size 6, PerfScore 11.25, instruction count 20, allocated bytes for code 50 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -93,7 +77,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 36 (0x00024) Actual length = 72 (0x000048)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -105,7 +89,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end
FF end
-18 (-13.85%) : 64324.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (Tier0-FullOpts)
@@ -7,87 +7,78 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T05] ( 4, 4 ) struct ( 8) [sp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V01 arg1 [V01,T06] ( 4, 4 ) struct ( 8) [sp+0x18] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V02 loc0 [V02,T00] ( 7, 24.50) int -> r0
+; V00 arg0 [V00,T07] ( 4, 4 ) struct ( 8) [sp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
+; V01 arg1 [V01,T08] ( 4, 4 ) struct ( 8) [sp+0x18] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
+; V02 loc0 [V02,T00] ( 7, 24.50) int -> lr
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> r12 "dup spill"
-; V05 tmp2 [V05,T07] ( 3, 5.50) byref -> r3 single-def "V00.[000..004)"
-; V06 tmp3 [V06,T04] ( 5, 7 ) int -> r2 "V00.[004..008)"
-; V07 tmp4 [V07,T08] ( 3, 5.50) byref -> r1 single-def "V01.[000..004)"
-; V08 tmp5 [V08,T03] ( 6, 7.50) int -> lr "V01.[004..008)"
-; V09 cse0 [V09,T02] ( 6, 13.50) int -> r4 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> lr "dup spill"
+; V05 tmp2 [V05,T09] ( 2, 5 ) byref -> r0 single-def "V00.[000..004)"
+; V06 tmp3 [V06,T06] ( 4, 6.50) int -> r3 "V00.[004..008)"
+; V07 tmp4 [V07,T10] ( 2, 5 ) byref -> r2 single-def "V01.[000..004)"
+; V08 tmp5 [V08,T05] ( 5, 7 ) int -> r1 "V01.[004..008)"
+; V09 cse0 [V09,T03] ( 3, 8.50) int -> r4 "CSE - aggressive"
+; V10 cse1 [V10,T04] ( 3, 8.50) int -> r12 "CSE - aggressive"
+; V11 cse2 [V11,T02] ( 3, 12 ) int -> r12 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M264_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r0,r1,r2,r3}
- push {r4,r5,r11,lr}
+ push {r3,r4,r11,lr}
add r11, sp, 8
;; size=10 bbWeight=1 PerfScore 3.00
G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr r3, [sp+0x10]
- ; byrRegs +[r3]
- ldr r2, [sp+0x14]
- ldr r1, [sp+0x18]
- ; byrRegs +[r1]
- ldr lr, [sp+0x1C]
- cmp r2, lr
+ ldr r0, [sp+0x10]
+ ; byrRegs +[r0]
+ ldr r3, [sp+0x14]
+ ldr r2, [sp+0x18]
+ ; byrRegs +[r2]
+ ldr r1, [sp+0x1C]
+ cmp r3, r1
beq SHORT G_M264_IG04
- ;; size=14 bbWeight=1 PerfScore 6.00
+ ;; size=12 bbWeight=1 PerfScore 6.00
G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r1 r3]
- cmp r2, lr
+ ; byrRegs -[r0 r2]
+ cmp r3, r1
blt SHORT G_M264_IG11
- b SHORT G_M264_IG09
+ b SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, byref
- ; byrRegs +[r1 r3]
- mov r0, lr
+G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {r0 r2}, byref
+ ; byrRegs +[r0 r2]
+ mov lr, r1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, byref, isz
- add r12, r0, -1
- mov r0, r12
- cmp r0, 0
- blt SHORT G_M264_IG06
- cmp r0, r2
+G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {r0 r2}, byref, isz
+ add lr, lr, -1
+ cmp lr, 0
+ blt SHORT G_M264_IG09
+ cmp lr, r3
bhs SHORT G_M264_IG13
- lsls r4, r0, 2
- ldr r5, [r3+r4]
- cmp r0, lr
+ lsl r12, lr, 2
+ ldr r4, [r0+r12]
+ cmp lr, r1
bhs SHORT G_M264_IG13
- ldr r4, [r1+r4]
- cmp r5, r4
+ ldr r12, [r2+r12]
+ cmp r4, r12
beq SHORT G_M264_IG05
- ;; size=28 bbWeight=4 PerfScore 52.00
-G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, byref, isz
- cmp r12, 0
- bge SHORT G_M264_IG08
- movs r0, 0
- ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,lr}
+ ;; size=34 bbWeight=4 PerfScore 48.00
+G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[r0 r2]
+ cmp r12, r4
+ bhi SHORT G_M264_IG11
+ ;; size=4 bbWeight=0.50 PerfScore 1.00
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ movs r0, 1
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ pop {r3,r4,r11,lr}
add sp, 16
bx lr
;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M264_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, gcvars, byref, isz
- cmp r12, r2
- bhs SHORT G_M264_IG13
- lsl r4, r12, 2
- ldr r0, [r3+r4]
- cmp r12, lr
- bhs SHORT G_M264_IG13
- ldr r3, [r1+r4]
- ; byrRegs -[r3]
- cmp r0, r3
- blo SHORT G_M264_IG11
- ;; size=20 bbWeight=0.50 PerfScore 4.50
-G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[r1]
- movs r0, 1
+G_M264_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ movs r0, 0
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,lr}
+ pop {r3,r4,r11,lr}
add sp, 16
bx lr
;; size=8 bbWeight=0.50 PerfScore 1.50
@@ -95,7 +86,7 @@ G_M264_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byre
mov r0, -1
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M264_IG12: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,lr}
+ pop {r3,r4,r11,lr}
add sp, 16
bx lr
;; size=8 bbWeight=0.50 PerfScore 1.50
@@ -107,7 +98,7 @@ G_M264_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRe
bkpt
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 130, prolog size 10, PerfScore 74.50, instruction count 53, allocated bytes for code 130 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier0-FullOpts)
+; Total bytes of code 112, prolog size 10, PerfScore 66.00, instruction count 43, allocated bytes for code 112 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier0-FullOpts)
; ============================================================
Unwind Info:
@@ -119,7 +110,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 65 (0x00041) Actual length = 130 (0x000082)
+ Function Length : 56 (0x00038) Actual length = 112 (0x000070)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -134,11 +125,11 @@ Unwind Info:
Condition : 14 (0xe) (always)
Epilog Start Index : 5 (0x05)
---- Unwind codes ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 18 pop {r3,r4,r11,lr} ; opsize 32
EC 0F pop {r0,r1,r2,r3} ; opsize 16
FF end
---- Epilog start at index 5 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 18 pop {r3,r4,r11,lr} ; opsize 32
04 add sp, sp, #16 ; opsize 16
FD end + nop ; opsize 16
FF end
+22 (+2.71%) : 9874.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (Tier0-FullOpts)
@@ -11,10 +11,10 @@
; V00 arg0 [V00,T07] ( 22, 23 ) ref -> r4 class-hnd single-def <System.Collections.Generic.List`1[System.String]>
; V01 loc0 [V01,T19] ( 7, 3.50) ref -> r5 class-hnd exact single-def <System.String>
; V02 loc1 [V02 ] ( 20, 54 ) struct ( 8) [r11-0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 38,148.58) int -> r7
+; V03 loc2 [V03,T00] ( 40,182.58) int -> r7
; V04 loc3 [V04,T23] ( 4, 2 ) int -> r0
;* V05 loc4 [V05 ] ( 0, 0 ) struct ( 8) zero-ref <System.Span`1[ushort]>
-; V06 loc5 [V06,T06] ( 9, 25.50) int -> r6
+; V06 loc5 [V06,T06] ( 9, 25.50) int -> r8
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V09 tmp2 [V09,T04] ( 5, 28 ) ref -> r0 class-hnd exact "impAppendStmt" <System.String>
@@ -46,9 +46,9 @@
; V35 cse2 [V35,T32] ( 2, 1 ) int -> r3 "CSE - moderate"
; V36 cse3 [V36,T11] ( 3, 12 ) int -> r2 "CSE - aggressive"
; V37 cse4 [V37,T10] ( 3, 12 ) ref -> r1 "CSE - aggressive"
-; V38 cse5 [V38,T03] ( 15, 30.54) int -> r6 "CSE - aggressive"
-; V39 cse6 [V39,T02] ( 10, 46 ) byref -> r8 hoist multi-def "CSE - aggressive"
-; V40 cse7 [V40,T01] ( 3, 48 ) int -> r1 "CSE - aggressive"
+; V38 cse5 [V38,T01] ( 17, 64.54) int -> r6 "CSE - aggressive"
+; V39 cse6 [V39,T03] ( 10, 46 ) byref -> r8 hoist multi-def "CSE - aggressive"
+; V40 cse7 [V40,T02] ( 3, 48 ) int -> r1 "CSE - aggressive"
; V41 cse8 [V41,T12] ( 3, 12 ) int -> r1 "CSE - aggressive"
; V42 cse9 [V42,T17] ( 2, 8 ) int -> r3 "CSE - aggressive"
; V43 cse10 [V43,T13] ( 3, 11.88) int -> r3 "CSE - aggressive"
@@ -75,7 +75,7 @@ G_M28069_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M28069_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4+0x08]
cmp r0, 0
- beq G_M28069_IG28
+ beq G_M28069_IG27
;; size=8 bbWeight=1 PerfScore 3.00
G_M28069_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4+0x04]
@@ -83,18 +83,18 @@ G_M28069_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
movs r1, 0
ldr r3, [r0+0x04]
cmp r1, r3
- bhs G_M28069_IG31
+ bhs G_M28069_IG30
ldr r5, [r0+0x08]
; gcrRegs +[r5]
ldr r6, [r5+0x04]
cmp r6, 100
- bgt G_M28069_IG28
+ bgt G_M28069_IG27
adds r0, r6, 2
; gcrRegs -[r0]
movs r1, 2
umull r1, r3, r0, r1
cmp r3, 0
- bne G_M28069_IG30
+ bne G_M28069_IG29
tst r1, r1
beq SHORT G_M28069_IG06
adds r1, 7
@@ -117,12 +117,12 @@ G_M28069_IG05: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
;; size=4 bbWeight=0.50 PerfScore 1.00
G_M28069_IG06: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
cmp r0, 0
- blt G_M28069_IG32
+ blt G_M28069_IG31
str r1, [r9+0x10] // [V23 tmp16]
str r0, [r9+0x14] // [V24 tmp17]
movs r7, 0
cmp r6, 0
- ble SHORT G_M28069_IG15
+ ble SHORT G_M28069_IG14
add r8, r5, 8
; byrRegs +[r8]
;; size=24 bbWeight=0.50 PerfScore 4.00
@@ -130,76 +130,74 @@ G_M28069_IG07: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8},
lsls r0, r7, 1
ldrh r0, [r8+r0]
cmp r0, 39
- bne SHORT G_M28069_IG11
+ bne SHORT G_M28069_IG10
;; size=10 bbWeight=4 PerfScore 16.00
G_M28069_IG08: ; bbWeight=16, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
ldr r0, [r9+0x14] // [V24 tmp17]
cmp r7, r0
- bhs G_M28069_IG31
+ bhs G_M28069_IG30
ldr r0, [r9+0x10] // [V23 tmp16]
; byrRegs +[r0]
lsls r1, r7, 1
+ cmp r7, r6
+ bhs G_M28069_IG30
ldrh r3, [r8+r1]
strh r3, [r0+r1]
adds r7, r7, 1
cmp r6, r7
- ble SHORT G_M28069_IG09
+ ble G_M28069_IG27
+ cmp r7, r6
+ bhs G_M28069_IG30
lsls r0, r7, 1
; byrRegs -[r0]
ldrh r0, [r8+r0]
cmp r0, 39
bne SHORT G_M28069_IG08
- ;; size=38 bbWeight=16 PerfScore 224.00
-G_M28069_IG09: ; bbWeight=2, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
- cmp r6, r7
- bgt SHORT G_M28069_IG12
- ;; size=4 bbWeight=2 PerfScore 4.00
-G_M28069_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r4-r5]
- ; byrRegs -[r8]
- b SHORT G_M28069_IG28
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M28069_IG11: ; bbWeight=2, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
- ; gcrRegs +[r4-r5]
- ; byrRegs +[r8]
+ ;; size=52 bbWeight=16 PerfScore 288.00
+G_M28069_IG09: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
+ b SHORT G_M28069_IG11
+ ;; size=2 bbWeight=4 PerfScore 4.00
+G_M28069_IG10: ; bbWeight=2, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
cmp r0, 121
- beq SHORT G_M28069_IG14
+ beq SHORT G_M28069_IG13
;; size=4 bbWeight=2 PerfScore 4.00
-G_M28069_IG12: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
+G_M28069_IG11: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
ldr r0, [r9+0x14] // [V24 tmp17]
cmp r7, r0
- bhs G_M28069_IG31
+ bhs G_M28069_IG30
ldr r0, [r9+0x10] // [V23 tmp16]
; byrRegs +[r0]
lsls r1, r7, 1
+ cmp r7, r6
+ bhs G_M28069_IG30
ldrh r3, [r8+r1]
strh r3, [r0+r1]
adds r7, r7, 1
cmp r6, r7
bgt SHORT G_M28069_IG07
- ;; size=28 bbWeight=4 PerfScore 40.00
-G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ ;; size=34 bbWeight=4 PerfScore 48.00
+G_M28069_IG12: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r0 r8]
- b SHORT G_M28069_IG15
+ b SHORT G_M28069_IG14
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
ldr r0, [r9+0x14] // [V24 tmp17]
cmp r7, r0
- bhs G_M28069_IG31
+ bhs G_M28069_IG30
ldr r0, [r9+0x10] // [V23 tmp16]
; byrRegs +[r0]
lsls r1, r7, 1
movs r3, 121
strh r3, [r0+r1]
;; size=20 bbWeight=0.50 PerfScore 3.50
-G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r0]
subs r0, r6, 1
cmp r0, r7
- ble G_M28069_IG28
+ ble G_M28069_IG27
adds r0, r7, 1
cmp r0, r6
- bhs G_M28069_IG31
+ bhs G_M28069_IG30
add r8, r5, 8
; byrRegs +[r8]
lsls r3, r7, 1
@@ -208,25 +206,25 @@ G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
str r2, [r9+0x0C] // [V34 cse1]
ldrh r0, [r8+r2]
cmp r0, 121
- bne G_M28069_IG28
+ bne G_M28069_IG27
add lr, r7, 2
str lr, [r9+0x04] // [V46 cse13]
cmp r6, lr
- ble SHORT G_M28069_IG16
+ ble SHORT G_M28069_IG15
cmp lr, r6
- bhs G_M28069_IG31
+ bhs G_M28069_IG30
adds r0, r3, 4
ldrh r0, [r8+r0]
cmp r0, 121
ldr r3, [r9+0x08] // [V44 cse11]
ldr lr, [r9+0x04] // [V46 cse13]
- beq G_M28069_IG28
+ beq G_M28069_IG27
;; size=80 bbWeight=0.50 PerfScore 13.00
-G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
+G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
adds r0, r7, 3
ldr r1, [r9+0x14] // [V24 tmp17]
cmp r0, r1
- blt SHORT G_M28069_IG17
+ blt SHORT G_M28069_IG16
movw r1, 0xd1ff
movt r1, 0xd1ff
mov r0, r1
@@ -240,11 +238,11 @@ G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r
ldr r3, [r9+0x08] // [V44 cse11]
ldr lr, [r9+0x04] // [V46 cse13]
;; size=42 bbWeight=0.50 PerfScore 6.50
-G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
+G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
adds r0, r7, 1
ldr r1, [r9+0x14] // [V24 tmp17]
cmp r0, r1
- bhs G_M28069_IG31
+ bhs G_M28069_IG30
ldr r0, [r9+0x10] // [V23 tmp16]
; byrRegs +[r0]
movs r1, 121
@@ -253,7 +251,7 @@ G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r
ldr r0, [r9+0x14] // [V24 tmp17]
; byrRegs -[r0]
cmp lr, r0
- bhs G_M28069_IG31
+ bhs G_M28069_IG30
ldr r0, [r9+0x10] // [V23 tmp16]
; byrRegs +[r0]
adds r2, r3, 4
@@ -262,23 +260,23 @@ G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r
; byrRegs -[r0]
ldr r2, [r9+0x14] // [V24 tmp17]
cmp r0, r2
- bhs G_M28069_IG31
+ bhs G_M28069_IG30
ldr r0, [r9+0x10] // [V23 tmp16]
; byrRegs +[r0]
adds r3, r3, 6
strh r1, [r0+r3]
mov r7, lr
cmp r6, r7
- ble SHORT G_M28069_IG21
+ ble SHORT G_M28069_IG20
cmp r7, 0
- blt SHORT G_M28069_IG20
+ blt SHORT G_M28069_IG19
;; size=72 bbWeight=0.50 PerfScore 13.00
-G_M28069_IG18: ; bbWeight=3.96, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
+G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
; byrRegs -[r0]
...
+10 (+2.84%) : 20604.dasm - System.IO.Path:TryJoin(System.ReadOnlySpan1[ushort],System.ReadOnlySpan
1[ushort],System.Span`1[ushort],byref):ubyte (Tier1)
@@ -16,7 +16,7 @@
; V05 loc1 [V05,T21] ( 3, 1.50) int -> r10
;* V06 loc2 [V06 ] ( 0, 0 ) byref -> zero-ref single-def
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T07] ( 5, 2.50) byref -> r7
+; V08 tmp1 [V08,T07] ( 5, 2.50) byref -> r9
; V09 tmp2 [V09,T22] ( 3, 1.50) int -> r0
;* V10 tmp3 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V11 tmp4 [V11,T05] ( 3, 3 ) int -> r0 "Span.get_Item index"
@@ -103,22 +103,22 @@ G_M17254_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}
ldr r8, [sp+0x34]
cmp r8, 0
bne SHORT G_M17254_IG07
- add r7, sp, 40
- ; byrRegs +[r7]
+ addw r9, sp, 40
+ ; byrRegs +[r9]
b SHORT G_M17254_IG06
- ;; size=14 bbWeight=0.50 PerfScore 2.50
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
G_M17254_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref
- ; byrRegs -[r7]
- add r7, sp, 48
- ; byrRegs +[r7]
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M17254_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00B0 {r4 r5 r7}, byref, isz
- ldr r2, [r7+0x04]
+ ; byrRegs -[r9]
+ addw r9, sp, 48
+ ; byrRegs +[r9]
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M17254_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0230 {r4 r5 r9}, byref, isz
+ ldr r2, [r9+0x04]
cmp r6, r2
blt SHORT G_M17254_IG17
cmp r2, r6
bhi G_M17254_IG26
- ldr r1, [r7]
+ ldr r1, [r9]
; byrRegs +[r1]
lsls r2, r2, 1
mov r0, r5
@@ -128,12 +128,12 @@ G_M17254_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00B0 {r4 r5
ldr r3, [r3]
blx r3 // <unknown method>
; byrRegs -[r0-r1 r5]
- ldr r0, [r7+0x04]
+ ldr r0, [r9+0x04]
str r0, [r4]
b SHORT G_M17254_IG22
- ;; size=36 bbWeight=0.50 PerfScore 7.50
+ ;; size=42 bbWeight=0.50 PerfScore 7.50
G_M17254_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
- ; byrRegs -[r7] +[r5]
+ ; byrRegs -[r9] +[r5]
ldr r1, [sp+0x28]
; byrRegs +[r1]
mov r0, r1
@@ -291,7 +291,7 @@ G_M17254_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bkpt
;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 352, prolog size 10, PerfScore 69.00, instruction count 140, allocated bytes for code 352 (MethodHash=7c1abc99) for method System.IO.Path:TryJoin(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (Tier1)
+; Total bytes of code 362, prolog size 10, PerfScore 69.00, instruction count 140, allocated bytes for code 362 (MethodHash=7c1abc99) for method System.IO.Path:TryJoin(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (Tier1)
; ============================================================
Unwind Info:
@@ -303,7 +303,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 176 (0x000b0) Actual length = 352 (0x000160)
+ Function Length : 181 (0x000b5) Actual length = 362 (0x00016a)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+20 (+2.87%) : 23226.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (Tier0-FullOpts)
@@ -8,32 +8,32 @@
; 0 inlinees with PGO data; 12 single block inlinees; 6 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T06] ( 7, 8.50) ref -> r4 class-hnd single-def <System.String>
-; V01 arg1 [V01,T09] ( 6, 4 ) byref -> r7 single-def
-; V02 arg2 [V02,T07] ( 8, 5 ) byref -> r5 single-def
-; V03 arg3 [V03,T08] ( 7, 4.50) byref -> r6 single-def
-; V04 loc0 [V04,T00] ( 26, 36 ) int -> r8
-; V05 loc1 [V05,T10] ( 6, 3 ) int -> [sp+0x14]
+; V00 arg0 [V00,T07] ( 6, 8 ) ref -> r4 class-hnd single-def <System.String>
+; V01 arg1 [V01,T10] ( 6, 4 ) byref -> r7 single-def
+; V02 arg2 [V02,T08] ( 8, 5 ) byref -> r5 single-def
+; V03 arg3 [V03,T09] ( 7, 4.50) byref -> r6 single-def
+; V04 loc0 [V04,T00] ( 20, 32.50) int -> r8
+; V05 loc1 [V05,T11] ( 6, 3 ) int -> [sp+0x1C]
;* V06 loc2 [V06 ] ( 0, 0 ) ubyte -> zero-ref
-; V07 loc3 [V07,T11] ( 4, 3.50) ubyte -> r1
+; V07 loc3 [V07,T12] ( 4, 3.50) ubyte -> r1
;* V08 loc4 [V08 ] ( 0, 0 ) ubyte -> zero-ref
-; V09 loc5 [V09,T20] ( 4, 2 ) ubyte -> r1
+; V09 loc5 [V09,T21] ( 4, 2 ) ubyte -> r1
; V10 loc6 [V10,T04] ( 18, 13.50) ushort -> registers
-; V11 loc7 [V11,T05] ( 6, 7.50) ubyte -> r3
+; V11 loc7 [V11,T06] ( 6, 7.50) ubyte -> lr
;* V12 loc8 [V12 ] ( 0, 0 ) ubyte -> zero-ref
-; V13 loc9 [V13,T03] ( 4, 14 ) ubyte -> r3
+; V13 loc9 [V13,T03] ( 4, 14 ) ubyte -> lr
;# V14 OutArgs [V14 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V15 tmp1 [V15,T22] ( 3, 2 ) int -> r1
+; V15 tmp1 [V15,T23] ( 3, 2 ) int -> r1
;* V16 tmp2 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V17 tmp3 [V17 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V18 tmp4 [V18 ] ( 0, 0 ) byref -> zero-ref
;* V19 tmp5 [V19 ] ( 0, 0 ) byref -> zero-ref single-def
-; V20 tmp6 [V20,T33] ( 3, 1.50) int -> r3
+; V20 tmp6 [V20,T33] ( 3, 1.50) int -> lr
;* V21 tmp7 [V21 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V22 tmp8 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V23 tmp9 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V24 tmp10 [V24,T18] ( 3, 3 ) int -> [sp+0x10] spill-single-def "Inlining Arg"
-; V25 tmp11 [V25,T23] ( 2, 2 ) byref -> [sp+0x04] spill-single-def "Inlining Arg"
+; V24 tmp10 [V24,T19] ( 3, 3 ) int -> [sp+0x18] spill-single-def "Inlining Arg"
+; V25 tmp11 [V25,T24] ( 2, 2 ) byref -> [sp+0x08] spill-single-def "Inlining Arg"
;* V26 tmp12 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V27 tmp13 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V28 tmp14 [V28 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
@@ -48,18 +48,18 @@
;* V37 tmp23 [V37 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V38 tmp24 [V38 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V39 tmp25 [V39 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V40 tmp26 [V40,T24] ( 2, 2 ) byref -> r4 single-def "Inlining Arg"
+; V40 tmp26 [V40,T25] ( 2, 2 ) byref -> r4 single-def "Inlining Arg"
;* V41 tmp27 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V42 tmp28 [V42 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V43 tmp29 [V43,T19] ( 3, 3 ) int -> r8 "Single return block return value"
+; V43 tmp29 [V43,T20] ( 3, 3 ) int -> r8 "Single return block return value"
;* V44 tmp30 [V44 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP
;* V45 tmp31 [V45 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x4)" P-INDEP
;* V46 tmp32 [V46 ] ( 0, 0 ) byref -> zero-ref "field V17._reference (fldOffset=0x0)" P-INDEP
;* V47 tmp33 [V47 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x4)" P-INDEP
; V48 tmp34 [V48,T36] ( 2, 1 ) byref -> r0 single-def "field V21._reference (fldOffset=0x0)" P-INDEP
-; V49 tmp35 [V49,T40] ( 2, 1 ) int -> r2 "field V21._length (fldOffset=0x4)" P-INDEP
+; V49 tmp35 [V49,T40] ( 2, 1 ) int -> lr "field V21._length (fldOffset=0x4)" P-INDEP
; V50 tmp36 [V50,T37] ( 2, 1 ) byref -> r0 single-def "field V22._reference (fldOffset=0x0)" P-INDEP
-; V51 tmp37 [V51,T41] ( 2, 1 ) int -> r2 "field V22._length (fldOffset=0x4)" P-INDEP
+; V51 tmp37 [V51,T41] ( 2, 1 ) int -> lr "field V22._length (fldOffset=0x4)" P-INDEP
;* V52 tmp38 [V52 ] ( 0, 0 ) byref -> zero-ref "field V23._reference (fldOffset=0x0)" P-INDEP
;* V53 tmp39 [V53 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x4)" P-INDEP
;* V54 tmp40 [V54 ] ( 0, 0 ) byref -> zero-ref single-def "field V29._reference (fldOffset=0x0)" P-INDEP
@@ -74,35 +74,35 @@
;* V63 tmp49 [V63,T44] ( 0, 0 ) int -> zero-ref "field V38._length (fldOffset=0x4)" P-INDEP
;* V64 tmp50 [V64 ] ( 0, 0 ) byref -> zero-ref "field V39._reference (fldOffset=0x0)" P-INDEP
;* V65 tmp51 [V65 ] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0x4)" P-INDEP
-; V66 cse0 [V66,T21] ( 4, 2 ) int -> r3 "CSE - moderate"
-; V67 cse1 [V67,T31] ( 3, 1.50) byref -> r4 "CSE - moderate"
-; V68 cse2 [V68,T34] ( 3, 1.50) int -> [sp+0x0C] spill-single-def "CSE - moderate"
-; V69 cse3 [V69,T01] ( 10, 17 ) int -> r9 hoist "CSE - aggressive"
-; V70 cse4 [V70,T02] ( 13, 15 ) byref -> r10 multi-def "CSE - aggressive"
-; V71 cse5 [V71,T35] ( 3, 1.50) int -> [sp+0x08] spill-single-def "CSE - conservative"
-; V72 cse6 [V72,T32] ( 3, 1.50) ref -> r1 "CSE - moderate"
-; V73 rat0 [V73,T12] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable"
-; V74 rat1 [V74,T13] ( 3, 3 ) byref -> r5 "ReplaceWithLclVar is creating a new local variable"
-; V75 rat2 [V75,T25] ( 2, 2 ) int -> r0 "ReplaceWithLclVar is creating a new local variable"
-; V76 rat3 [V76,T26] ( 2, 2 ) int -> r1 "ReplaceWithLclVar is creating a new local variable"
-; V77 rat4 [V77,T14] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable"
-; V78 rat5 [V78,T15] ( 3, 3 ) byref -> r3 "ReplaceWithLclVar is creating a new local variable"
-; V79 rat6 [V79,T27] ( 2, 2 ) int -> r0 "ReplaceWithLclVar is creating a new local variable"
-; V80 rat7 [V80,T28] ( 2, 2 ) int -> r1 "ReplaceWithLclVar is creating a new local variable"
-; V81 rat8 [V81,T16] ( 3, 3 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
-; V82 rat9 [V82,T17] ( 3, 3 ) byref -> lr "ReplaceWithLclVar is creating a new local variable"
-; V83 rat10 [V83,T29] ( 2, 2 ) int -> r3 "ReplaceWithLclVar is creating a new local variable"
-; V84 rat11 [V84,T30] ( 2, 2 ) int -> r0 "ReplaceWithLclVar is creating a new local variable"
-; TEMP_01 ref -> [r11-0x38]
+; V66 cse0 [V66,T22] ( 4, 2 ) int -> lr "CSE - moderate"
+; V67 cse1 [V67,T32] ( 3, 1.50) byref -> r4 "CSE - moderate"
+; V68 cse2 [V68,T34] ( 3, 1.50) int -> [sp+0x14] spill-single-def "CSE - moderate"
+; V69 cse3 [V69,T01] ( 9, 16 ) int -> r9 hoist "CSE - aggressive"
+; V70 cse4 [V70,T02] ( 12, 14.50) byref -> r10 multi-def "CSE - aggressive"
+; V71 cse5 [V71,T05] ( 11, 12.50) int -> [sp+0x10] multi-def "CSE - aggressive"
+; V72 cse6 [V72,T35] ( 3, 1.50) int -> [sp+0x0C] spill-single-def "CSE - conservative"
+; V73 rat0 [V73,T13] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable"
+; V74 rat1 [V74,T14] ( 3, 3 ) byref -> r5 "ReplaceWithLclVar is creating a new local variable"
+; V75 rat2 [V75,T26] ( 2, 2 ) int -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V76 rat3 [V76,T27] ( 2, 2 ) int -> r1 "ReplaceWithLclVar is creating a new local variable"
+; V77 rat4 [V77,T15] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable"
+; V78 rat5 [V78,T16] ( 3, 3 ) byref -> r3 "ReplaceWithLclVar is creating a new local variable"
+; V79 rat6 [V79,T28] ( 2, 2 ) int -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V80 rat7 [V80,T29] ( 2, 2 ) int -> r1 "ReplaceWithLclVar is creating a new local variable"
+; V81 rat8 [V81,T17] ( 3, 3 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V82 rat9 [V82,T18] ( 3, 3 ) byref -> lr "ReplaceWithLclVar is creating a new local variable"
+; V83 rat10 [V83,T30] ( 2, 2 ) int -> r3 "ReplaceWithLclVar is creating a new local variable"
+; V84 rat11 [V84,T31] ( 2, 2 ) int -> r0 "ReplaceWithLclVar is creating a new local variable"
+; TEMP_01 ref -> [r11-0x3C]
;
-; Lcl frame size = 28
+; Lcl frame size = 36
G_M49978_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 28
- add r11, sp, 56
+ sub sp, 36
+ add r11, sp, 64
movs r4, 0
- str r4, [sp] // [TEMP_01]
+ str r4, [sp+0x04] // [TEMP_01]
mov r4, r0
; gcrRegs +[r4]
mov r7, r1
@@ -122,96 +122,90 @@ G_M49978_IG03: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r
;; size=4 bbWeight=2 PerfScore 2.00
G_M49978_IG04: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
cmp r9, r8
- bls SHORT G_M49978_IG06
+ bls SHORT G_M49978_IG09
;; size=4 bbWeight=8 PerfScore 16.00
G_M49978_IG05: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
add r10, r4, 8
; byrRegs +[r10]
- lsl r0, r8, 1
- ldrh r0, [r10+r0]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // System.UriHelper:IsLWS(ushort):ubyte
- ; byrRegs -[r10]
+ lsl r3, r8, 1
+ str r3, [sp+0x10]
+ ldrh r0, [r10+r3]
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ ldr r2, [r2]
+ blx r2 // System.UriHelper:IsLWS(ushort):ubyte
; gcr arg pop 0
cmp r0, 0
bne SHORT G_M49978_IG03
- ;; size=28 bbWeight=4 PerfScore 36.00
-G_M49978_IG06: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
- cmp r9, r8
- bls SHORT G_M49978_IG10
- ;; size=4 bbWeight=1 PerfScore 2.00
-G_M49978_IG07: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
- add r10, r4, 8
- ; byrRegs +[r10]
- lsl r1, r8, 1
- ldrh r1, [r10+r1]
- cmp r1, 47
- beq SHORT G_M49978_IG08
+ ;; size=30 bbWeight=4 PerfScore 40.00
+G_M49978_IG06: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=04E0 {r5 r6 r7 r10}, byref, isz
+ ldr r2, [sp+0x10] // [V71 cse5]
+ ldrh r2, [r10+r2]
+ cmp r2, 47
+ beq SHORT G_M49978_IG07
movs r1, 0
- b SHORT G_M49978_IG09
- ;; size=20 bbWeight=0.50 PerfScore 3.50
-G_M49978_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref
+ b SHORT G_M49978_IG08
+ ;; size=14 bbWeight=0.50 PerfScore 3.00
+G_M49978_IG07: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref
; byrRegs -[r10]
movs r1, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M49978_IG09: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
- b SHORT G_M49978_IG11
+G_M49978_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
+ b SHORT G_M49978_IG10
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M49978_IG10: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref
+G_M49978_IG09: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref
movs r1, 0
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M49978_IG11: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
+G_M49978_IG10: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
uxtb r1, r1
cmp r1, 0
- beq SHORT G_M49978_IG19
+ beq SHORT G_M49978_IG18
;; size=6 bbWeight=1 PerfScore 3.00
-G_M49978_IG12: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
+G_M49978_IG11: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
add r1, r8, 1
cmp r9, r1
- bls SHORT G_M49978_IG13
+ bls SHORT G_M49978_IG12
movs r1, 0
- b SHORT G_M49978_IG14
+ b SHORT G_M49978_IG13
;; size=12 bbWeight=0.50 PerfScore 2.50
-G_M49978_IG13: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref
+G_M49978_IG12: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref
movs r1, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M49978_IG14: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
+G_M49978_IG13: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
cmp r1, 0
- bne SHORT G_M49978_IG19
+ bne SHORT G_M49978_IG18
add r10, r4, 8
; byrRegs +[r10]
- lsl r1, r8, 1
- adds r1, r1, 2
- ldrh r2, [r10+r1]
- cmp r2, 47
- beq SHORT G_M49978_IG15
- cmp r2, 92
- bne SHORT G_M49978_IG16
+ lsl r2, r8, 1
+ adds r1, r2, 2
+ ldrh r3, [r10+r1]
+ cmp r3, 47
+ beq SHORT G_M49978_IG14
+ cmp r3, 92
+ bne SHORT G_M49978_IG15
;; size=26 bbWeight=0.50 PerfScore 5.00
-G_M49978_IG15: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
+G_M49978_IG14: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
; byrRegs -[r10]
- movs r3, 1
- b SHORT G_M49978_IG17
- ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M49978_IG16: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref
- movs r3, 0
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M49978_IG17: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
- cmp r3, 0
- beq SHORT G_M49978_IG18
+ mov lr, 1
...
coreclr_tests.run.linux.arm.checked.mch
-26 (-34.21%) : 127085.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
@@ -9,77 +9,61 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 3 ) byref -> r0 this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> r4 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> r1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> r1 class-hnd "spilling QMark2" <System.Int32>
-; V04 tmp2 [V04,T03] ( 2, 4 ) int -> r5 "impAppendStmt"
-; V05 cse0 [V05,T05] ( 3, 2 ) int -> r1 "CSE - aggressive"
-; V06 cse1 [V06,T04] ( 4, 2.50) int -> r3 "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> r3 class-hnd "spilling QMark2" <System.Int32>
+; V04 tmp2 [V04,T03] ( 2, 4 ) int -> r0 "impAppendStmt"
;
; Lcl frame size = 0
G_M40448_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr}
- add r11, sp, 8
- mov r4, r1
- ; gcrRegs +[r4]
- ;; size=10 bbWeight=1 PerfScore 3.00
-G_M40448_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz
- ; byrRegs +[r0]
- mov r1, r4
+ push {r11,lr}
+ mov r11, sp
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M40448_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz
; gcrRegs +[r1]
- cmp r1, 0
- beq SHORT G_M40448_IG09
+ ; byrRegs +[r0]
+ mov r3, r1
+ ; gcrRegs +[r3]
+ cmp r3, 0
+ bne SHORT G_M40448_IG05
;; size=6 bbWeight=1 PerfScore 3.00
-G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=0012 {r1 r4}, byrefRegs=0001 {r0}, byref, isz
- ldr r1, [r1]
- ; gcrRegs -[r1]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- cmp r1, r3
- bne SHORT G_M40448_IG09
- ;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M40448_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz
- ldr r5, [r0]
- cmp r1, r3
- bne SHORT G_M40448_IG08
- ;; size=6 bbWeight=1 PerfScore 3.00
-G_M40448_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M40448_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r1 r3]
; byrRegs -[r0]
- ldr r0, [r4+0x04]
- cmp r5, r0
- beq SHORT G_M40448_IG06
movs r0, 0
- b SHORT G_M40448_IG07
- ;; size=10 bbWeight=1 PerfScore 5.00
-G_M40448_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4]
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M40448_IG04: ; bbWeight=1, epilog, nogc, extend
+ pop {r11,pc}
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M40448_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000A {r1 r3}, byrefRegs=0001 {r0}, gcvars, byref, isz
+ ; gcrRegs +[r1 r3]
+ ; byrRegs +[r0]
+ ldr r3, [r3]
+ ; gcrRegs -[r3]
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ cmp r3, r2
+ bne SHORT G_M40448_IG03
+ ;; size=14 bbWeight=0.50 PerfScore 2.50
+G_M40448_IG06: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz
+ ldr r0, [r0]
+ ; byrRegs -[r0]
+ ldr r3, [r1+0x04]
+ cmp r0, r3
+ beq SHORT G_M40448_IG07
+ movs r0, 0
+ b SHORT G_M40448_IG08
+ ;; size=12 bbWeight=1 PerfScore 6.00
+G_M40448_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r1]
movs r0, 1
;; size=2 bbWeight=1 PerfScore 1.00
-G_M40448_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- pop {r4,r5,r11,pc}
+G_M40448_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop {r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M40448_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[r4]
- mov r1, r4
- ; gcrRegs +[r1]
- mov r0, r3
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // CORINFO_HELP_UNBOX
- ; gcrRegs -[r1]
- b SHORT G_M40448_IG05
- ;; size=18 bbWeight=0.50 PerfScore 3.50
-G_M40448_IG09: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4]
- movs r0, 0
- ;; size=2 bbWeight=0.25 PerfScore 0.25
-G_M40448_IG10: ; bbWeight=0.25, epilog, nogc, extend
- pop {r4,r5,r11,pc}
- ;; size=4 bbWeight=0.25 PerfScore 0.25
-; Total bytes of code 76, prolog size 8, PerfScore 22.50, instruction count 30, allocated bytes for code 76 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 50, prolog size 6, PerfScore 17.50, instruction count 20, allocated bytes for code 50 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -91,7 +75,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -103,7 +87,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end
FF end
-26 (-34.21%) : 23616.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
@@ -9,77 +9,61 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 3 ) byref -> r0 this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> r4 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> r1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> r1 class-hnd "spilling QMark2" <System.Int32>
-; V04 tmp2 [V04,T03] ( 2, 4 ) int -> r5 "impAppendStmt"
-; V05 cse0 [V05,T05] ( 3, 2 ) int -> r1 "CSE - aggressive"
-; V06 cse1 [V06,T04] ( 4, 2.50) int -> r3 "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> r3 class-hnd "spilling QMark2" <System.Int32>
+; V04 tmp2 [V04,T03] ( 2, 4 ) int -> r0 "impAppendStmt"
;
; Lcl frame size = 0
G_M40448_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr}
- add r11, sp, 8
- mov r4, r1
- ; gcrRegs +[r4]
- ;; size=10 bbWeight=1 PerfScore 3.00
-G_M40448_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz
- ; byrRegs +[r0]
- mov r1, r4
+ push {r11,lr}
+ mov r11, sp
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M40448_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz
; gcrRegs +[r1]
- cmp r1, 0
- beq SHORT G_M40448_IG09
+ ; byrRegs +[r0]
+ mov r3, r1
+ ; gcrRegs +[r3]
+ cmp r3, 0
+ bne SHORT G_M40448_IG05
;; size=6 bbWeight=1 PerfScore 3.00
-G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=0012 {r1 r4}, byrefRegs=0001 {r0}, byref, isz
- ldr r1, [r1]
- ; gcrRegs -[r1]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- cmp r1, r3
- bne SHORT G_M40448_IG09
- ;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M40448_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz
- ldr r5, [r0]
- cmp r1, r3
- bne SHORT G_M40448_IG08
- ;; size=6 bbWeight=1 PerfScore 3.00
-G_M40448_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M40448_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r1 r3]
; byrRegs -[r0]
- ldr r0, [r4+0x04]
- cmp r5, r0
- beq SHORT G_M40448_IG06
movs r0, 0
- b SHORT G_M40448_IG07
- ;; size=10 bbWeight=1 PerfScore 5.00
-G_M40448_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4]
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M40448_IG04: ; bbWeight=1, epilog, nogc, extend
+ pop {r11,pc}
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M40448_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000A {r1 r3}, byrefRegs=0001 {r0}, gcvars, byref, isz
+ ; gcrRegs +[r1 r3]
+ ; byrRegs +[r0]
+ ldr r3, [r3]
+ ; gcrRegs -[r3]
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ cmp r3, r2
+ bne SHORT G_M40448_IG03
+ ;; size=14 bbWeight=0.50 PerfScore 2.50
+G_M40448_IG06: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz
+ ldr r0, [r0]
+ ; byrRegs -[r0]
+ ldr r3, [r1+0x04]
+ cmp r0, r3
+ beq SHORT G_M40448_IG07
+ movs r0, 0
+ b SHORT G_M40448_IG08
+ ;; size=12 bbWeight=1 PerfScore 6.00
+G_M40448_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r1]
movs r0, 1
;; size=2 bbWeight=1 PerfScore 1.00
-G_M40448_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- pop {r4,r5,r11,pc}
+G_M40448_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop {r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M40448_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[r4]
- mov r1, r4
- ; gcrRegs +[r1]
- mov r0, r3
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // CORINFO_HELP_UNBOX
- ; gcrRegs -[r1]
- b SHORT G_M40448_IG05
- ;; size=18 bbWeight=0.50 PerfScore 3.50
-G_M40448_IG09: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4]
- movs r0, 0
- ;; size=2 bbWeight=0.25 PerfScore 0.25
-G_M40448_IG10: ; bbWeight=0.25, epilog, nogc, extend
- pop {r4,r5,r11,pc}
- ;; size=4 bbWeight=0.25 PerfScore 0.25
-; Total bytes of code 76, prolog size 8, PerfScore 22.50, instruction count 30, allocated bytes for code 76 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 50, prolog size 6, PerfScore 17.50, instruction count 20, allocated bytes for code 50 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -91,7 +75,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -103,7 +87,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end
FF end
-24 (-32.43%) : 122945.dasm - System.Byte:Equals(System.Object):ubyte:this (Tier1)
@@ -9,74 +9,61 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 3 ) byref -> r0 this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> r4 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> r1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> r1 class-hnd "spilling QMark2" <System.Byte>
-; V04 tmp2 [V04,T03] ( 2, 4 ) int -> r5 "impAppendStmt"
-; V05 cse0 [V05,T05] ( 3, 2 ) int -> r1 "CSE - aggressive"
-; V06 cse1 [V06,T04] ( 4, 2.50) int -> r3 "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> r3 class-hnd "spilling QMark2" <System.Byte>
+; V04 tmp2 [V04,T03] ( 2, 4 ) int -> r0 "impAppendStmt"
;
; Lcl frame size = 0
-G_M19224_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr}
- add r11, sp, 8
- mov r4, r1
- ; gcrRegs +[r4]
- ;; size=10 bbWeight=1 PerfScore 3.00
-G_M19224_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz
+G_M19224_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push {r11,lr}
+ mov r11, sp
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M19224_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz
+ ; gcrRegs +[r1]
; byrRegs +[r0]
- mov r1, r4
- ; gcrRegs +[r1]
- cmp r1, 0
- beq SHORT G_M19224_IG09
+ mov r3, r1
+ ; gcrRegs +[r3]
+ cmp r3, 0
+ beq SHORT G_M19224_IG04
;; size=6 bbWeight=1 PerfScore 3.00
-G_M19224_IG03: ; bbWeight=0.50, gcrefRegs=0012 {r1 r4}, byrefRegs=0001 {r0}, byref, isz
- ldr r1, [r1]
- ; gcrRegs -[r1]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- cmp r1, r3
- bne SHORT G_M19224_IG09
- ;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M19224_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz
- ldrb r5, [r0]
- cmp r1, r3
- beq SHORT G_M19224_IG06
- ;; size=6 bbWeight=1 PerfScore 3.00
-G_M19224_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- ; byrRegs -[r0]
- mov r1, r4
- ; gcrRegs +[r1]
- mov r0, r3
- movw r3, 0xd1ff
- movt r3, 0xd1ff
+G_M19224_IG03: ; bbWeight=0.50, gcrefRegs=000A {r1 r3}, byrefRegs=0001 {r0}, byref, isz
ldr r3, [r3]
- blx r3 // CORINFO_HELP_UNBOX
+ ; gcrRegs -[r3]
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ cmp r3, r2
+ beq SHORT G_M19224_IG06
+ ;; size=14 bbWeight=0.50 PerfScore 2.50
+G_M19224_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r1]
- ;; size=16 bbWeight=0.50 PerfScore 3.00
-G_M19224_IG06: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldrb r0, [r4+0x04]
- cmp r5, r0
+ ; byrRegs -[r0]
+ movs r0, 0
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M19224_IG05: ; bbWeight=1, epilog, nogc, extend
+ pop {r11,pc}
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M19224_IG06: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, gcvars, byref, isz
+ ; gcrRegs +[r1]
+ ; byrRegs +[r0]
+ ldrb r0, [r0]
+ ; byrRegs -[r0]
+ ldrb r3, [r1+0x04]
+ cmp r0, r3
beq SHORT G_M19224_IG07
movs r0, 0
b SHORT G_M19224_IG08
- ;; size=10 bbWeight=1 PerfScore 5.00
+ ;; size=12 bbWeight=1 PerfScore 6.00
G_M19224_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4]
+ ; gcrRegs -[r1]
movs r0, 1
;; size=2 bbWeight=1 PerfScore 1.00
G_M19224_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- pop {r4,r5,r11,pc}
+ pop {r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M19224_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- movs r0, 0
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M19224_IG10: ; bbWeight=0, epilog, nogc, extend
- pop {r4,r5,r11,pc}
- ;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 74, prolog size 8, PerfScore 21.50, instruction count 29, allocated bytes for code 74 (MethodHash=3af2b4e7) for method System.Byte:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 50, prolog size 6, PerfScore 17.50, instruction count 20, allocated bytes for code 50 (MethodHash=3af2b4e7) for method System.Byte:Equals(System.Object):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -88,7 +75,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 74 (0x00004a)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -100,7 +87,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end
FF end
+16 (+3.15%) : 134945.dasm - Program:Compare_UInt32(uint,uint) (Tier1)
@@ -11,7 +11,7 @@
; V01 arg1 [V01,T04] ( 6, 4.50) int -> r5 single-def
; V02 loc0 [V02 ] ( 22, 16.00) struct (24) [sp+0x00] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T08] ( 4, 4.95) int -> r6 "impAppendStmt"
+; V04 tmp1 [V04,T09] ( 4, 3 ) int -> r6 "impAppendStmt"
;* V05 tmp2 [V05 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V06 tmp3 [V06 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
; V07 tmp4 [V07,T19] ( 4, 1.50) int -> r7 "Inline return value spill temp"
@@ -40,8 +40,8 @@
;* V30 tmp27 [V30 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V31 tmp28 [V31,T02] ( 4, 8.00) int -> r0 "Inlining Arg"
;* V32 tmp29 [V32 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V33 tmp30 [V33,T07] ( 3, 6.00) int -> r4 "Inlining Arg"
-; V34 tmp31 [V34,T15] ( 2, 3.00) byref -> r5 single-def "Inlining Arg"
+; V33 tmp30 [V33,T07] ( 3, 6.00) int -> r8 "Inlining Arg"
+; V34 tmp31 [V34,T15] ( 2, 3.00) byref -> r4 single-def "Inlining Arg"
;* V35 tmp32 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V36 tmp33 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V37 tmp34 [V37,T22] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
@@ -66,7 +66,7 @@
;* V56 tmp53 [V56 ] ( 0, 0 ) int -> zero-ref single-def "field V32._length (fldOffset=0x4)" P-INDEP
;* V57 tmp54 [V57 ] ( 0, 0 ) byref -> zero-ref single-def "field V38._reference (fldOffset=0x0)" P-INDEP
;* V58 tmp55 [V58 ] ( 0, 0 ) int -> zero-ref single-def "field V38._length (fldOffset=0x4)" P-INDEP
-; V59 tmp56 [V59,T09] ( 2, 4 ) ref -> r2 single-def "argument with side effect"
+; V59 tmp56 [V59,T08] ( 2, 4 ) ref -> r2 single-def "argument with side effect"
; V60 cse0 [V60,T10] ( 3, 3.00) int -> r1 "CSE - moderate"
; V61 cse1 [V61,T11] ( 3, 3.00) int -> r1 "CSE - moderate"
; V62 cse2 [V62,T12] ( 3, 3.00) int -> r1 "CSE - moderate"
@@ -92,27 +92,26 @@ G_M61478_IG02: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
;; size=4 bbWeight=1.00 PerfScore 2.00
G_M61478_IG03: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov r6, -1
- b SHORT G_M61478_IG27
+ b SHORT G_M61478_IG13
;; size=6 bbWeight=0.25 PerfScore 0.50
G_M61478_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp r4, r5
- bls SHORT G_M61478_IG06
+ bls SHORT G_M61478_IG08
;; size=4 bbWeight=0.25 PerfScore 0.50
-G_M61478_IG05: ; bbWeight=0.23, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M61478_IG05: ; bbWeight=0.23, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r6, 1
- b SHORT G_M61478_IG07
- ;; size=4 bbWeight=0.23 PerfScore 0.46
-G_M61478_IG06: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movs r6, 0
- ;; size=2 bbWeight=1.00 PerfScore 1.00
-G_M61478_IG07: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=2 bbWeight=0.23 PerfScore 0.23
+G_M61478_IG06: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp r4, r5
bls SHORT G_M61478_IG09
;; size=4 bbWeight=0.25 PerfScore 0.50
-G_M61478_IG08: ; bbWeight=0.23, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movs r7, 1
- b SHORT G_M61478_IG10
- ;; size=4 bbWeight=0.23 PerfScore 0.46
+G_M61478_IG07: ; bbWeight=0.23, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M61478_IG17
+ ;; size=2 bbWeight=0.23 PerfScore 0.23
+G_M61478_IG08: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ movs r6, 0
+ b SHORT G_M61478_IG06
+ ;; size=4 bbWeight=0.02 PerfScore 0.05
G_M61478_IG09: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r7, 0
;; size=2 bbWeight=0.02 PerfScore 0.02
@@ -127,7 +126,7 @@ G_M61478_IG10: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ldr r0, [sp+0x08]
ldr r1, [sp+0x14]
cmp r0, r1
- bhi G_M61478_IG31
+ bhi G_M61478_IG34
;; size=28 bbWeight=1.00 PerfScore 11.00
G_M61478_IG11: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr r3, [sp+0x10]
@@ -137,10 +136,19 @@ G_M61478_IG11: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; byrRegs +[r8]
sub r9, r1, r0
cmp r9, 0
- bge SHORT G_M61478_IG13
+ bge SHORT G_M61478_IG15
;; size=18 bbWeight=1.00 PerfScore 6.00
-G_M61478_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0100 {r8}, byref
+G_M61478_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0100 {r8}, byref, isz
; byrRegs -[r3]
+ b SHORT G_M61478_IG14
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
+G_M61478_IG13: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[r8]
+ mov r7, -1
+ b SHORT G_M61478_IG10
+ ;; size=6 bbWeight=0.25 PerfScore 0.50
+G_M61478_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0100 {r8}, byref
+ ; byrRegs +[r8]
movw r0, 0xd1ff
movt r0, 0xd1ff
movw r1, 0xd1ff
@@ -150,11 +158,46 @@ G_M61478_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0100 {r8}, b
ldr r3, [r3]
blx r3 // <unknown method>
;; size=28 bbWeight=0.50 PerfScore 4.00
-G_M61478_IG13: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0100 {r8}, byref, isz
+G_M61478_IG15: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0100 {r8}, byref, isz
cmp r9, 0
- beq G_M61478_IG28
+ beq G_M61478_IG32
;; size=8 bbWeight=1.00 PerfScore 2.00
-G_M61478_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0100 {r8}, byref
+G_M61478_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0100 {r8}, byref, isz
+ b SHORT G_M61478_IG21
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
+G_M61478_IG17: ; bbWeight=0.23, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[r8]
+ movs r7, 1
+ b SHORT G_M61478_IG10
+ ;; size=4 bbWeight=0.23 PerfScore 0.46
+G_M61478_IG18: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ add r0, sp, 0
+ mov r1, r4
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // <unknown method>
+ ldr r0, [sp+0x08]
+ ldr r1, [sp+0x14]
+ cmp r0, r1
+ bhi G_M61478_IG34
+ ;; size=26 bbWeight=1.00 PerfScore 10.00
+G_M61478_IG19: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ldr r2, [sp+0x10]
+ ; byrRegs +[r2]
+ lsls r3, r0, 1
+ adds r4, r2, r3
+ ; byrRegs +[r4]
+ sub r8, r1, r0
+ cmp r8, 0
+ bge SHORT G_M61478_IG23
+ ;; size=16 bbWeight=1.00 PerfScore 6.00
+G_M61478_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+ ; byrRegs -[r2]
+ b SHORT G_M61478_IG22
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
+G_M61478_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0100 {r8}, byref, isz
+ ; byrRegs -[r4] +[r8]
movw r1, 0xd1ff
movt r1, 0xd1ff
mov r0, r8
@@ -168,31 +211,10 @@ G_M61478_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0100 {r8}, b
ldr r0, [sp+0x08]
adds r0, r0, 1
str r0, [sp+0x08]
- ;; size=30 bbWeight=0.50 PerfScore 5.50
-G_M61478_IG15: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- add r0, sp, 0
- mov r1, r4
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // <unknown method>
- ldr r0, [sp+0x08]
- ldr r1, [sp+0x14]
- cmp r0, r1
- bhi G_M61478_IG31
- ;; size=26 bbWeight=1.00 PerfScore 10.00
-G_M61478_IG16: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr r3, [sp+0x10]
- ; byrRegs +[r3]
- lsls r2, r0, 1
- adds r4, r3, r2
+ b SHORT G_M61478_IG18
+ ;; size=32 bbWeight=0.50 PerfScore 6.00
+G_M61478_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
; byrRegs +[r4]
- sub r8, r1, r0
- cmp r8, 0
- bge SHORT G_M61478_IG18
- ;; size=16 bbWeight=1.00 PerfScore 6.00
-G_M61478_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
- ; byrRegs -[r3]
movw r0, 0xd1ff
movt r0, 0xd1ff
movw r1, 0xd1ff
@@ -202,11 +224,11 @@ G_M61478_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, b
ldr r3, [r3]
blx r3 // <unknown method>
;; size=28 bbWeight=0.50 PerfScore 4.00
-G_M61478_IG18: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+G_M61478_IG23: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
cmp r8, 2
- blo SHORT G_M61478_IG29
+ blo SHORT G_M61478_IG33
;; size=6 bbWeight=1.00 PerfScore 2.00
-G_M61478_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
+G_M61478_IG24: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
movw r1, 0xd1ff
movt r1, 0xd1ff
mov r0, r4
@@ -221,7 +243,7 @@ G_M61478_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, b
adds r0, r0, 2
str r0, [sp+0x08]
;; size=30 bbWeight=0.50 PerfScore 5.50
-G_M61478_IG20: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M61478_IG25: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
add r0, sp, 0
mov r1, r5
movw r3, 0xd1ff
@@ -231,19 +253,19 @@ G_M61478_IG20: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ldr r0, [sp+0x08]
ldr r1, [sp+0x14]
cmp r0, r1
- bhi SHORT G_M61478_IG31
+ bhi SHORT G_M61478_IG34
;; size=24 bbWeight=1.00 PerfScore 10.00
-G_M61478_IG21: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M61478_IG26: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr r3, [sp+0x10]
; byrRegs +[r3]
lsls r2, r0, 1
- adds r5, r3, r2
- ; byrRegs +[r5]
- subs r4, r1, r0
- cmp r4, 0
- bge SHORT G_M61478_IG23
- ;; size=12 bbWeight=1.00 PerfScore 6.00
-G_M61478_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref
+ adds r4, r3, r2
+ ; byrRegs +[r4]
+ sub r8, r1, r0
+ cmp r8, 0
+ bge SHORT G_M61478_IG28
+ ;; size=16 bbWeight=1.00 PerfScore 6.00
+G_M61478_IG27: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
; byrRegs -[r3]
movw r0, 0xd1ff
movt r0, 0xd1ff
@@ -254,26 +276,26 @@ G_M61478_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, b
ldr r3, [r3]
blx r3 // <unknown method>
;; size=28 bbWeight=0.50 PerfScore 4.00
-G_M61478_IG23: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz
- cmp r4, 3
- blo SHORT G_M61478_IG30
- ;; size=4 bbWeight=1.00 PerfScore 2.00
-G_M61478_IG24: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref
+G_M61478_IG28: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+ cmp r8, 3
+ blo SHORT G_M61478_IG35
...
+40 (+3.36%) : 305690.dasm - ILCompiler.Compilation:CanInline(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.MethodDesc):ubyte:this (Tier1)
@@ -11,7 +11,7 @@
;
; V00 this [V00,T14] ( 4, 4.00) ref -> r7 this class-hnd single-def <ILCompiler.Compilation>
; V01 arg1 [V01,T04] ( 17, 10.40) ref -> r6 class-hnd single-def <Internal.TypeSystem.MethodDesc>
-; V02 arg2 [V02,T03] ( 30, 17.19) ref -> r5 class-hnd single-def <Internal.TypeSystem.MethodDesc>
+; V02 arg2 [V02,T03] ( 30, 16.52) ref -> r5 class-hnd single-def <Internal.TypeSystem.MethodDesc>
;* V03 loc0 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <Internal.TypeSystem.MethodDesc>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (20) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T30] ( 2, 2 ) int -> r0 "guarded devirt return temp"
@@ -20,7 +20,7 @@
;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
; V09 tmp5 [V09,T36] ( 2, 2.00) int -> r0 "guarded devirt return temp"
;* V10 tmp6 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V11 tmp7 [V11,T50] ( 3, 0.75) ref -> r0 "guarded devirt return temp"
+; V11 tmp7 [V11,T54] ( 3, 0.08) ref -> r0 "guarded devirt return temp"
;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
;* V13 tmp9 [V13,T32] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Internal.JitInterface.JitConfigProvider>
@@ -30,94 +30,94 @@
; V18 tmp14 [V18,T42] ( 3, 1.52) int -> r3 "Inline return value spill temp"
; V19 tmp15 [V19,T28] ( 3, 2.28) int -> r3 single-def "Inline stloc first use temp"
;* V20 tmp16 [V20 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V21 tmp17 [V21,T41] ( 3, 1.58) int -> r9 "Inline return value spill temp"
-; V22 tmp18 [V22,T27] ( 3, 2.37) int -> r9 single-def "Inline stloc first use temp"
+; V21 tmp17 [V21,T41] ( 3, 1.58) int -> r3 "Inline return value spill temp"
+; V22 tmp18 [V22,T27] ( 3, 2.37) int -> r3 single-def "Inline stloc first use temp"
;* V23 tmp19 [V23 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V24 tmp20 [V24,T43] ( 3, 1.40) int -> r3 "Inline return value spill temp"
-; V25 tmp21 [V25,T29] ( 3, 2.10) int -> r3 single-def "Inline stloc first use temp"
+; V24 tmp20 [V24,T43] ( 3, 1.40) int -> r2 "Inline return value spill temp"
+; V25 tmp21 [V25,T29] ( 3, 2.10) int -> r2 single-def "Inline stloc first use temp"
;* V26 tmp22 [V26 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V27 tmp23 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <ILCompiler.DependencyAnalysis.NodeFactory>
; V28 tmp24 [V28,T20] ( 3, 4.00) ref -> r0 class-hnd exact single-def "dup spill" <<unknown class>>
;* V29 tmp25 [V29 ] ( 0, 0 ) ref -> zero-ref single-def
;* V30 tmp26 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <ILCompiler.DependencyAnalysis.NodeFactory>
; V31 tmp27 [V31,T05] ( 11, 12.00) ref -> r7 class-hnd single-def "Inlining Arg" <ILCompiler.ReadyToRunCompilationModuleGroupBase>
-; V32 tmp28 [V32,T33] ( 4, 2.00) int -> r8
+; V32 tmp28 [V32,T33] ( 4, 2.00) int -> r3
; V33 tmp29 [V33,T24] ( 4, 3.00) ubyte -> r4 "Inline stloc first use temp"
;* V34 tmp30 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V35 tmp31 [V35,T12] ( 6, 6.66) ref -> [sp+0x3C] class-hnd spill-single-def "Inlining Arg" <<unknown class>>
+; V35 tmp31 [V35,T12] ( 6, 6.66) ref -> [sp+0x30] class-hnd spill-single-def "Inlining Arg" <<unknown class>>
; V36 tmp32 [V36,T10] ( 5, 8.63) ref -> r9 class-hnd single-def "Inlining Arg" <<unknown class>>
-; V37 tmp33 [V37,T17] ( 5, 4.32) ref -> [sp+0x38] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V37 tmp33 [V37,T17] ( 5, 4.32) ref -> [sp+0x2C] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
; V38 tmp34 [V38,T46] ( 2, 1.00) ref -> r0 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V39 tmp35 [V39,T06] ( 4, 11.00) int -> [sp+0x4C] spill-single-def "Inline stloc first use temp"
-; V40 tmp36 [V40 ] ( 4, 3.32) ubyte -> [sp+0x48] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V39 tmp35 [V39,T06] ( 4, 11.00) int -> [sp+0x44] spill-single-def "Inline stloc first use temp"
+; V40 tmp36 [V40 ] ( 4, 3.32) ubyte -> [sp+0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
;* V41 tmp37 [V41 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
;* V42 tmp38 [V42 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Nullable`1[int]>
-; V43 tmp39 [V43,T51] ( 3, 0.63) int -> r0 "guarded devirt return temp"
+; V43 tmp39 [V43,T50] ( 3, 0.63) int -> r0 "guarded devirt return temp"
;* V44 tmp40 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp" <ILCompiler.ReadyToRunCompilationModuleGroupBase>
; V45 tmp41 [V45,T34] ( 3, 2.00) int -> registers "Inline return value spill temp"
;* V46 tmp42 [V46 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def "Inlining Arg" <Internal.TypeSystem.MethodDesc>
;* V47 tmp43 [V47 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V48 tmp44 [V48 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <Internal.TypeSystem.MethodDesc>
-; V49 tmp45 [V49,T53] ( 3, 0.51) int -> r0 "guarded devirt return temp"
+; V49 tmp45 [V49,T52] ( 3, 0.51) int -> r0 "guarded devirt return temp"
;* V50 tmp46 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
;* V51 tmp47 [V51,T37] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V52 tmp48 [V52,T15] ( 2, 5.00) ref -> [sp+0x34] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
-; V53 tmp49 [V53,T00] ( 8, 39.00) ref -> [sp+0x30] class-hnd "Inline stloc first use temp" <<unknown class>>
+; V52 tmp48 [V52,T15] ( 2, 5.00) ref -> [sp+0x28] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V53 tmp49 [V53,T00] ( 8, 39.00) ref -> r8 class-hnd "Inline stloc first use temp" <<unknown class>>
;* V54 tmp50 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <<unknown class>>
-; V55 tmp51 [V55,T25] ( 3, 3.00) ref -> [sp+0x2C] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V55 tmp51 [V55,T25] ( 3, 3.00) ref -> [sp+0x24] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
;* V56 tmp52 [V56 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V57 tmp53 [V57 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V58 tmp54 [V58 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V59 tmp55 [V59 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V60 tmp56 [V60,T13] ( 6, 6.66) ref -> r6 class-hnd single-def "Inlining Arg" <<unknown class>>
-; V61 tmp57 [V61,T11] ( 5, 8.63) ref -> r9 class-hnd single-def "Inlining Arg" <<unknown class>>
-; V62 tmp58 [V62,T18] ( 5, 4.32) ref -> [sp+0x28] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V60 tmp56 [V60,T13] ( 6, 6.66) ref -> r9 class-hnd single-def "Inlining Arg" <<unknown class>>
+; V61 tmp57 [V61,T11] ( 5, 8.63) ref -> r8 class-hnd single-def "Inlining Arg" <<unknown class>>
+; V62 tmp58 [V62,T18] ( 5, 4.32) ref -> r6 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
; V63 tmp59 [V63,T47] ( 2, 1.00) ref -> r0 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V64 tmp60 [V64,T07] ( 4, 11.00) int -> r8 single-def "Inline stloc first use temp"
-; V65 tmp61 [V65 ] ( 4, 3.32) ubyte -> [sp+0x44] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V64 tmp60 [V64,T07] ( 4, 11.00) int -> [sp+0x3C] spill-single-def "Inline stloc first use temp"
+; V65 tmp61 [V65 ] ( 4, 3.32) ubyte -> [sp+0x38] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
;* V66 tmp62 [V66 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
;* V67 tmp63 [V67 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Nullable`1[int]>
-; V68 tmp64 [V68,T52] ( 3, 0.63) int -> r0 "guarded devirt return temp"
+; V68 tmp64 [V68,T51] ( 3, 0.63) int -> r0 "guarded devirt return temp"
;* V69 tmp65 [V69 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp" <ILCompiler.ReadyToRunCompilationModuleGroupBase>
-; V70 tmp66 [V70,T35] ( 3, 2.00) int -> r8 "Inline return value spill temp"
+; V70 tmp66 [V70,T35] ( 3, 2.00) int -> registers "Inline return value spill temp"
;* V71 tmp67 [V71 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def "Inlining Arg" <Internal.TypeSystem.MethodDesc>
;* V72 tmp68 [V72 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V73 tmp69 [V73 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <Internal.TypeSystem.MethodDesc>
-; V74 tmp70 [V74,T54] ( 3, 0.51) int -> r0 "guarded devirt return temp"
+; V74 tmp70 [V74,T53] ( 3, 0.51) int -> r0 "guarded devirt return temp"
;* V75 tmp71 [V75 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
;* V76 tmp72 [V76,T38] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V77 tmp73 [V77,T16] ( 2, 5.00) ref -> [sp+0x24] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
-; V78 tmp74 [V78,T01] ( 8, 39.00) ref -> [sp+0x20] class-hnd "Inline stloc first use temp" <<unknown class>>
+; V77 tmp73 [V77,T16] ( 2, 5.00) ref -> [sp+0x20] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V78 tmp74 [V78,T01] ( 8, 39.00) ref -> [sp+0x1C] class-hnd "Inline stloc first use temp" <<unknown class>>
;* V79 tmp75 [V79 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <<unknown class>>
-; V80 tmp76 [V80,T26] ( 3, 3.00) ref -> [sp+0x1C] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V80 tmp76 [V80,T26] ( 3, 3.00) ref -> [sp+0x18] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
;* V81 tmp77 [V81 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V82 tmp78 [V82 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V83 tmp79 [V83 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V84 tmp80 [V84,T21] ( 2, 4.00) int -> r4 "Single return block return value"
;* V85 tmp81 [V85,T48] ( 0, 0 ) ubyte -> zero-ref single-def "field V41.hasValue (fldOffset=0x0)" P-INDEP
-; V86 tmp82 [V86,T44] ( 2, 1.32) int -> [sp+0x40] spill-single-def "field V41.value (fldOffset=0x4)" P-INDEP
+; V86 tmp82 [V86,T44] ( 2, 1.32) int -> r8 single-def "field V41.value (fldOffset=0x4)" P-INDEP
;* V87 tmp83 [V87 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V42.hasValue (fldOffset=0x0)" P-INDEP
;* V88 tmp84 [V88 ] ( 0, 0 ) int -> zero-ref single-def "field V42.value (fldOffset=0x4)" P-INDEP
;* V89 tmp85 [V89,T49] ( 0, 0 ) ubyte -> zero-ref single-def "field V66.hasValue (fldOffset=0x0)" P-INDEP
-; V90 tmp86 [V90,T45] ( 2, 1.32) int -> r8 single-def "field V66.value (fldOffset=0x4)" P-INDEP
+; V90 tmp86 [V90,T45] ( 2, 1.32) int -> r4 single-def "field V66.value (fldOffset=0x4)" P-INDEP
;* V91 tmp87 [V91 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V67.hasValue (fldOffset=0x0)" P-INDEP
;* V92 tmp88 [V92 ] ( 0, 0 ) int -> zero-ref single-def "field V67.value (fldOffset=0x4)" P-INDEP
; V93 cse0 [V93,T39] ( 2, 2.00) int -> r0 "CSE - moderate"
; V94 cse1 [V94,T40] ( 2, 2.00) int -> r0 "CSE - moderate"
-; V95 cse2 [V95,T23] ( 3, 3 ) int -> r4 "CSE - moderate"
+; V95 cse2 [V95,T23] ( 3, 3 ) int -> r9 "CSE - moderate"
; V96 cse3 [V96,T09] ( 2, 9 ) byref -> r0 hoist "CSE - aggressive"
; V97 cse4 [V97,T08] ( 3, 10 ) int -> r2 "CSE - aggressive"
-; V98 cse5 [V98,T19] ( 7, 4.26) int -> r8 "CSE - moderate"
+; V98 cse5 [V98,T19] ( 7, 4.26) int -> [sp+0x34] "CSE - moderate"
;
-; Lcl frame size = 84
+; Lcl frame size = 76
G_M18032_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 84
- add r11, sp, 112
+ sub sp, 76
+ add r11, sp, 104
movs r3, 0
- str r3, [sp+0x48] // [V40 tmp36]
- str r3, [sp+0x44] // [V65 tmp61]
+ str r3, [sp+0x40] // [V40 tmp36]
+ str r3, [sp+0x38] // [V65 tmp61]
mov r7, r0
; gcrRegs +[r7]
mov r6, r1
@@ -162,7 +162,7 @@ G_M18032_IG05: ; bbWeight=8, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0001 {r
lsls r1, r3, 2
ldr r1, [r0+r1]
cmp r1, 2
- beq G_M18032_IG29
+ beq G_M18032_IG49
adds r3, r3, 1
cmp r2, r3
bgt SHORT G_M18032_IG05
@@ -180,42 +180,68 @@ G_M18032_IG07: ; bbWeight=0.76, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000
dmb 15
and r3, r0, 33
cmp r3, 0
- beq G_M18032_IG59
+ beq G_M18032_IG65
;; size=16 bbWeight=0.76 PerfScore 3.80
G_M18032_IG08: ; bbWeight=0.76, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
ands r0, r3, 32
cmp r0, 0
- bne G_M18032_IG29
+ bne G_M18032_IG49
;; size=10 bbWeight=0.76 PerfScore 2.28
G_M18032_IG09: ; bbWeight=0.79, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
ldr r0, [r5+0x1C]
dmb 15
- movw r3, 0xd1ff
- and r9, r0, r3
- cmp r9, 0
- beq G_M18032_IG60
- b SHORT G_M18032_IG25
- ;; size=24 bbWeight=0.79 PerfScore 5.53
+ movw r1, 0xd1ff
+ and r3, r0, r1
+ cmp r3, 0
+ beq G_M18032_IG66
+ b SHORT G_M18032_IG11
+ ;; size=22 bbWeight=0.79 PerfScore 5.53
G_M18032_IG10: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
mov r0, r5
; gcrRegs +[r0]
- ldr r4, [r8+0x30]
- ldr r3, [r4]
+ ldr r9, [r8+0x30]
+ ldr r3, [r9]
blx r3 // <unknown method>
; gcrRegs -[r0]
; gcr arg pop 0
cmp r0, 0
- bne G_M18032_IG29
+ bne G_M18032_IG49
+ b SHORT G_M18032_IG13
+ ;; size=20 bbWeight=1 PerfScore 7.00
+G_M18032_IG11: ; bbWeight=0.79, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+ ands r0, r3, 0x1000
+ cmp r0, 0
+ str r8, [sp+0x34]
+ bne G_M18032_IG49
+ ;; size=14 bbWeight=0.79 PerfScore 3.16
+G_M18032_IG12: ; bbWeight=0.70, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+ ldr r0, [r5+0x1C]
+ dmb 15
+ and r2, r0, 3
+ cmp r2, 0
+ beq G_M18032_IG67
+ b SHORT G_M18032_IG15
+ ;; size=18 bbWeight=0.70 PerfScore 4.20
+G_M18032_IG13: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
mov r0, r5
; gcrRegs +[r0]
- ldr r3, [r4+0x0C]
+ ldr r3, [r9+0x0C]
blx r3 // <unknown method>
; gcrRegs -[r0]
; gcr arg pop 0
cmp r0, 0
- bne G_M18032_IG29
- ;; size=28 bbWeight=1 PerfScore 11.00
-G_M18032_IG11: ; bbWeight=1.00, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+ bne G_M18032_IG49
+ ;; size=14 bbWeight=1 PerfScore 5.00
+G_M18032_IG14: ; bbWeight=1.00, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M18032_IG16
+ ;; size=2 bbWeight=1.00 PerfScore 1.00
+G_M18032_IG15: ; bbWeight=0.70, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+ ands r0, r2, 2
+ cmp r0, 0
+ beq SHORT G_M18032_IG20
+ b SHORT G_M18032_IG18
+ ;; size=10 bbWeight=0.70 PerfScore 2.80
+G_M18032_IG16: ; bbWeight=1.00, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
mov r0, r5
; gcrRegs +[r0]
ldr r3, [r8+0x38]
@@ -224,179 +250,17 @@ G_M18032_IG11: ; bbWeight=1.00, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000
; gcrRegs -[r0]
; gcr arg pop 0
cmp r0, 0
- bne G_M18032_IG39
- ;; size=16 bbWeight=1.00 PerfScore 6.00
-G_M18032_IG12: ; bbWeight=1.00, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r7+0x08]
- ; gcrRegs +[r0]
- ldr r0, [r0+0x9C]
...
+46 (+3.89%) : 311687.dasm - ILCompiler.Compilation:CanInline(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.MethodDesc):ubyte:this (Tier1)
@@ -11,7 +11,7 @@
;
; V00 this [V00,T14] ( 4, 4.00) ref -> r7 this class-hnd single-def <ILCompiler.Compilation>
; V01 arg1 [V01,T04] ( 17, 10.40) ref -> r6 class-hnd single-def <Internal.TypeSystem.MethodDesc>
-; V02 arg2 [V02,T03] ( 30, 17.66) ref -> r5 class-hnd single-def <Internal.TypeSystem.MethodDesc>
+; V02 arg2 [V02,T03] ( 30, 16.89) ref -> r5 class-hnd single-def <Internal.TypeSystem.MethodDesc>
;* V03 loc0 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <Internal.TypeSystem.MethodDesc>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (20) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T34] ( 2, 2 ) int -> r0 "guarded devirt return temp"
@@ -20,7 +20,7 @@
;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
; V09 tmp5 [V09,T38] ( 2, 2.00) int -> r0 "guarded devirt return temp"
;* V10 tmp6 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V11 tmp7 [V11,T50] ( 3, 0.86) ref -> r0 "guarded devirt return temp"
+; V11 tmp7 [V11,T54] ( 3, 0.08) ref -> r0 "guarded devirt return temp"
;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
;* V13 tmp9 [V13,T36] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Internal.JitInterface.JitConfigProvider>
@@ -30,11 +30,11 @@
; V18 tmp14 [V18,T42] ( 3, 1.68) int -> r3 "Inline return value spill temp"
; V19 tmp15 [V19,T28] ( 3, 2.52) int -> r3 single-def "Inline stloc first use temp"
;* V20 tmp16 [V20 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V21 tmp17 [V21,T41] ( 3, 1.80) int -> r9 "Inline return value spill temp"
-; V22 tmp18 [V22,T27] ( 3, 2.70) int -> r9 single-def "Inline stloc first use temp"
+; V21 tmp17 [V21,T41] ( 3, 1.80) int -> r3 "Inline return value spill temp"
+; V22 tmp18 [V22,T27] ( 3, 2.70) int -> r3 single-def "Inline stloc first use temp"
;* V23 tmp19 [V23 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V24 tmp20 [V24,T43] ( 3, 1.62) int -> r3 "Inline return value spill temp"
-; V25 tmp21 [V25,T29] ( 3, 2.43) int -> r3 single-def "Inline stloc first use temp"
+; V24 tmp20 [V24,T43] ( 3, 1.62) int -> r2 "Inline return value spill temp"
+; V25 tmp21 [V25,T29] ( 3, 2.43) int -> r2 single-def "Inline stloc first use temp"
;* V26 tmp22 [V26 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V27 tmp23 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <ILCompiler.DependencyAnalysis.NodeFactory>
; V28 tmp24 [V28,T20] ( 3, 4.00) ref -> r0 class-hnd exact single-def "dup spill" <<unknown class>>
@@ -42,82 +42,82 @@
;* V30 tmp26 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <ILCompiler.DependencyAnalysis.NodeFactory>
; V31 tmp27 [V31,T05] ( 11, 12.03) ref -> r7 class-hnd single-def "Inlining Arg" <ILCompiler.ReadyToRunCompilationModuleGroupBase>
; V32 tmp28 [V32,T30] ( 4, 2.01) int -> r3
-; V33 tmp29 [V33,T23] ( 4, 3.01) ubyte -> r6 "Inline stloc first use temp"
+; V33 tmp29 [V33,T23] ( 4, 3.01) ubyte -> r4 "Inline stloc first use temp"
;* V34 tmp30 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V35 tmp31 [V35,T13] ( 6, 6.78) ref -> [sp+0x3C] class-hnd spill-single-def "Inlining Arg" <<unknown class>>
+; V35 tmp31 [V35,T13] ( 6, 6.78) ref -> [sp+0x30] class-hnd spill-single-def "Inlining Arg" <<unknown class>>
; V36 tmp32 [V36,T11] ( 5, 8.69) ref -> r9 class-hnd single-def "Inlining Arg" <<unknown class>>
-; V37 tmp33 [V37,T18] ( 5, 4.34) ref -> [sp+0x38] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V37 tmp33 [V37,T18] ( 5, 4.34) ref -> [sp+0x2C] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
; V38 tmp34 [V38,T48] ( 2, 1.00) ref -> r0 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V39 tmp35 [V39,T07] ( 4, 10.99) int -> [sp+0x4C] spill-single-def "Inline stloc first use temp"
-; V40 tmp36 [V40 ] ( 4, 3.35) ubyte -> [sp+0x48] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V39 tmp35 [V39,T07] ( 4, 10.99) int -> [sp+0x44] spill-single-def "Inline stloc first use temp"
+; V40 tmp36 [V40 ] ( 4, 3.35) ubyte -> [sp+0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
;* V41 tmp37 [V41 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
;* V42 tmp38 [V42 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Nullable`1[int]>
-; V43 tmp39 [V43,T52] ( 3, 0.70) int -> r0 "guarded devirt return temp"
+; V43 tmp39 [V43,T51] ( 3, 0.70) int -> r0 "guarded devirt return temp"
;* V44 tmp40 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp" <ILCompiler.ReadyToRunCompilationModuleGroupBase>
; V45 tmp41 [V45,T37] ( 3, 2.00) int -> registers "Inline return value spill temp"
;* V46 tmp42 [V46 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def "Inlining Arg" <Internal.TypeSystem.MethodDesc>
;* V47 tmp43 [V47 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V48 tmp44 [V48 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <Internal.TypeSystem.MethodDesc>
-; V49 tmp45 [V49,T54] ( 3, 0.47) int -> r0 "guarded devirt return temp"
+; V49 tmp45 [V49,T53] ( 3, 0.47) int -> r0 "guarded devirt return temp"
;* V50 tmp46 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
;* V51 tmp47 [V51,T39] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V52 tmp48 [V52,T16] ( 2, 5.00) ref -> [sp+0x34] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
-; V53 tmp49 [V53,T01] ( 8, 38.97) ref -> [sp+0x30] class-hnd "Inline stloc first use temp" <<unknown class>>
+; V52 tmp48 [V52,T16] ( 2, 5.00) ref -> [sp+0x28] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V53 tmp49 [V53,T01] ( 8, 38.97) ref -> r8 class-hnd "Inline stloc first use temp" <<unknown class>>
;* V54 tmp50 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <<unknown class>>
-; V55 tmp51 [V55,T26] ( 3, 3.00) ref -> [sp+0x2C] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V55 tmp51 [V55,T26] ( 3, 3.00) ref -> [sp+0x24] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
;* V56 tmp52 [V56 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V57 tmp53 [V57 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V58 tmp54 [V58 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V59 tmp55 [V59 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V60 tmp56 [V60,T12] ( 6, 6.83) ref -> r6 class-hnd single-def "Inlining Arg" <<unknown class>>
-; V61 tmp57 [V61,T10] ( 5, 8.76) ref -> r9 class-hnd single-def "Inlining Arg" <<unknown class>>
-; V62 tmp58 [V62,T17] ( 5, 4.38) ref -> [sp+0x28] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V60 tmp56 [V60,T12] ( 6, 6.83) ref -> r9 class-hnd single-def "Inlining Arg" <<unknown class>>
+; V61 tmp57 [V61,T10] ( 5, 8.76) ref -> r8 class-hnd single-def "Inlining Arg" <<unknown class>>
+; V62 tmp58 [V62,T17] ( 5, 4.38) ref -> r6 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
; V63 tmp59 [V63,T46] ( 2, 1.01) ref -> r0 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V64 tmp60 [V64,T06] ( 4, 11.08) int -> r8 single-def "Inline stloc first use temp"
-; V65 tmp61 [V65 ] ( 4, 3.37) ubyte -> [sp+0x44] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V64 tmp60 [V64,T06] ( 4, 11.08) int -> [sp+0x3C] spill-single-def "Inline stloc first use temp"
+; V65 tmp61 [V65 ] ( 4, 3.37) ubyte -> [sp+0x38] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
;* V66 tmp62 [V66 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
;* V67 tmp63 [V67 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Nullable`1[int]>
-; V68 tmp64 [V68,T51] ( 3, 0.70) int -> r0 "guarded devirt return temp"
+; V68 tmp64 [V68,T50] ( 3, 0.70) int -> r0 "guarded devirt return temp"
;* V69 tmp65 [V69 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp" <ILCompiler.ReadyToRunCompilationModuleGroupBase>
-; V70 tmp66 [V70,T31] ( 3, 2.01) int -> r8 "Inline return value spill temp"
+; V70 tmp66 [V70,T31] ( 3, 2.01) int -> registers "Inline return value spill temp"
;* V71 tmp67 [V71 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def "Inlining Arg" <Internal.TypeSystem.MethodDesc>
;* V72 tmp68 [V72 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V73 tmp69 [V73 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <Internal.TypeSystem.MethodDesc>
-; V74 tmp70 [V74,T53] ( 3, 0.47) int -> r0 "guarded devirt return temp"
+; V74 tmp70 [V74,T52] ( 3, 0.47) int -> r0 "guarded devirt return temp"
;* V75 tmp71 [V75 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
;* V76 tmp72 [V76,T32] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V77 tmp73 [V77,T15] ( 2, 5.03) ref -> [sp+0x24] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
-; V78 tmp74 [V78,T00] ( 8, 39.27) ref -> [sp+0x20] class-hnd "Inline stloc first use temp" <<unknown class>>
+; V77 tmp73 [V77,T15] ( 2, 5.03) ref -> [sp+0x20] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V78 tmp74 [V78,T00] ( 8, 39.27) ref -> [sp+0x1C] class-hnd "Inline stloc first use temp" <<unknown class>>
;* V79 tmp75 [V79 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <<unknown class>>
-; V80 tmp76 [V80,T22] ( 3, 3.02) ref -> [sp+0x1C] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V80 tmp76 [V80,T22] ( 3, 3.02) ref -> [sp+0x18] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
;* V81 tmp77 [V81 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V82 tmp78 [V82 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V83 tmp79 [V83 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V84 tmp80 [V84,T21] ( 2, 4.00) int -> r6 "Single return block return value"
+; V84 tmp80 [V84,T21] ( 2, 4.00) int -> r4 "Single return block return value"
;* V85 tmp81 [V85,T49] ( 0, 0 ) ubyte -> zero-ref single-def "field V41.hasValue (fldOffset=0x0)" P-INDEP
-; V86 tmp82 [V86,T45] ( 2, 1.35) int -> [sp+0x40] spill-single-def "field V41.value (fldOffset=0x4)" P-INDEP
+; V86 tmp82 [V86,T45] ( 2, 1.35) int -> r8 single-def "field V41.value (fldOffset=0x4)" P-INDEP
;* V87 tmp83 [V87 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V42.hasValue (fldOffset=0x0)" P-INDEP
;* V88 tmp84 [V88 ] ( 0, 0 ) int -> zero-ref single-def "field V42.value (fldOffset=0x4)" P-INDEP
;* V89 tmp85 [V89,T47] ( 0, 0 ) ubyte -> zero-ref single-def "field V66.hasValue (fldOffset=0x0)" P-INDEP
-; V90 tmp86 [V90,T44] ( 2, 1.36) int -> r8 single-def "field V66.value (fldOffset=0x4)" P-INDEP
+; V90 tmp86 [V90,T44] ( 2, 1.36) int -> r4 single-def "field V66.value (fldOffset=0x4)" P-INDEP
;* V91 tmp87 [V91 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V67.hasValue (fldOffset=0x0)" P-INDEP
;* V92 tmp88 [V92 ] ( 0, 0 ) int -> zero-ref single-def "field V67.value (fldOffset=0x4)" P-INDEP
; V93 cse0 [V93,T33] ( 2, 2.01) int -> r0 "CSE - moderate"
; V94 cse1 [V94,T40] ( 2, 2.00) int -> r0 "CSE - moderate"
-; V95 cse2 [V95,T25] ( 3, 3 ) int -> r4 "CSE - moderate"
+; V95 cse2 [V95,T25] ( 3, 3 ) int -> r9 "CSE - moderate"
; V96 cse3 [V96,T09] ( 2, 9 ) byref -> r0 hoist "CSE - aggressive"
; V97 cse4 [V97,T08] ( 3, 10 ) int -> r2 "CSE - aggressive"
-; V98 cse5 [V98,T19] ( 7, 4.24) int -> r8 "CSE - moderate"
+; V98 cse5 [V98,T19] ( 7, 4.24) int -> [sp+0x34] "CSE - moderate"
;
-; Lcl frame size = 84
+; Lcl frame size = 76
G_M18032_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 84
- add r11, sp, 112
+ sub sp, 76
+ add r11, sp, 104
movs r3, 0
- str r3, [sp+0x48] // [V40 tmp36]
- str r3, [sp+0x44] // [V65 tmp61]
+ str r3, [sp+0x40] // [V40 tmp36]
+ str r3, [sp+0x38] // [V65 tmp61]
mov r7, r0
; gcrRegs +[r7]
mov r6, r1
@@ -162,7 +162,7 @@ G_M18032_IG05: ; bbWeight=8, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0001 {r
lsls r1, r3, 2
ldr r1, [r0+r1]
cmp r1, 2
- beq G_M18032_IG27
+ beq G_M18032_IG48
adds r3, r3, 1
cmp r2, r3
bgt SHORT G_M18032_IG05
@@ -180,42 +180,68 @@ G_M18032_IG07: ; bbWeight=0.84, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000
dmb 15
and r3, r0, 33
cmp r3, 0
- beq G_M18032_IG56
+ beq G_M18032_IG62
;; size=16 bbWeight=0.84 PerfScore 4.20
G_M18032_IG08: ; bbWeight=0.84, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
ands r0, r3, 32
cmp r0, 0
- bne G_M18032_IG27
+ bne G_M18032_IG48
;; size=10 bbWeight=0.84 PerfScore 2.52
G_M18032_IG09: ; bbWeight=0.90, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
ldr r0, [r5+0x1C]
dmb 15
- movw r3, 0xd1ff
- and r9, r0, r3
- cmp r9, 0
- beq G_M18032_IG57
- b SHORT G_M18032_IG23
- ;; size=24 bbWeight=0.90 PerfScore 6.30
+ movw r1, 0xd1ff
+ and r3, r0, r1
+ cmp r3, 0
+ beq G_M18032_IG63
+ b SHORT G_M18032_IG11
+ ;; size=22 bbWeight=0.90 PerfScore 6.30
G_M18032_IG10: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
mov r0, r5
; gcrRegs +[r0]
- ldr r4, [r8+0x30]
- ldr r3, [r4]
+ ldr r9, [r8+0x30]
+ ldr r3, [r9]
blx r3 // <unknown method>
; gcrRegs -[r0]
; gcr arg pop 0
cmp r0, 0
- bne G_M18032_IG27
+ bne G_M18032_IG48
+ b SHORT G_M18032_IG13
+ ;; size=20 bbWeight=1 PerfScore 7.00
+G_M18032_IG11: ; bbWeight=0.90, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+ ands r0, r3, 0x1000
+ cmp r0, 0
+ str r8, [sp+0x34]
+ bne G_M18032_IG48
+ ;; size=14 bbWeight=0.90 PerfScore 3.60
+G_M18032_IG12: ; bbWeight=0.81, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+ ldr r0, [r5+0x1C]
+ dmb 15
+ and r2, r0, 3
+ cmp r2, 0
+ beq G_M18032_IG64
+ b SHORT G_M18032_IG15
+ ;; size=18 bbWeight=0.81 PerfScore 4.86
+G_M18032_IG13: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
mov r0, r5
; gcrRegs +[r0]
- ldr r3, [r4+0x0C]
+ ldr r3, [r9+0x0C]
blx r3 // <unknown method>
; gcrRegs -[r0]
; gcr arg pop 0
cmp r0, 0
- bne G_M18032_IG27
- ;; size=28 bbWeight=1 PerfScore 11.00
-G_M18032_IG11: ; bbWeight=1.00, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+ bne G_M18032_IG48
+ ;; size=14 bbWeight=1 PerfScore 5.00
+G_M18032_IG14: ; bbWeight=1.00, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M18032_IG16
+ ;; size=2 bbWeight=1.00 PerfScore 1.00
+G_M18032_IG15: ; bbWeight=0.81, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+ ands r0, r2, 2
+ cmp r0, 0
+ beq SHORT G_M18032_IG20
+ b SHORT G_M18032_IG18
+ ;; size=10 bbWeight=0.81 PerfScore 3.24
+G_M18032_IG16: ; bbWeight=1.00, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
mov r0, r5
; gcrRegs +[r0]
ldr r3, [r8+0x38]
@@ -224,176 +250,17 @@ G_M18032_IG11: ; bbWeight=1.00, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000
; gcrRegs -[r0]
; gcr arg pop 0
cmp r0, 0
- bne G_M18032_IG37
- ;; size=16 bbWeight=1.00 PerfScore 6.00
-G_M18032_IG12: ; bbWeight=1.00, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r7+0x08]
- ; gcrRegs +[r0]
...
libraries.crossgen2.linux.arm.checked.mch
-32 (-25.81%) : 197.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
@@ -8,15 +8,17 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 5, 7.50) ref -> r0 class-hnd single-def <System.String>
-; V01 arg1 [V01,T02] ( 6, 11 ) ref -> r1 class-hnd single-def <System.String>
-; V02 arg2 [V02,T05] ( 4, 6.50) int -> r2 single-def
-; V03 arg3 [V03,T07] ( 5, 4 ) int -> r3 single-def
-; V04 loc0 [V04,T03] ( 5, 11.50) int -> r12
-; V05 loc1 [V05,T00] ( 11, 27.50) int -> r4
+; V00 arg0 [V00,T04] ( 4, 7 ) ref -> r0 class-hnd single-def <System.String>
+; V01 arg1 [V01,T01] ( 4, 10 ) ref -> r1 class-hnd single-def <System.String>
+; V02 arg2 [V02,T07] ( 3, 6 ) int -> r2 single-def
+; V03 arg3 [V03,T09] ( 5, 4 ) int -> r3 single-def
+; V04 loc0 [V04,T03] ( 4, 10.50) int -> r12
+; V05 loc1 [V05,T00] ( 7, 25 ) int -> r4
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T06] ( 5, 7 ) int -> lr "CSE - aggressive"
-; V08 cse1 [V08,T01] ( 6, 13.50) int -> r6 multi-def "CSE - aggressive"
+; V07 cse0 [V07,T05] ( 3, 8.50) int -> r6 "CSE - aggressive"
+; V08 cse1 [V08,T06] ( 3, 8.50) int -> r5 "CSE - aggressive"
+; V09 cse2 [V09,T08] ( 4, 6.50) int -> lr "CSE - aggressive"
+; V10 cse3 [V10,T02] ( 3, 12 ) int -> r6 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -43,11 +45,11 @@ G_M6389_IG05: ; bbWeight=2, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, by
;; size=2 bbWeight=2 PerfScore 2.00
G_M6389_IG06: ; bbWeight=8, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
cmp r4, r12
- bge SHORT G_M6389_IG08
+ bge SHORT G_M6389_IG10
;; size=4 bbWeight=8 PerfScore 16.00
G_M6389_IG07: ; bbWeight=4, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
cmp r4, lr
- bhs SHORT G_M6389_IG13
+ bhs SHORT G_M6389_IG12
add r5, r0, 8
; byrRegs +[r5]
lsls r6, r4, 1
@@ -56,7 +58,7 @@ G_M6389_IG07: ; bbWeight=4, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, by
adds r6, r2, r4
ldr r7, [r1+0x04]
cmp r6, r7
- bhs SHORT G_M6389_IG13
+ bhs SHORT G_M6389_IG12
lsls r6, r6, 1
add r7, r1, 8
; byrRegs +[r7]
@@ -64,42 +66,21 @@ G_M6389_IG07: ; bbWeight=4, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, by
cmp r5, r6
beq SHORT G_M6389_IG05
;; size=32 bbWeight=4 PerfScore 56.00
-G_M6389_IG08: ; bbWeight=1, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
+G_M6389_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r0-r1]
; byrRegs -[r7]
- cmp r4, r12
- bge SHORT G_M6389_IG11
- ;; size=4 bbWeight=1 PerfScore 2.00
-G_M6389_IG09: ; bbWeight=0.50, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
- cmp r4, lr
- bhs SHORT G_M6389_IG13
- adds r0, 8
- ; gcrRegs -[r0]
- ; byrRegs +[r0]
- lsls r3, r4, 1
- ldrh r0, [r0+r3]
- ; byrRegs -[r0]
- adds r6, r2, r4
- ldr lr, [r1+0x04]
- cmp r6, lr
- bhs SHORT G_M6389_IG13
- lsls r3, r6, 1
- add r2, r1, 8
- ; byrRegs +[r2]
- ldrh r3, [r2+r3]
- subs r0, r0, r3
- ;; size=30 bbWeight=0.50 PerfScore 6.50
-G_M6389_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ subs r0, r5, r6
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
+G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend
pop {r4,r5,r6,r7,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M6389_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r1]
- ; byrRegs -[r2]
+G_M6389_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
sub r0, lr, r3
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M6389_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M6389_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop {r4,r5,r6,r7,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M6389_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movw r3, LOW RELOC 0xD1FFAB1E
movt r3, HIGH RELOC 0xD1FFAB1E
add r3, pc
@@ -109,7 +90,7 @@ G_M6389_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefR
bkpt
;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 124, prolog size 8, PerfScore 92.50, instruction count 50, allocated bytes for code 124 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
+; Total bytes of code 92, prolog size 8, PerfScore 84.50, instruction count 36, allocated bytes for code 92 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -121,7 +102,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 62 (0x0003e) Actual length = 124 (0x00007c)
+ Function Length : 46 (0x0002e) Actual length = 92 (0x00005c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-18 (-13.43%) : 170939.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (FullOpts)
@@ -8,87 +8,78 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T05] ( 4, 4 ) struct ( 8) [sp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V01 arg1 [V01,T06] ( 4, 4 ) struct ( 8) [sp+0x18] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V02 loc0 [V02,T00] ( 7, 24.50) int -> r0
+; V00 arg0 [V00,T07] ( 4, 4 ) struct ( 8) [sp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
+; V01 arg1 [V01,T08] ( 4, 4 ) struct ( 8) [sp+0x18] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
+; V02 loc0 [V02,T00] ( 7, 24.50) int -> lr
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> r12 "dup spill"
-; V05 tmp2 [V05,T07] ( 3, 5.50) byref -> r3 single-def "V00.[000..004)"
-; V06 tmp3 [V06,T04] ( 5, 7 ) int -> r2 "V00.[004..008)"
-; V07 tmp4 [V07,T08] ( 3, 5.50) byref -> r1 single-def "V01.[000..004)"
-; V08 tmp5 [V08,T03] ( 6, 7.50) int -> lr "V01.[004..008)"
-; V09 cse0 [V09,T02] ( 6, 13.50) int -> r4 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> lr "dup spill"
+; V05 tmp2 [V05,T09] ( 2, 5 ) byref -> r0 single-def "V00.[000..004)"
+; V06 tmp3 [V06,T06] ( 4, 6.50) int -> r3 "V00.[004..008)"
+; V07 tmp4 [V07,T10] ( 2, 5 ) byref -> r2 single-def "V01.[000..004)"
+; V08 tmp5 [V08,T05] ( 5, 7 ) int -> r1 "V01.[004..008)"
+; V09 cse0 [V09,T03] ( 3, 8.50) int -> r4 "CSE - aggressive"
+; V10 cse1 [V10,T04] ( 3, 8.50) int -> r12 "CSE - aggressive"
+; V11 cse2 [V11,T02] ( 3, 12 ) int -> r12 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M264_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r0,r1,r2,r3}
- push {r4,r5,r11,lr}
+ push {r3,r4,r11,lr}
add r11, sp, 8
;; size=10 bbWeight=1 PerfScore 3.00
G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr r3, [sp+0x10]
- ; byrRegs +[r3]
- ldr r2, [sp+0x14]
- ldr r1, [sp+0x18]
- ; byrRegs +[r1]
- ldr lr, [sp+0x1C]
- cmp r2, lr
+ ldr r0, [sp+0x10]
+ ; byrRegs +[r0]
+ ldr r3, [sp+0x14]
+ ldr r2, [sp+0x18]
+ ; byrRegs +[r2]
+ ldr r1, [sp+0x1C]
+ cmp r3, r1
beq SHORT G_M264_IG04
- ;; size=14 bbWeight=1 PerfScore 6.00
+ ;; size=12 bbWeight=1 PerfScore 6.00
G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r1 r3]
- cmp r2, lr
+ ; byrRegs -[r0 r2]
+ cmp r3, r1
blt SHORT G_M264_IG11
- b SHORT G_M264_IG09
+ b SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, byref
- ; byrRegs +[r1 r3]
- mov r0, lr
+G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {r0 r2}, byref
+ ; byrRegs +[r0 r2]
+ mov lr, r1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, byref, isz
- add r12, r0, -1
- mov r0, r12
- cmp r0, 0
- blt SHORT G_M264_IG06
- cmp r0, r2
+G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {r0 r2}, byref, isz
+ add lr, lr, -1
+ cmp lr, 0
+ blt SHORT G_M264_IG09
+ cmp lr, r3
bhs SHORT G_M264_IG13
- lsls r4, r0, 2
- ldr r5, [r3+r4]
- cmp r0, lr
+ lsl r12, lr, 2
+ ldr r4, [r0+r12]
+ cmp lr, r1
bhs SHORT G_M264_IG13
- ldr r4, [r1+r4]
- cmp r5, r4
+ ldr r12, [r2+r12]
+ cmp r4, r12
beq SHORT G_M264_IG05
- ;; size=28 bbWeight=4 PerfScore 52.00
-G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, byref, isz
- cmp r12, 0
- bge SHORT G_M264_IG08
- movs r0, 0
- ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,lr}
+ ;; size=34 bbWeight=4 PerfScore 48.00
+G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[r0 r2]
+ cmp r12, r4
+ bhi SHORT G_M264_IG11
+ ;; size=4 bbWeight=0.50 PerfScore 1.00
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ movs r0, 1
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ pop {r3,r4,r11,lr}
add sp, 16
bx lr
;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M264_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, gcvars, byref, isz
- cmp r12, r2
- bhs SHORT G_M264_IG13
- lsl r4, r12, 2
- ldr r0, [r3+r4]
- cmp r12, lr
- bhs SHORT G_M264_IG13
- ldr r3, [r1+r4]
- ; byrRegs -[r3]
- cmp r0, r3
- blo SHORT G_M264_IG11
- ;; size=20 bbWeight=0.50 PerfScore 4.50
-G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[r1]
- movs r0, 1
+G_M264_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ movs r0, 0
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,lr}
+ pop {r3,r4,r11,lr}
add sp, 16
bx lr
;; size=8 bbWeight=0.50 PerfScore 1.50
@@ -96,7 +87,7 @@ G_M264_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byre
mov r0, -1
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M264_IG12: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,lr}
+ pop {r3,r4,r11,lr}
add sp, 16
bx lr
;; size=8 bbWeight=0.50 PerfScore 1.50
@@ -110,7 +101,7 @@ G_M264_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRe
bkpt
;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 134, prolog size 10, PerfScore 74.50, instruction count 55, allocated bytes for code 134 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 116, prolog size 10, PerfScore 66.00, instruction count 45, allocated bytes for code 116 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -122,7 +113,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 67 (0x00043) Actual length = 134 (0x000086)
+ Function Length : 58 (0x0003a) Actual length = 116 (0x000074)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -137,11 +128,11 @@ Unwind Info:
Condition : 14 (0xe) (always)
Epilog Start Index : 5 (0x05)
---- Unwind codes ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 18 pop {r3,r4,r11,lr} ; opsize 32
EC 0F pop {r0,r1,r2,r3} ; opsize 16
FF end
---- Epilog start at index 5 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 18 pop {r3,r4,r11,lr} ; opsize 32
04 add sp, sp, #16 ; opsize 16
FD end + nop ; opsize 16
FF end
-20 (-10.31%) : 72601.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
@@ -9,14 +9,15 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 11, 21 ) ref -> r0 this class-hnd single-def <System.Data.ExpressionParser>
-; V01 loc0 [V01,T04] ( 6, 14 ) ref -> r3 class-hnd single-def <<unknown class>>
+; V01 loc0 [V01,T04] ( 5, 13 ) ref -> r3 class-hnd single-def <<unknown class>>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 24 ) int -> r1 "index expr"
-; V04 tmp2 [V04,T05] ( 3, 6 ) int -> r1 "index expr"
-; V05 tmp3 [V05,T06] ( 2, 0 ) ref -> r0 single-def "argument with side effect"
-; V06 tmp4 [V06,T07] ( 2, 0 ) ref -> r0 single-def "argument with side effect"
-; V07 cse0 [V07,T00] ( 9, 31 ) int -> r5 "CSE - aggressive"
-; V08 cse1 [V08,T03] ( 5, 22 ) int -> r2 "CSE - aggressive"
+;* V04 tmp2 [V04,T06] ( 0, 0 ) int -> zero-ref "index expr"
+; V05 tmp3 [V05,T07] ( 2, 0 ) ref -> r0 single-def "argument with side effect"
+; V06 tmp4 [V06,T08] ( 2, 0 ) ref -> r0 single-def "argument with side effect"
+; V07 cse0 [V07,T05] ( 3, 9 ) int -> r2 "CSE - aggressive"
+; V08 cse1 [V08,T00] ( 7, 29 ) int -> r5 "CSE - aggressive"
+; V09 cse2 [V09,T03] ( 3, 20 ) int -> r2 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -35,23 +36,9 @@ G_M44374_IG03: ; bbWeight=8, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {}, b
str r5, [r0+0x18]
ldr r2, [r3+0x04]
cmp r2, r5
- ble SHORT G_M44374_IG05
+ ble SHORT G_M44374_IG08
;; size=12 bbWeight=8 PerfScore 48.00
G_M44374_IG04: ; bbWeight=4, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {}, byref, isz
- mov r1, r5
- cmp r1, r2
- bhs SHORT G_M44374_IG07
- add lr, r3, 8
- ; byrRegs +[lr]
- lsls r1, r1, 1
- ldrh r1, [lr+r1]
- cmp r1, 35
- bne SHORT G_M44374_IG03
- ;; size=20 bbWeight=4 PerfScore 32.00
-G_M44374_IG05: ; bbWeight=1, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[lr]
- cmp r2, r5
- ble SHORT G_M44374_IG08
mov r1, r5
cmp r1, r2
bhs SHORT G_M44374_IG07
@@ -60,13 +47,17 @@ G_M44374_IG05: ; bbWeight=1, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {}, b
lsls r1, r1, 1
ldrh r2, [r2+r1]
; byrRegs -[r2]
+ cmp r2, 35
+ bne SHORT G_M44374_IG03
+ ;; size=18 bbWeight=4 PerfScore 32.00
+G_M44374_IG05: ; bbWeight=1, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {}, byref, isz
cmp r2, 35
bne SHORT G_M44374_IG09
movs r2, 7
str r2, [r0+0x20]
adds r2, r5, 1
str r2, [r0+0x18]
- ;; size=30 bbWeight=1 PerfScore 14.00
+ ;; size=12 bbWeight=1 PerfScore 6.00
G_M44374_IG06: ; bbWeight=1, epilog, nogc, extend
pop {r4,r5,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
@@ -136,7 +127,7 @@ G_M44374_IG09: ; bbWeight=0, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {}, b
bkpt
;; size=52 bbWeight=0 PerfScore 0.00
-; Total bytes of code 194, prolog size 8, PerfScore 98.00, instruction count 77, allocated bytes for code 194 (MethodHash=962252a9) for method System.Data.ExpressionParser:ScanDate():this (FullOpts)
+; Total bytes of code 174, prolog size 8, PerfScore 90.00, instruction count 69, allocated bytes for code 174 (MethodHash=962252a9) for method System.Data.ExpressionParser:ScanDate():this (FullOpts)
; ============================================================
Unwind Info:
@@ -148,7 +139,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 97 (0x00061) Actual length = 194 (0x0000c2)
+ Function Length : 87 (0x00057) Actual length = 174 (0x0000ae)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+12 (+2.14%) : 156020.dasm - System.ComponentModel.AttributeCollection:FromExisting(System.ComponentModel.AttributeCollection,System.Attribute[]):System.ComponentModel.AttributeCollection (FullOpts)
@@ -9,33 +9,35 @@
; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T06] ( 8, 26 ) ref -> r5 class-hnd single-def <System.ComponentModel.AttributeCollection>
-; V01 arg1 [V01,T11] ( 8, 13.50) ref -> r6 class-hnd <System.Attribute[]>
-; V02 loc0 [V02,T03] ( 10, 30 ) ref -> r7 class-hnd exact single-def <System.Attribute[]>
-; V03 loc1 [V03,T14] ( 6, 7 ) int -> registers
-; V04 loc2 [V04,T17] ( 4, 2.50) ref -> r5 class-hnd <System.Attribute[]>
-; V05 loc3 [V05,T08] ( 5, 17 ) int -> r9
-;* V06 loc4 [V06,T13] ( 0, 0 ) ubyte -> zero-ref
-; V07 loc5 [V07,T00] ( 7, 88 ) int -> [sp+0x0C]
+; V00 arg0 [V00,T04] ( 8, 26 ) ref -> r5 class-hnd single-def <System.ComponentModel.AttributeCollection>
+; V01 arg1 [V01,T10] ( 6, 8.50) ref -> r6 class-hnd <System.Attribute[]>
+; V02 loc0 [V02,T03] ( 10, 28 ) ref -> r8 class-hnd exact single-def <System.Attribute[]>
+; V03 loc1 [V03,T13] ( 6, 7 ) int -> [sp+0x1C]
+; V04 loc2 [V04,T19] ( 4, 2.50) ref -> r5 class-hnd <System.Attribute[]>
+; V05 loc3 [V05,T08] ( 5, 17 ) int -> r10
+;* V06 loc4 [V06,T16] ( 0, 0 ) ubyte -> zero-ref
+; V07 loc5 [V07,T00] ( 7, 86 ) int -> [sp+0x18]
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V09 tmp1 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <<unknown class>>
-; V10 tmp2 [V10,T10] ( 2, 16 ) ref -> r1 class-hnd "Strict ordering of exceptions for Array store" <System.Attribute>
-; V11 tmp3 [V11,T09] ( 4, 16 ) int -> r8 "impSpillLclRefs"
+; V10 tmp2 [V10,T11] ( 2, 8 ) ref -> r1 class-hnd "Strict ordering of exceptions for Array store" <System.Attribute>
+; V11 tmp3 [V11,T09] ( 4, 16 ) int -> r9 "impSpillLclRefs"
; V12 tmp4 [V12,T12] ( 2, 8 ) ref -> r1 class-hnd "Strict ordering of exceptions for Array store" <System.Attribute>
; V13 tmp5 [V13,T15] ( 3, 6 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <System.ComponentModel.AttributeCollection>
-; V14 tmp6 [V14,T16] ( 2, 4 ) int -> r0 "argument with side effect"
-; V15 tmp7 [V15,T01] ( 2, 64 ) ref -> [sp+0x00] spill-single-def "argument with side effect"
+; V14 tmp6 [V14,T18] ( 2, 4 ) int -> r0 "argument with side effect"
+; V15 tmp7 [V15,T01] ( 2, 64 ) ref -> [sp+0x0C] spill-single-def "argument with side effect"
; V16 tmp8 [V16,T02] ( 2, 64 ) ref -> r1 "argument with side effect"
-; V17 cse0 [V17,T04] ( 5, 30 ) byref -> r10 "CSE - aggressive"
-; V18 cse1 [V18,T05] ( 5, 30 ) int -> [sp+0x08] spill-single-def "CSE - aggressive"
-; V19 cse2 [V19,T07] ( 6, 24 ) int -> [sp+0x04] hoist multi-def "CSE - aggressive"
+; V17 cse0 [V17,T17] ( 2, 5 ) ref -> [sp+0x08] spill-single-def hoist "CSE - moderate"
+; V18 cse1 [V18,T05] ( 5, 28 ) byref -> [sp+0x04] spill-single-def "CSE - aggressive"
+; V19 cse2 [V19,T06] ( 5, 28 ) int -> [sp+0x14] spill-single-def "CSE - aggressive"
+; V20 cse3 [V20,T07] ( 6, 24 ) int -> [sp+0x10] hoist multi-def "CSE - aggressive"
+; V21 cse4 [V21,T14] ( 4, 7 ) int -> r7 "CSE - moderate"
;
-; Lcl frame size = 20
+; Lcl frame size = 36
G_M10252_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 20
- add r11, sp, 48
+ sub sp, 36
+ add r11, sp, 64
mov r5, r0
; gcrRegs +[r5]
mov r6, r1
@@ -86,25 +88,25 @@ G_M10252_IG04: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b
blx r3 // <unknown method>
ldr r0, [r0+0x04]
; gcrRegs -[r0]
- ldr r3, [r6+0x04]
- adds r0, r0, r3
+ ldr r7, [r6+0x04]
+ adds r0, r0, r7
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
ldr r3, [r4]
blx r3 // CORINFO_HELP_READYTORUN_NEWARR_1
; gcrRegs +[r0]
- mov r7, r0
- ; gcrRegs +[r7]
+ mov r8, r0
+ ; gcrRegs +[r8]
mov r0, r5
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
ldr r3, [r4]
blx r3 // <unknown method>
- ldr r8, [r0+0x04]
+ ldr r9, [r0+0x04]
mov r0, r5
- mov r1, r7
+ mov r1, r8
; gcrRegs +[r1]
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
@@ -113,32 +115,39 @@ G_M10252_IG04: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b
ldr r3, [r4]
blx r3 // System.ComponentModel.AttributeCollection:CopyTo(System.Array,int):this
; gcrRegs -[r0-r1]
- mov r9, 0
- ldr r0, [r6+0x04]
- cmp r0, 0
+ mov r10, 0
+ cmp r7, 0
ble G_M10252_IG12
- ;; size=92 bbWeight=1 PerfScore 35.00
-G_M10252_IG05: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
- add r10, r6, 8
- ; byrRegs +[r10]
- lsl r4, r9, 2
+ movw r0, LOW RELOC 0xD1FFAB1E
+ movt r0, HIGH RELOC 0xD1FFAB1E
+ add r0, pc
+ ldr r0, [r0]
+ ldr r4, [r0]
+ ; gcrRegs +[r4]
str r4, [sp+0x08]
- ldr r0, [r10+r4]
+ ; GC ptr vars +{V17}
+ ;; size=106 bbWeight=1 PerfScore 40.00
+G_M10252_IG05: ; bbWeight=4, gcVars=00020000 {V17}, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, gcvars, byref, isz
+ add r3, r6, 8
+ ; byrRegs +[r3]
+ str r3, [sp+0x04]
+ ; GC ptr vars +{V18}
+ lsl r2, r10, 2
+ str r2, [sp+0x14]
+ ldr r0, [r3+r2]
; gcrRegs +[r0]
- movw r1, LOW RELOC 0xD1FFAB1E
- movt r1, HIGH RELOC 0xD1FFAB1E
- add r1, pc
- ldr r1, [r1]
- ldr r1, [r1]
+ mov r1, r4
; gcrRegs +[r1]
movw r4, LOW RELOC 0xD1FFAB1E
+ ; gcrRegs -[r4]
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
- ldr r3, [r4]
- blx r3 // <unknown method>
+ ldr lr, [r4]
+ blx lr // <unknown method>
; gcrRegs -[r0-r1]
+ ; byrRegs -[r3]
movs r3, 0
- str r3, [sp+0x0C] // [V07 loc5]
+ str r3, [sp+0x18] // [V07 loc5]
mov r0, r5
; gcrRegs +[r0]
movw r4, LOW RELOC 0xD1FFAB1E
@@ -150,18 +159,18 @@ G_M10252_IG05: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}
; gcrRegs -[r0]
cmp r0, 0
ble SHORT G_M10252_IG10
- ;; size=68 bbWeight=4 PerfScore 100.00
-G_M10252_IG06: ; bbWeight=2, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0400 {r10}, byref
- ldr r3, [r7+0x04]
- ;; size=2 bbWeight=2 PerfScore 2.00
-G_M10252_IG07: ; bbWeight=16, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0400 {r10}, byref, isz
- ldr r2, [sp+0x0C] // [V07 loc5]
- str r3, [sp+0x04] // [V19 cse2]
+ ;; size=58 bbWeight=4 PerfScore 88.00
+G_M10252_IG06: ; bbWeight=2, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}, byref
+ ldr r3, [r8+0x04]
+ ;; size=4 bbWeight=2 PerfScore 2.00
+G_M10252_IG07: ; bbWeight=16, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}, byref, isz
+ ldr r2, [sp+0x18] // [V07 loc5]
+ str r3, [sp+0x10] // [V20 cse3]
cmp r2, r3
bhs G_M10252_IG17
- add r0, r7, 8
+ add r0, r8, 8
; byrRegs +[r0]
- str r2, [sp+0x0C] // [V07 loc5]
+ str r2, [sp+0x18] // [V07 loc5]
lsls r1, r2, 2
ldr r0, [r0+r1]
; gcrRegs +[r0]
@@ -172,19 +181,22 @@ G_M10252_IG07: ; bbWeight=16, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0400 {
ldr r1, [r0]
ldr lr, [r4]
blx lr // <unknown method>
- str r0, [sp] // [V15 tmp7]
+ str r0, [sp+0x0C] // [V15 tmp7]
; GC ptr vars +{V15}
- ldr r4, [sp+0x08] // [V18 cse1]
- ldr r0, [r10+r4]
+ ldr r4, [sp+0x04] // [V18 cse1]
+ ; byrRegs +[r4]
+ ldr r2, [sp+0x14] // [V19 cse2]
+ ldr r0, [r4+r2]
movw r4, LOW RELOC 0xD1FFAB1E
+ ; byrRegs -[r4]
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
ldr r1, [r0]
- ldr r2, [r4]
- blx r2 // <unknown method>
+ ldr lr, [r4]
+ blx lr // <unknown method>
mov r1, r0
; gcrRegs +[r1]
- ldr r0, [sp] // [V15 tmp7]
+ ldr r0, [sp+0x0C] // [V15 tmp7]
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
@@ -195,9 +207,9 @@ G_M10252_IG07: ; bbWeight=16, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0400 {
; gcrRegs -[r0-r1]
cmp r0, 0
bne SHORT G_M10252_IG09
- ldr r3, [sp+0x0C] // [V07 loc5]
+ ldr r3, [sp+0x18] // [V07 loc5]
adds r3, r3, 1
- str r3, [sp+0x0C] // [V07 loc5]
+ str r3, [sp+0x18] // [V07 loc5]
mov r0, r5
; gcrRegs +[r0]
movw r4, LOW RELOC 0xD1FFAB1E
@@ -206,23 +218,25 @@ G_M10252_IG07: ; bbWeight=16, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0400 {
ldr r2, [r4]
blx r2 // <unknown method>
ldr r1, [r0+0x04]
- ldr r0, [sp+0x0C] // [V07 loc5]
+ ldr r0, [sp+0x18] // [V07 loc5]
; gcrRegs -[r0]
cmp r1, r0
- str r0, [sp+0x0C] // [V07 loc5]
- ldr r3, [sp+0x04] // [V19 cse2]
+ str r0, [sp+0x18] // [V07 loc5]
+ ldr r3, [sp+0x10] // [V20 cse3]
bgt SHORT G_M10252_IG07
- ;; size=120 bbWeight=16 PerfScore 768.00
-G_M10252_IG08: ; bbWeight=2, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0400 {r10}, byref, isz
+ ;; size=122 bbWeight=16 PerfScore 784.00
+G_M10252_IG08: ; bbWeight=2, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}, byref, isz
b SHORT G_M10252_IG10
;; size=2 bbWeight=2 PerfScore 2.00
-G_M10252_IG09: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0400 {r10}, byref, isz
- ldr r4, [sp+0x08] // [V18 cse1]
- ldr r1, [r10+r4]
+G_M10252_IG09: ; bbWeight=2, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}, byref, isz
+ ldr r4, [sp+0x04] // [V18 cse1]
+ ; byrRegs +[r4]
+ ldr r2, [sp+0x14] // [V19 cse2]
+ ldr r1, [r4+r2]
; gcrRegs +[r1]
- add r3, r7, 8
+ add r3, r8, 8
; byrRegs +[r3]
- ldr r0, [sp+0x0C] // [V07 loc5]
+ ldr r0, [sp+0x18] // [V07 loc5]
lsls r0, r0, 2
adds r0, r3, r0
; byrRegs +[r0]
@@ -230,50 +244,55 @@ G_M10252_IG09: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0400 {r
movt r12, HIGH RELOC 0xD1FFAB1E
...
+14 (+2.95%) : 156298.dasm - System.ComponentModel.TypeDescriptor+AttributeProvider+AttributeTypeDescriptor:GetAttributes():System.ComponentModel.AttributeCollection:this (FullOpts)
@@ -10,31 +10,32 @@
; Final local variable assignments
;
; V00 this [V00,T13] ( 4, 4 ) ref -> r5 this class-hnd single-def <System.ComponentModel.TypeDescriptor+AttributeProvider+AttributeTypeDescriptor>
-; V01 loc0 [V01,T16] ( 4, 2.50) ref -> r6 class-hnd <System.Attribute[]>
-; V02 loc1 [V02,T06] ( 6, 24 ) ref -> r6 class-hnd single-def <System.ComponentModel.AttributeCollection>
-; V03 loc2 [V03,T05] ( 7, 29 ) ref -> r5 class-hnd single-def <System.Attribute[]>
-; V04 loc3 [V04,T04] ( 10, 30 ) ref -> r7 class-hnd exact single-def <System.Attribute[]>
-; V05 loc4 [V05,T12] ( 6, 7 ) int -> registers
-; V06 loc5 [V06,T03] ( 7, 35 ) int -> r9
-;* V07 loc6 [V07,T11] ( 0, 0 ) ubyte -> zero-ref
-; V08 loc7 [V08,T00] ( 7, 88 ) int -> r10
+; V01 loc0 [V01,T17] ( 4, 2.50) ref -> r5 class-hnd <System.Attribute[]>
+; V02 loc1 [V02,T05] ( 6, 24 ) ref -> r6 class-hnd single-def <System.ComponentModel.AttributeCollection>
+; V03 loc2 [V03,T07] ( 5, 22 ) ref -> r5 class-hnd single-def <System.Attribute[]>
+; V04 loc3 [V04,T04] ( 10, 28 ) ref -> r8 class-hnd exact single-def <System.Attribute[]>
+; V05 loc4 [V05,T11] ( 6, 7 ) int -> registers
+; V06 loc5 [V06,T03] ( 7, 33 ) int -> r10
+;* V07 loc6 [V07,T15] ( 0, 0 ) ubyte -> zero-ref
+; V08 loc7 [V08,T00] ( 7, 86 ) int -> [sp+0x0C]
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V10 tmp1 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <<unknown class>>
-; V11 tmp2 [V11,T09] ( 2, 16 ) ref -> r1 class-hnd "Strict ordering of exceptions for Array store" <System.Attribute>
-; V12 tmp3 [V12,T08] ( 4, 16 ) int -> r8 "impSpillLclRefs"
+; V11 tmp2 [V11,T09] ( 2, 8 ) ref -> r1 class-hnd "Strict ordering of exceptions for Array store" <System.Attribute>
+; V12 tmp3 [V12,T08] ( 4, 16 ) int -> r9 "impSpillLclRefs"
; V13 tmp4 [V13,T10] ( 2, 8 ) ref -> r1 class-hnd "Strict ordering of exceptions for Array store" <System.Attribute>
-; V14 tmp5 [V14,T14] ( 3, 6 ) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <System.ComponentModel.AttributeCollection>
-; V15 tmp6 [V15,T15] ( 2, 4 ) int -> r0 "argument with side effect"
-; V16 tmp7 [V16,T01] ( 2, 64 ) ref -> [sp+0x00] spill-single-def "argument with side effect"
+; V14 tmp5 [V14,T14] ( 3, 6 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <System.ComponentModel.AttributeCollection>
+; V15 tmp6 [V15,T16] ( 2, 4 ) int -> r0 "argument with side effect"
+; V16 tmp7 [V16,T01] ( 2, 64 ) ref -> [sp+0x04] spill-single-def "argument with side effect"
; V17 tmp8 [V17,T02] ( 2, 64 ) ref -> r1 "argument with side effect"
-; V18 cse0 [V18,T07] ( 6, 24 ) int -> [sp+0x04] hoist multi-def "CSE - aggressive"
+; V18 cse0 [V18,T06] ( 6, 24 ) int -> [sp+0x08] hoist multi-def "CSE - aggressive"
+; V19 cse1 [V19,T12] ( 4, 7 ) int -> r7 "CSE - moderate"
;
-; Lcl frame size = 12
+; Lcl frame size = 20
G_M35989_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 12
- add r11, sp, 40
+ sub sp, 20
+ add r11, sp, 48
mov r5, r0
; gcrRegs +[r5]
;; size=12 bbWeight=1 PerfScore 4.00
@@ -60,8 +61,8 @@ G_M35989_IG02: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre
; gcr arg pop 0
ldr r0, [r0+0x04]
; gcrRegs -[r0]
- ldr r3, [r5+0x04]
- adds r0, r0, r3
+ ldr r7, [r5+0x04]
+ adds r0, r0, r7
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
@@ -69,8 +70,8 @@ G_M35989_IG02: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre
blx r3 // CORINFO_HELP_READYTORUN_NEWARR_1
; gcrRegs +[r0]
; gcr arg pop 0
- mov r7, r0
- ; gcrRegs +[r7]
+ mov r8, r0
+ ; gcrRegs +[r8]
mov r0, r6
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
@@ -78,9 +79,9 @@ G_M35989_IG02: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre
ldr r3, [r4]
blx r3 // <unknown method>
; gcr arg pop 0
- ldr r8, [r0+0x04]
+ ldr r9, [r0+0x04]
mov r0, r6
- mov r1, r7
+ mov r1, r8
; gcrRegs +[r1]
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
@@ -90,34 +91,52 @@ G_M35989_IG02: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre
blx r3 // System.ComponentModel.AttributeCollection:CopyTo(System.Array,int):this
; gcrRegs -[r0-r1]
; gcr arg pop 0
- mov r9, 0
- ldr r0, [r5+0x04]
- cmp r0, 0
- ble SHORT G_M35989_IG10
- ;; size=110 bbWeight=1 PerfScore 43.00
-G_M35989_IG03: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
mov r10, 0
+ cmp r7, 0
+ ble G_M35989_IG10
+ ;; size=110 bbWeight=1 PerfScore 42.00
+G_M35989_IG03: ; bbWeight=4, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}, byref, isz
+ movs r3, 0
+ str r3, [sp+0x0C] // [V08 loc7]
mov r0, r6
; gcrRegs +[r0]
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
- ldr r3, [r4]
- blx r3 // <unknown method>
+ ldr r2, [r4]
+ blx r2 // <unknown method>
; gcr arg pop 0
ldr r0, [r0+0x04]
; gcrRegs -[r0]
cmp r0, 0
ble SHORT G_M35989_IG08
- ;; size=26 bbWeight=4 PerfScore 40.00
-G_M35989_IG04: ; bbWeight=2, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref
- ldr r3, [r7+0x04]
- ;; size=2 bbWeight=2 PerfScore 2.00
-G_M35989_IG05: ; bbWeight=16, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
- str r3, [sp+0x04]
- cmp r10, r3
+ ;; size=26 bbWeight=4 PerfScore 44.00
+G_M35989_IG04: ; bbWeight=2, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}, byref
+ ldr r3, [r8+0x04]
+ ;; size=4 bbWeight=2 PerfScore 2.00
+G_M35989_IG05: ; bbWeight=16, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}, byref, isz
+ ldr r2, [sp+0x0C] // [V08 loc7]
+ str r3, [sp+0x08] // [V18 cse0]
+ cmp r2, r3
bhs G_M35989_IG15
- add r0, r7, 8
+ add r0, r8, 8
+ ; byrRegs +[r0]
+ str r2, [sp+0x0C] // [V08 loc7]
+ lsls r1, r2, 2
+ ldr r0, [r0+r1]
+ ; gcrRegs +[r0]
+ ; byrRegs -[r0]
+ movw r4, LOW RELOC 0xD1FFAB1E
+ movt r4, HIGH RELOC 0xD1FFAB1E
+ add r4, pc
+ ldr r1, [r0]
+ ldr lr, [r4]
+ blx lr // <unknown method>
+ ; gcr arg pop 0
+ str r0, [sp+0x04] // [V16 tmp7]
+ ; GC ptr vars +{V16}
+ add r0, r5, 8
+ ; gcrRegs -[r0]
; byrRegs +[r0]
lsl r2, r10, 2
ldr r0, [r0+r2]
@@ -130,25 +149,9 @@ G_M35989_IG05: ; bbWeight=16, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {
ldr r2, [r4]
blx r2 // <unknown method>
; gcr arg pop 0
- str r0, [sp] // [V16 tmp7]
- ; GC ptr vars +{V16}
- add r0, r5, 8
- ; gcrRegs -[r0]
- ; byrRegs +[r0]
- lsl r2, r9, 2
- ldr r0, [r0+r2]
- ; gcrRegs +[r0]
- ; byrRegs -[r0]
- movw r4, LOW RELOC 0xD1FFAB1E
- movt r4, HIGH RELOC 0xD1FFAB1E
- add r4, pc
- ldr r1, [r0]
- ldr r2, [r4]
- blx r2 // <unknown method>
- ; gcr arg pop 0
mov r1, r0
; gcrRegs +[r1]
- ldr r0, [sp] // [V16 tmp7]
+ ldr r0, [sp+0x04] // [V16 tmp7]
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
@@ -160,60 +163,66 @@ G_M35989_IG05: ; bbWeight=16, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {
; gcr arg pop 0
cmp r0, 0
bne SHORT G_M35989_IG07
- add r10, r10, 1
+ ldr r3, [sp+0x0C] // [V08 loc7]
+ adds r3, r3, 1
+ str r3, [sp+0x0C] // [V08 loc7]
mov r0, r6
; gcrRegs +[r0]
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
- ldr r3, [r4]
- blx r3 // <unknown method>
+ ldr r2, [r4]
+ blx r2 // <unknown method>
; gcr arg pop 0
ldr r1, [r0+0x04]
- cmp r1, r10
- ldr r3, [sp+0x04] // [V18 cse0]
- bgt SHORT G_M35989_IG05
- ;; size=114 bbWeight=16 PerfScore 688.00
-G_M35989_IG06: ; bbWeight=2, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+ ldr r0, [sp+0x0C] // [V08 loc7]
; gcrRegs -[r0]
+ cmp r1, r0
+ str r0, [sp+0x0C] // [V08 loc7]
+ ldr r3, [sp+0x08] // [V18 cse0]
+ bgt SHORT G_M35989_IG05
+ ;; size=124 bbWeight=16 PerfScore 784.00
+G_M35989_IG06: ; bbWeight=2, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}, byref, isz
b SHORT G_M35989_IG08
;; size=2 bbWeight=2 PerfScore 2.00
-G_M35989_IG07: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M35989_IG07: ; bbWeight=2, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}, byref, isz
add r1, r5, 8
; byrRegs +[r1]
- lsl r0, r9, 2
- ldr r1, [r1+r0]
- ; gcrRegs +[r1]
- ; byrRegs -[r1]
- add r0, r7, 8
- ; byrRegs +[r0]
lsl r3, r10, 2
- adds r0, r0, r3
+ ldr r1, [r1+r3]
+ ; gcrRegs +[r1]
+ ; byrRegs -[r1]
+ add r3, r8, 8
+ ; byrRegs +[r3]
+ ldr r0, [sp+0x0C] // [V08 loc7]
+ lsls r0, r0, 2
+ adds r0, r3, r0
+ ; byrRegs +[r0]
movw r12, LOW RELOC 0xD1FFAB1E
movt r12, HIGH RELOC 0xD1FFAB1E
add r12, pc
ldr r12, [r12]
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1]
- ; byrRegs -[r0]
+ ; byrRegs -[r0 r3]
b SHORT G_M35989_IG09
- ;; size=38 bbWeight=4 PerfScore 48.00
-G_M35989_IG08: ; bbWeight=2, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
- add r1, r8, 1
- mov r10, r1
+ ;; size=38 bbWeight=2 PerfScore 26.00
+G_M35989_IG08: ; bbWeight=2, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}, byref, isz
...
+24 (+3.33%) : 145468.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (FullOpts)
@@ -9,49 +9,50 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T06] ( 9, 9.50) ref -> r5 class-hnd single-def <System.String>
-; V01 arg1 [V01,T09] ( 6, 4 ) byref -> r8 single-def
-; V02 arg2 [V02,T07] ( 8, 5 ) byref -> r6 single-def
-; V03 arg3 [V03,T08] ( 7, 4.50) byref -> r7 single-def
-; V04 loc0 [V04,T00] ( 27, 36.50) int -> r9
-; V05 loc1 [V05,T19] ( 5, 2.50) int -> [sp+0x1C]
+; V00 arg0 [V00,T07] ( 8, 9 ) ref -> r5 class-hnd single-def <System.String>
+; V01 arg1 [V01,T10] ( 6, 4 ) byref -> r8 single-def
+; V02 arg2 [V02,T08] ( 8, 5 ) byref -> r6 single-def
+; V03 arg3 [V03,T09] ( 7, 4.50) byref -> r7 single-def
+; V04 loc0 [V04,T00] ( 21, 33 ) int -> r9
+; V05 loc1 [V05,T20] ( 5, 2.50) int -> [sp+0x1C]
;* V06 loc2 [V06 ] ( 0, 0 ) ubyte -> zero-ref
-; V07 loc3 [V07,T11] ( 4, 3.50) ubyte -> r3
+; V07 loc3 [V07,T12] ( 4, 3.50) ubyte -> r3
;* V08 loc4 [V08 ] ( 0, 0 ) ubyte -> zero-ref
-; V09 loc5 [V09,T20] ( 4, 2 ) ubyte -> r3
+; V09 loc5 [V09,T21] ( 4, 2 ) ubyte -> r3
; V10 loc6 [V10,T04] ( 18, 13.50) ushort -> registers
-; V11 loc7 [V11,T05] ( 6, 7.50) ubyte -> r2
+; V11 loc7 [V11,T06] ( 6, 7.50) ubyte -> r2
;* V12 loc8 [V12 ] ( 0, 0 ) ubyte -> zero-ref
; V13 loc9 [V13,T03] ( 4, 14 ) ubyte -> r2
;# V14 OutArgs [V14 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V15 tmp1 [V15,T21] ( 3, 2 ) int -> r3
+; V15 tmp1 [V15,T22] ( 3, 2 ) int -> r3
; V16 tmp2 [V16 ] ( 3, 3 ) struct ( 8) [sp+0x14] do-not-enreg[HSA] multireg-arg must-init hidden-struct-arg "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
; V17 tmp3 [V17 ] ( 3, 3 ) struct ( 8) [sp+0x0C] do-not-enreg[HSA] multireg-arg must-init hidden-struct-arg "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V18 tmp4 [V18 ] ( 0, 0 ) byref -> zero-ref
;* V19 tmp5 [V19 ] ( 0, 0 ) byref -> zero-ref single-def
-; V20 tmp6 [V20,T28] ( 3, 1.50) int -> r3
-; V21 tmp7 [V21,T18] ( 3, 3 ) int -> r9 "Single return block return value"
-; V22 tmp8 [V22,T30] ( 2, 1.50) byref -> [sp+0x14] do-not-enreg[H] hidden-struct-arg "field V16._reference (fldOffset=0x0)" P-DEP
-; V23 tmp9 [V23,T32] ( 2, 1.50) int -> [sp+0x18] do-not-enreg[H] hidden-struct-arg "field V16._length (fldOffset=0x4)" P-DEP
-; V24 tmp10 [V24,T31] ( 2, 1.50) byref -> [sp+0x0C] do-not-enreg[H] hidden-struct-arg "field V17._reference (fldOffset=0x0)" P-DEP
-; V25 tmp11 [V25,T33] ( 2, 1.50) int -> [sp+0x10] do-not-enreg[H] hidden-struct-arg "field V17._length (fldOffset=0x4)" P-DEP
-; V26 cse0 [V26,T29] ( 3, 1.50) int -> r2 "CSE - moderate"
-; V27 cse1 [V27,T01] ( 8, 16 ) int -> r10 hoist "CSE - aggressive"
-; V28 cse2 [V28,T02] ( 13, 15 ) byref -> [sp+0x08] multi-def "CSE - aggressive"
-; V29 cse3 [V29,T10] ( 6, 6 ) int -> registers multi-def "CSE - aggressive"
-; V30 rat0 [V30,T12] ( 3, 3 ) byref -> r3 "ReplaceWithLclVar is creating a new local variable"
-; V31 rat1 [V31,T13] ( 3, 3 ) byref -> r6 "ReplaceWithLclVar is creating a new local variable"
-; V32 rat2 [V32,T22] ( 2, 2 ) int -> r2 "ReplaceWithLclVar is creating a new local variable"
-; V33 rat3 [V33,T23] ( 2, 2 ) int -> r3 "ReplaceWithLclVar is creating a new local variable"
-; V34 rat4 [V34,T14] ( 3, 3 ) byref -> r3 "ReplaceWithLclVar is creating a new local variable"
-; V35 rat5 [V35,T15] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable"
-; V36 rat6 [V36,T24] ( 2, 2 ) int -> r2 "ReplaceWithLclVar is creating a new local variable"
-; V37 rat7 [V37,T25] ( 2, 2 ) int -> r3 "ReplaceWithLclVar is creating a new local variable"
-; V38 rat8 [V38,T16] ( 3, 3 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable"
-; V39 rat9 [V39,T17] ( 3, 3 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
-; V40 rat10 [V40,T26] ( 2, 2 ) int -> r1 "ReplaceWithLclVar is creating a new local variable"
-; V41 rat11 [V41,T27] ( 2, 2 ) int -> r2 "ReplaceWithLclVar is creating a new local variable"
-; TEMP_01 ref -> [r11-0x3C]
+; V20 tmp6 [V20,T29] ( 3, 1.50) int -> r3
+; V21 tmp7 [V21,T19] ( 3, 3 ) int -> r9 "Single return block return value"
+; V22 tmp8 [V22,T31] ( 2, 1.50) byref -> [sp+0x14] do-not-enreg[H] hidden-struct-arg "field V16._reference (fldOffset=0x0)" P-DEP
+; V23 tmp9 [V23,T33] ( 2, 1.50) int -> [sp+0x18] do-not-enreg[H] hidden-struct-arg "field V16._length (fldOffset=0x4)" P-DEP
+; V24 tmp10 [V24,T32] ( 2, 1.50) byref -> [sp+0x0C] do-not-enreg[H] hidden-struct-arg "field V17._reference (fldOffset=0x0)" P-DEP
+; V25 tmp11 [V25,T34] ( 2, 1.50) int -> [sp+0x10] do-not-enreg[H] hidden-struct-arg "field V17._length (fldOffset=0x4)" P-DEP
+; V26 cse0 [V26,T30] ( 3, 1.50) int -> r1 "CSE - moderate"
+; V27 cse1 [V27,T01] ( 7, 15 ) int -> r10 hoist "CSE - aggressive"
+; V28 cse2 [V28,T02] ( 12, 14.50) byref -> [sp+0x04] multi-def "CSE - aggressive"
+; V29 cse3 [V29,T05] ( 11, 12.50) int -> [sp+0x08] multi-def "CSE - aggressive"
+; V30 cse4 [V30,T11] ( 6, 6 ) int -> registers multi-def "CSE - aggressive"
+; V31 rat0 [V31,T13] ( 3, 3 ) byref -> r3 "ReplaceWithLclVar is creating a new local variable"
+; V32 rat1 [V32,T14] ( 3, 3 ) byref -> r6 "ReplaceWithLclVar is creating a new local variable"
+; V33 rat2 [V33,T23] ( 2, 2 ) int -> r2 "ReplaceWithLclVar is creating a new local variable"
+; V34 rat3 [V34,T24] ( 2, 2 ) int -> r3 "ReplaceWithLclVar is creating a new local variable"
+; V35 rat4 [V35,T15] ( 3, 3 ) byref -> r3 "ReplaceWithLclVar is creating a new local variable"
+; V36 rat5 [V36,T16] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable"
+; V37 rat6 [V37,T25] ( 2, 2 ) int -> r2 "ReplaceWithLclVar is creating a new local variable"
+; V38 rat7 [V38,T26] ( 2, 2 ) int -> r3 "ReplaceWithLclVar is creating a new local variable"
+; V39 rat8 [V39,T17] ( 3, 3 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable"
+; V40 rat9 [V40,T18] ( 3, 3 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V41 rat10 [V41,T27] ( 2, 2 ) int -> r1 "ReplaceWithLclVar is creating a new local variable"
+; V42 rat11 [V42,T28] ( 2, 2 ) int -> r2 "ReplaceWithLclVar is creating a new local variable"
+; TEMP_01 ref -> [r11-0x40]
;
; Lcl frame size = 36
@@ -59,12 +60,13 @@ G_M49978_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
sub sp, 36
add r11, sp, 64
- sub r6, r11, 60
+ sub r6, r11, 64
movs r4, 0
movs r5, 0
stm r6!, {r4,r5}
stm r6!, {r4,r5}
stm r6!, {r4,r5}
+ str r4, [r6]
mov r5, r0
; gcrRegs +[r5]
mov r8, r1
@@ -73,7 +75,7 @@ G_M49978_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; byrRegs +[r6]
mov r7, r3
; byrRegs +[r7]
- ;; size=32 bbWeight=1 PerfScore 13.00
+ ;; size=34 bbWeight=1 PerfScore 14.00
G_M49978_IG02: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref, isz
mov r9, 0
ldr r10, [r5+0x04]
@@ -84,97 +86,97 @@ G_M49978_IG03: ; bbWeight=2, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r
;; size=4 bbWeight=2 PerfScore 2.00
G_M49978_IG04: ; bbWeight=8, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref, isz
cmp r10, r9
- bls SHORT G_M49978_IG06
+ bls SHORT G_M49978_IG09
;; size=4 bbWeight=8 PerfScore 16.00
G_M49978_IG05: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref, isz
add r4, r5, 8
; byrRegs +[r4]
- lsl r0, r9, 1
- ldrh r0, [r4+r0]
+ lsl r3, r9, 1
+ str r4, [sp+0x04]
+ ; GC ptr vars +{V28}
+ str r3, [sp+0x08]
+ ldrh r0, [r4+r3]
movw r4, LOW RELOC 0xD1FFAB1E
; byrRegs -[r4]
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
- ldr r3, [r4]
- blx r3 // System.UriHelper:IsLWS(ushort):ubyte
+ ldr r2, [r4]
+ blx r2 // System.UriHelper:IsLWS(ushort):ubyte
; gcr arg pop 0
cmp r0, 0
bne SHORT G_M49978_IG03
- ;; size=28 bbWeight=4 PerfScore 40.00
-G_M49978_IG06: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref, isz
- cmp r10, r9
- bls SHORT G_M49978_IG10
- ;; size=4 bbWeight=1 PerfScore 2.00
-G_M49978_IG07: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref, isz
- add r4, r5, 8
+ ;; size=32 bbWeight=4 PerfScore 48.00
+G_M49978_IG06: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref, isz
+ ldr r4, [sp+0x04] // [V28 cse2]
; byrRegs +[r4]
- lsl r3, r9, 1
+ ldr r3, [sp+0x08] // [V29 cse3]
ldrh r3, [r4+r3]
cmp r3, 47
- beq SHORT G_M49978_IG08
+ beq SHORT G_M49978_IG07
movs r3, 0
- b SHORT G_M49978_IG09
- ;; size=18 bbWeight=0.50 PerfScore 3.50
-G_M49978_IG08: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref
+ b SHORT G_M49978_IG08
+ ;; size=14 bbWeight=0.50 PerfScore 3.50
+G_M49978_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, gcvars, byref
; byrRegs -[r4]
+ ; GC ptr vars -{V28}
movs r3, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M49978_IG09: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref, isz
- b SHORT G_M49978_IG11
+G_M49978_IG08: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref, isz
+ b SHORT G_M49978_IG10
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M49978_IG10: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref
+G_M49978_IG09: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref
movs r3, 0
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M49978_IG11: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref, isz
+G_M49978_IG10: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref, isz
uxtb r3, r3
cmp r3, 0
- beq SHORT G_M49978_IG19
+ beq SHORT G_M49978_IG18
;; size=6 bbWeight=1 PerfScore 3.00
-G_M49978_IG12: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref, isz
+G_M49978_IG11: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref, isz
add r3, r9, 1
cmp r10, r3
- bls SHORT G_M49978_IG13
+ bls SHORT G_M49978_IG12
movs r3, 0
- b SHORT G_M49978_IG14
+ b SHORT G_M49978_IG13
;; size=12 bbWeight=0.50 PerfScore 2.50
-G_M49978_IG13: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref
+G_M49978_IG12: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref
movs r3, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M49978_IG14: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref, isz
+G_M49978_IG13: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref, isz
cmp r3, 0
- bne SHORT G_M49978_IG19
+ bne SHORT G_M49978_IG18
add r4, r5, 8
; byrRegs +[r4]
lsl r3, r9, 1
adds r3, r3, 2
ldrh r3, [r4+r3]
cmp r3, 47
- beq SHORT G_M49978_IG15
+ beq SHORT G_M49978_IG14
cmp r3, 92
- bne SHORT G_M49978_IG16
+ bne SHORT G_M49978_IG15
;; size=24 bbWeight=0.50 PerfScore 5.00
-G_M49978_IG15: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref, isz
+G_M49978_IG14: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref, isz
; byrRegs -[r4]
movs r2, 1
- b SHORT G_M49978_IG17
+ b SHORT G_M49978_IG16
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M49978_IG16: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref
+G_M49978_IG15: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref
movs r2, 0
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M49978_IG17: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref, isz
+G_M49978_IG16: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref, isz
cmp r2, 0
- beq SHORT G_M49978_IG18
+ beq SHORT G_M49978_IG17
movs r3, 0
- b SHORT G_M49978_IG19
+ b SHORT G_M49978_IG18
;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M49978_IG18: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref
+G_M49978_IG17: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref
movs r3, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M49978_IG19: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref, isz
+G_M49978_IG18: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref, isz
cmp r3, 0
- beq SHORT G_M49978_IG21
+ beq SHORT G_M49978_IG20
;; size=4 bbWeight=1 PerfScore 2.00
-G_M49978_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00C0 {r6 r7}, byref, isz
+G_M49978_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00C0 {r6 r7}, byref, isz
; gcrRegs -[r5]
; byrRegs -[r8]
mov r3, r6
@@ -205,12 +207,12 @@ G_M49978_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00C0 {r6 r7}
blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0 r7]
...
libraries.pmi.linux.arm.checked.mch
-24 (-27.91%) : 185919.dasm - ILCompiler.IBC.IBCProfileParser+IBCBlobKey:Equals(System.Object):ubyte:this (FullOpts)
@@ -8,92 +8,75 @@
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 4, 3 ) byref -> r5 this single-def
-; V01 arg1 [V01,T00] ( 6, 4.25) ref -> r4 class-hnd single-def <System.Object>
+; V00 this [V00,T01] ( 4, 3 ) byref -> r0 this single-def
+; V01 arg1 [V01,T00] ( 5, 4 ) ref -> r1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 3, 4.50) ref -> r0 class-hnd "spilling QMark2" <ILCompiler.IBC.IBCProfileParser+IBCBlobKey>
+; V03 tmp1 [V03,T02] ( 3, 4.50) ref -> r3 class-hnd "spilling QMark2" <ILCompiler.IBC.IBCProfileParser+IBCBlobKey>
; V04 tmp2 [V04,T03] ( 3, 1.50) ubyte -> r0 "Inline return value spill temp"
;* V05 tmp3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <ILCompiler.IBC.IBCProfileParser+IBCBlobKey>
-; V06 tmp4 [V06,T06] ( 2, 1 ) int -> r0 "field V05.Token (fldOffset=0x0)" P-INDEP
-; V07 tmp5 [V07,T07] ( 2, 1 ) int -> r3 "field V05.Type (fldOffset=0x4)" P-INDEP
-; V08 cse0 [V08,T05] ( 3, 1 ) int -> r1 "CSE - moderate"
-; V09 cse1 [V09,T04] ( 4, 1.25) int -> r0 "CSE - moderate"
+; V06 tmp4 [V06,T04] ( 2, 1 ) int -> r3 "field V05.Token (fldOffset=0x0)" P-INDEP
+; V07 tmp5 [V07,T05] ( 2, 1 ) int -> r2 "field V05.Type (fldOffset=0x4)" P-INDEP
;
; Lcl frame size = 0
G_M25636_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr}
- add r11, sp, 8
- mov r5, r0
- ; byrRegs +[r5]
- mov r4, r1
- ; gcrRegs +[r4]
- ;; size=12 bbWeight=1 PerfScore 4.00
-G_M25636_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
- mov r0, r4
- ; gcrRegs +[r0]
- cmp r0, 0
+ push {r11,lr}
+ mov r11, sp
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M25636_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz
+ ; gcrRegs +[r1]
+ ; byrRegs +[r0]
+ mov r3, r1
+ ; gcrRegs +[r3]
+ cmp r3, 0
beq SHORT G_M25636_IG04
;; size=6 bbWeight=1 PerfScore 3.00
-G_M25636_IG03: ; bbWeight=0.25, gcrefRegs=0011 {r0 r4}, byrefRegs=0020 {r5}, byref, isz
- ldr r1, [r0]
- movw r0, 0xd1ff
- ; gcrRegs -[r0]
- movt r0, 0xd1ff
- cmp r1, r0
+G_M25636_IG03: ; bbWeight=0.25, gcrefRegs=000A {r1 r3}, byrefRegs=0001 {r0}, byref, isz
+ ldr r3, [r3]
+ ; gcrRegs -[r3]
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ cmp r3, r2
beq SHORT G_M25636_IG06
;; size=14 bbWeight=0.25 PerfScore 1.25
G_M25636_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4]
- ; byrRegs -[r5]
+ ; gcrRegs -[r1]
+ ; byrRegs -[r0]
movs r0, 0
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M25636_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,pc}
+ pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M25636_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, gcvars, byref, isz
- ; gcrRegs +[r4]
- ; byrRegs +[r5]
- cmp r1, r0
- beq SHORT G_M25636_IG08
- ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M25636_IG07: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref
- mov r1, r4
+G_M25636_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, gcvars, byref, isz
; gcrRegs +[r1]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // CORINFO_HELP_UNBOX
+ ; byrRegs +[r0]
+ ldr r3, [r1+0x04]
+ ldr r2, [r1+0x08]
+ ldr r1, [r0]
; gcrRegs -[r1]
- ;; size=14 bbWeight=0.25 PerfScore 1.25
-G_M25636_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
- ldr r0, [r4+0x04]
- ldr r3, [r4+0x08]
- ldr r2, [r5]
- cmp r0, r2
- bne SHORT G_M25636_IG11
- ldr r0, [r5+0x04]
- cmp r3, r0
- beq SHORT G_M25636_IG09
+ cmp r3, r1
+ bne SHORT G_M25636_IG09
+ ldr r0, [r0+0x04]
+ ; byrRegs -[r0]
+ cmp r2, r0
+ beq SHORT G_M25636_IG07
movs r0, 0
- b SHORT G_M25636_IG10
+ b SHORT G_M25636_IG08
;; size=20 bbWeight=0.50 PerfScore 5.00
-G_M25636_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4]
- ; byrRegs -[r5]
+G_M25636_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r0, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M25636_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M25636_IG12
+G_M25636_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M25636_IG10
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M25636_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M25636_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r0, 0
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M25636_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- pop {r4,r5,r11,pc}
+G_M25636_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 86, prolog size 8, PerfScore 18.50, instruction count 35, allocated bytes for code 86 (MethodHash=acaf9bdb) for method ILCompiler.IBC.IBCProfileParser+IBCBlobKey:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 62, prolog size 6, PerfScore 14.25, instruction count 26, allocated bytes for code 62 (MethodHash=acaf9bdb) for method ILCompiler.IBC.IBCProfileParser+IBCBlobKey:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -105,7 +88,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 43 (0x0002b) Actual length = 86 (0x000056)
+ Function Length : 31 (0x0001f) Actual length = 62 (0x00003e)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -117,7 +100,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end
FF end
-32 (-26.67%) : 646.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
@@ -7,15 +7,17 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 5, 7.50) ref -> r0 class-hnd single-def <System.String>
-; V01 arg1 [V01,T02] ( 6, 11 ) ref -> r1 class-hnd single-def <System.String>
-; V02 arg2 [V02,T05] ( 4, 6.50) int -> r2 single-def
-; V03 arg3 [V03,T07] ( 5, 4 ) int -> r3 single-def
-; V04 loc0 [V04,T03] ( 5, 11.50) int -> r12
-; V05 loc1 [V05,T00] ( 11, 27.50) int -> r4
+; V00 arg0 [V00,T04] ( 4, 7 ) ref -> r0 class-hnd single-def <System.String>
+; V01 arg1 [V01,T01] ( 4, 10 ) ref -> r1 class-hnd single-def <System.String>
+; V02 arg2 [V02,T07] ( 3, 6 ) int -> r2 single-def
+; V03 arg3 [V03,T09] ( 5, 4 ) int -> r3 single-def
+; V04 loc0 [V04,T03] ( 4, 10.50) int -> r12
+; V05 loc1 [V05,T00] ( 7, 25 ) int -> r4
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T06] ( 5, 7 ) int -> lr "CSE - aggressive"
-; V08 cse1 [V08,T01] ( 6, 13.50) int -> r6 multi-def "CSE - aggressive"
+; V07 cse0 [V07,T05] ( 3, 8.50) int -> r6 "CSE - aggressive"
+; V08 cse1 [V08,T06] ( 3, 8.50) int -> r5 "CSE - aggressive"
+; V09 cse2 [V09,T08] ( 4, 6.50) int -> lr "CSE - aggressive"
+; V10 cse3 [V10,T02] ( 3, 12 ) int -> r6 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -42,11 +44,11 @@ G_M6389_IG05: ; bbWeight=2, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, by
;; size=2 bbWeight=2 PerfScore 2.00
G_M6389_IG06: ; bbWeight=8, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
cmp r4, r12
- bge SHORT G_M6389_IG08
+ bge SHORT G_M6389_IG10
;; size=4 bbWeight=8 PerfScore 16.00
G_M6389_IG07: ; bbWeight=4, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
cmp r4, lr
- bhs SHORT G_M6389_IG13
+ bhs SHORT G_M6389_IG12
add r5, r0, 8
; byrRegs +[r5]
lsls r6, r4, 1
@@ -55,7 +57,7 @@ G_M6389_IG07: ; bbWeight=4, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, by
adds r6, r2, r4
ldr r7, [r1+0x04]
cmp r6, r7
- bhs SHORT G_M6389_IG13
+ bhs SHORT G_M6389_IG12
lsls r6, r6, 1
add r7, r1, 8
; byrRegs +[r7]
@@ -63,42 +65,21 @@ G_M6389_IG07: ; bbWeight=4, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, by
cmp r5, r6
beq SHORT G_M6389_IG05
;; size=32 bbWeight=4 PerfScore 56.00
-G_M6389_IG08: ; bbWeight=1, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
+G_M6389_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r0-r1]
; byrRegs -[r7]
- cmp r4, r12
- bge SHORT G_M6389_IG11
- ;; size=4 bbWeight=1 PerfScore 2.00
-G_M6389_IG09: ; bbWeight=0.50, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
- cmp r4, lr
- bhs SHORT G_M6389_IG13
- adds r0, 8
- ; gcrRegs -[r0]
- ; byrRegs +[r0]
- lsls r3, r4, 1
- ldrh r0, [r0+r3]
- ; byrRegs -[r0]
- adds r6, r2, r4
- ldr lr, [r1+0x04]
- cmp r6, lr
- bhs SHORT G_M6389_IG13
- lsls r3, r6, 1
- add r2, r1, 8
- ; byrRegs +[r2]
- ldrh r3, [r2+r3]
- subs r0, r0, r3
- ;; size=30 bbWeight=0.50 PerfScore 6.50
-G_M6389_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ subs r0, r5, r6
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
+G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend
pop {r4,r5,r6,r7,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M6389_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r1]
- ; byrRegs -[r2]
+G_M6389_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
sub r0, lr, r3
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M6389_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M6389_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop {r4,r5,r6,r7,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M6389_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_RNGCHKFAIL
@@ -106,7 +87,7 @@ G_M6389_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefR
bkpt
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 120, prolog size 8, PerfScore 92.50, instruction count 48, allocated bytes for code 120 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
+; Total bytes of code 88, prolog size 8, PerfScore 84.50, instruction count 34, allocated bytes for code 88 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -118,7 +99,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 60 (0x0003c) Actual length = 120 (0x000078)
+ Function Length : 44 (0x0002c) Actual length = 88 (0x000058)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-20.83%) : 111327.dasm - System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
@@ -8,10 +8,10 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 10, 20 ) ref -> r4 class-hnd <System.Xml.Schema.XmlSchemaObject>
+; V00 arg0 [V00,T00] ( 9, 19 ) ref -> r4 class-hnd <System.Xml.Schema.XmlSchemaObject>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 3, 2.50) int -> r1 "fgMakeTemp is creating a new local variable"
-; V03 tmp2 [V03,T02] ( 3, 2 ) ref -> r0 class-hnd "spilling QMark2" <System.Xml.Schema.XmlSchema>
+; V02 tmp1 [V02,T02] ( 2, 2 ) int -> r3 "fgMakeTemp is creating a new local variable"
+; V03 tmp2 [V03,T01] ( 3, 2 ) ref -> r4 class-hnd "spilling QMark2" <System.Xml.Schema.XmlSchema>
;
; Lcl frame size = 4
@@ -29,7 +29,7 @@ G_M32300_IG03: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
;; size=2 bbWeight=2 PerfScore 2.00
G_M32300_IG04: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r4, 0
- beq SHORT G_M32300_IG06
+ beq SHORT G_M32300_IG10
;; size=4 bbWeight=8 PerfScore 16.00
G_M32300_IG05: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
mov r1, r4
@@ -44,51 +44,34 @@ G_M32300_IG05: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
cmp r0, 0
beq SHORT G_M32300_IG03
;; size=24 bbWeight=4 PerfScore 32.00
-G_M32300_IG06: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M32300_IG06: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
- cmp r4, 0
- beq SHORT G_M32300_IG12
- ;; size=4 bbWeight=1 PerfScore 2.00
-G_M32300_IG07: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4]
- movw r1, 0xd1ff
- movt r1, 0xd1ff
- cmp r0, r1
- beq SHORT G_M32300_IG09
- ;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M32300_IG08: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- mov r0, r1
- mov r1, r4
- ; gcrRegs +[r1]
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_CHKCASTCLASS_SPECIAL
- ; gcrRegs -[r1 r4] +[r0]
- ; gcr arg pop 0
- b SHORT G_M32300_IG10
- ;; size=16 bbWeight=0.25 PerfScore 1.50
-G_M32300_IG09: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r0] +[r4]
- mov r0, r4
- ; gcrRegs +[r0]
+ cmp r0, r3
+ beq SHORT G_M32300_IG08
+ ;; size=14 bbWeight=0.50 PerfScore 2.50
+G_M32300_IG07: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M32300_IG08
;; size=2 bbWeight=0.25 PerfScore 0.25
-G_M32300_IG10: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4]
- ldr r0, [r0+0x1C]
+G_M32300_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ ldr r0, [r4+0x1C]
+ ; gcrRegs +[r0]
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M32300_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M32300_IG09: ; bbWeight=0.50, epilog, nogc, extend
pop {r3,r4,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M32300_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r0]
+G_M32300_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[r0 r4]
movw r0, 0xd1ff
movt r0, 0xd1ff
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M32300_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M32300_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop {r3,r4,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 96, prolog size 10, PerfScore 62.75, instruction count 34, allocated bytes for code 96 (MethodHash=8b5f81d3) for method System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
+; Total bytes of code 76, prolog size 10, PerfScore 59.25, instruction count 26, allocated bytes for code 76 (MethodHash=8b5f81d3) for method System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -100,7 +83,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 48 (0x00030) Actual length = 96 (0x000060)
+ Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+2 (+2.70%) : 149077.dasm - Microsoft.Build.Internal.ProjectXmlUtilities:GetAttributeValue(Microsoft.Build.Construction.XmlElementWithLocation,System.String):System.String (FullOpts)
@@ -8,20 +8,21 @@
; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 4, 4 ) ref -> r0 class-hnd single-def <Microsoft.Build.Construction.XmlElementWithLocation>
-; V01 arg1 [V01,T03] ( 3, 3 ) ref -> r1 class-hnd single-def <System.String>
+; V00 arg0 [V00,T00] ( 4, 4 ) ref -> r0 class-hnd single-def <Microsoft.Build.Construction.XmlElementWithLocation>
+; V01 arg1 [V01,T02] ( 3, 3 ) ref -> r1 class-hnd single-def <System.String>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 3, 6 ) ref -> r1 single-def "CASTCLASS eval op1"
-; V04 tmp2 [V04,T04] ( 3, 3 ) int -> r2 "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 6, 8.50) ref -> r0 class-hnd "spilling QMark2" <Microsoft.Build.Construction.XmlAttributeWithLocation>
-;* V06 tmp4 [V06,T05] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.String>
+; V03 tmp1 [V03,T03] ( 3, 4.25) ref -> r1 single-def "CASTCLASS eval op1"
+; V04 tmp2 [V04,T04] ( 3, 1.25) int -> r3 "fgMakeTemp is creating a new local variable"
+; V05 tmp3 [V05,T01] ( 5, 5.75) ref -> r0 class-hnd "spilling QMark2" <Microsoft.Build.Construction.XmlAttributeWithLocation>
+;* V06 tmp4 [V06,T06] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.String>
+; V07 cse0 [V07,T05] ( 3, 1 ) int -> r4 "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M36414_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r11,lr}
- mov r11, sp
- ;; size=6 bbWeight=1 PerfScore 2.00
+ push {r3,r4,r11,lr}
+ add r11, sp, 8
+ ;; size=8 bbWeight=1 PerfScore 2.00
G_M36414_IG02: ; bbWeight=1, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r0-r1]
ldr r3, [r0]
@@ -36,53 +37,53 @@ G_M36414_IG02: ; bbWeight=1, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, b
beq SHORT G_M36414_IG05
;; size=16 bbWeight=1 PerfScore 8.00
G_M36414_IG03: ; bbWeight=0.25, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
- ldr r3, [r0]
- movw r2, 0xd1ff
- movt r2, 0xd1ff
- cmp r3, r2
+ ldr r4, [r0]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r4, r3
beq SHORT G_M36414_IG07
;; size=14 bbWeight=0.25 PerfScore 1.25
-G_M36414_IG04: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
+G_M36414_IG04: ; bbWeight=0.12, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
- mov r0, r2
+ mov r0, r3
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[r1] +[r0]
b SHORT G_M36414_IG07
- ;; size=14 bbWeight=1 PerfScore 5.00
-G_M36414_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=14 bbWeight=0.12 PerfScore 0.62
+G_M36414_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
movw r0, 0xd1ff
movt r0, 0xd1ff
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M36414_IG06: ; bbWeight=0.50, epilog, nogc, extend
- pop {r11,pc}
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ ;; size=8 bbWeight=1 PerfScore 2.00
+G_M36414_IG06: ; bbWeight=1, epilog, nogc, extend
+ pop {r3,r4,r11,pc}
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M36414_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[r0]
- ldr r3, [r0]
- ldr r3, [r3+0x2C]
+ ldr r3, [r4+0x2C]
ldr r3, [r3+0x18]
- ;; size=6 bbWeight=0.50 PerfScore 1.50
+ ;; size=4 bbWeight=0.50 PerfScore 1.00
G_M36414_IG08: ; bbWeight=0.50, epilog, nogc, extend
- pop {r11,lr}
+ add sp, 4
+ pop {r4,r11,lr}
bx r3 // <unknown method>
- ;; size=6 bbWeight=0.50 PerfScore 1.00
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 74, prolog size 6, PerfScore 20.25, instruction count 28, allocated bytes for code 74 (MethodHash=f66a71c1) for method Microsoft.Build.Internal.ProjectXmlUtilities:GetAttributeValue(Microsoft.Build.Construction.XmlElementWithLocation,System.String):System.String (FullOpts)
+; Total bytes of code 76, prolog size 8, PerfScore 17.38, instruction count 28, allocated bytes for code 76 (MethodHash=f66a71c1) for method Microsoft.Build.Internal.ProjectXmlUtilities:GetAttributeValue(Microsoft.Build.Construction.XmlElementWithLocation,System.String):System.String (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
F bit : 0
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 74 (0x00004a)
+ Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -91,10 +92,14 @@ Unwind Info:
---- Scope 1
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Condition : 14 (0xe) (always)
- Epilog Start Index : 0 (0x00)
+ Epilog Start Index : 3 (0x03)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ FF end
+ ---- Epilog start at index 3 ----
+ 01 add sp, sp, #4 ; opsize 16
+ A8 10 pop {r4,r11,lr} ; opsize 32
FF end
FF end
+12 (+3.37%) : 100289.dasm - System.Xml.Ucs4Decoder:Convert(ubyte[],int,int,ushort[],int,int,ubyte,byref,byref,byref):this (FullOpts)
@@ -19,7 +19,7 @@
; V09 arg9 [V09,T22] ( 2, 1.50) byref -> [sp+0x4C] single-def
; V10 arg10 [V10,T19] ( 3, 1.50) byref -> [sp+0x50] single-def
; V11 loc0 [V11,T17] ( 5, 2.50) int -> [sp+0x0C]
-; V12 loc1 [V12,T05] ( 9, 15 ) int -> r1
+; V12 loc1 [V12,T05] ( 8, 14.50) int -> r1
; V13 loc2 [V13,T13] ( 6, 6.50) int -> r3
; V14 loc3 [V14,T00] ( 7, 24.50) int -> r2
; V15 OutArgs [V15 ] ( 1, 1 ) struct ( 8) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -47,30 +47,29 @@ G_M61432_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov r5, r2
mov r4, r3
ldr r9, [sp+0x3C] // [V05 arg5]
+ ldr lr, [sp+0x40] // [V06 arg6]
ldr r8, [sp+0x48] // [V08 arg8]
; byrRegs +[r8]
ldr r12, [sp+0x4C] // [V09 arg9]
; byrRegs +[r12]
ldr r10, [sp+0x50] // [V10 arg10]
; byrRegs +[r10]
- ;; size=34 bbWeight=1 PerfScore 11.00
+ ;; size=38 bbWeight=1 PerfScore 12.00
G_M61432_IG02: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=1500 {r8 r10 r12}, byref
movs r1, 0
str r1, [r8]
;; size=6 bbWeight=1 PerfScore 2.00
G_M61432_IG03: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=1500 {r8 r10 r12}, byref, isz
- str r12, [sp+0x4C]
str r1, [r12]
ldr r1, [r6+0x10]
cmp r1, 0
bgt SHORT G_M61432_IG06
- ;; size=14 bbWeight=1 PerfScore 5.00
-G_M61432_IG04: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=0500 {r8 r10}, byref, isz
- ; byrRegs -[r12]
+ ;; size=10 bbWeight=1 PerfScore 4.00
+G_M61432_IG04: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=1500 {r8 r10 r12}, byref, isz
movs r3, 0
b SHORT G_M61432_IG10
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M61432_IG05: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0500 {r8 r10}, byref, isz
+G_M61432_IG05: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=1500 {r8 r10 r12}, byref, isz
ldr r0, [r6+0x0C]
; gcrRegs +[r0]
ldr r2, [r7+0x04]
@@ -95,25 +94,29 @@ G_M61432_IG05: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0500 {r8 r
str r0, [r8]
adds r1, r1, 1
;; size=44 bbWeight=2 PerfScore 34.00
-G_M61432_IG06: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=0500 {r8 r10}, byref, isz
+G_M61432_IG06: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=1500 {r8 r10 r12}, byref, isz
cmp r1, 4
- bge SHORT G_M61432_IG07
+ bge SHORT G_M61432_IG09
cmp r4, 0
bgt SHORT G_M61432_IG05
;; size=8 bbWeight=4 PerfScore 16.00
-G_M61432_IG07: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=0500 {r8 r10}, byref, isz
- cmp r1, 4
- bge SHORT G_M61432_IG09
+G_M61432_IG07: ; bbWeight=0.50, gcrefRegs=0040 {r6}, byrefRegs=0400 {r10}, byref
+ ; gcrRegs -[r7]
+ ; byrRegs -[r8 r12]
str r1, [r6+0x10]
movs r1, 1
strb r1, [r10]
- ;; size=12 bbWeight=0.50 PerfScore 2.50
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
G_M61432_IG08: ; bbWeight=0.50, epilog, nogc, extend
add sp, 20
pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M61432_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0500 {r8 r10}, gcvars, byref
+G_M61432_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00C0 {r6 r7}, byrefRegs=1500 {r8 r10 r12}, gcvars, byref
+ ; gcrRegs +[r7]
+ ; byrRegs +[r8 r12]
str r10, [sp+0x50]
+ str lr, [sp+0x40]
+ str r12, [sp+0x4C]
ldr r3, [sp+0x38] // [V04 arg4]
; gcrRegs +[r3]
str r3, [sp] // [V15 OutArgs]
@@ -132,6 +135,7 @@ G_M61432_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00C0 {r6 r7
ldr r10, [r10]
blx r10 // <unknown method>
; gcrRegs -[r0-r1]
+ ; byrRegs -[r12]
; gcr arg pop 0
mov r10, r0
add r9, r10
@@ -140,13 +144,14 @@ G_M61432_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00C0 {r6 r7
sub r0, r0, r10
movs r1, 0
str r1, [r6+0x10]
- str r0, [sp+0x40] // [V06 arg6]
+ mov lr, r0
ldr r3, [sp+0x0C] // [V11 loc0]
ldr r10, [sp+0x50] // [V10 arg10]
; byrRegs +[r10]
- ;; size=60 bbWeight=0.50 PerfScore 11.00
-G_M61432_IG10: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=0500 {r8 r10}, byref, isz
- ldr lr, [sp+0x40] // [V06 arg6]
+ ldr r12, [sp+0x4C] // [V09 arg9]
+ ; byrRegs +[r12]
+ ;; size=72 bbWeight=0.50 PerfScore 12.50
+G_M61432_IG10: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=1500 {r8 r10 r12}, byref, isz
lsl r0, lr, 2
cmp r0, r4
bge SHORT G_M61432_IG11
@@ -154,15 +159,17 @@ G_M61432_IG10: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=0500 {r
movs r0, 0
strb r0, [r10]
str r3, [sp+0x0C] // [V11 loc0]
+ str r12, [sp+0x4C] // [V09 arg9]
b SHORT G_M61432_IG12
;; size=24 bbWeight=0.50 PerfScore 4.50
-G_M61432_IG11: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=0500 {r8 r10}, byref
+G_M61432_IG11: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=1500 {r8 r10 r12}, byref
movs r0, 1
strb r0, [r10]
str r3, [sp+0x0C] // [V11 loc0]
- ;; size=8 bbWeight=0.50 PerfScore 1.50
+ str r12, [sp+0x4C] // [V09 arg9]
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M61432_IG12: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=0100 {r8}, byref, isz
- ; byrRegs -[r10]
+ ; byrRegs -[r10 r12]
ldr r0, [r8]
adds r0, r0, r4
str r0, [r8]
@@ -241,7 +248,7 @@ G_M61432_IG16: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
bkpt
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 356, prolog size 34, PerfScore 157.50, instruction count 131, allocated bytes for code 356 (MethodHash=b6eb1007) for method System.Xml.Ucs4Decoder:Convert(ubyte[],int,int,ushort[],int,int,ubyte,byref,byref,byref):this (FullOpts)
+; Total bytes of code 368, prolog size 38, PerfScore 158.50, instruction count 133, allocated bytes for code 368 (MethodHash=b6eb1007) for method System.Xml.Ucs4Decoder:Convert(ubyte[],int,int,ushort[],int,int,ubyte,byref,byref,byref):this (FullOpts)
; ============================================================
Unwind Info:
@@ -253,7 +260,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 178 (0x000b2) Actual length = 356 (0x000164)
+ Function Length : 184 (0x000b8) Actual length = 368 (0x000170)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+18 (+3.41%) : 181260.dasm - System.ComponentModel.AttributeCollection:FromExisting(System.ComponentModel.AttributeCollection,System.Attribute[]):System.ComponentModel.AttributeCollection (FullOpts)
@@ -8,40 +8,41 @@
; 2 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T05] ( 11, 32 ) ref -> r4 class-hnd single-def <System.ComponentModel.AttributeCollection>
-; V01 arg1 [V01,T14] ( 8, 13.50) ref -> r5 class-hnd <System.Attribute[]>
-; V02 loc0 [V02,T06] ( 10, 30 ) ref -> r7 class-hnd exact single-def <System.Attribute[]>
-; V03 loc1 [V03,T17] ( 6, 7 ) int -> registers
-; V04 loc2 [V04,T22] ( 4, 2.50) ref -> r4 class-hnd <System.Attribute[]>
-; V05 loc3 [V05,T11] ( 5, 17 ) int -> r9
-;* V06 loc4 [V06,T16] ( 0, 0 ) ubyte -> zero-ref
-; V07 loc5 [V07,T03] ( 7, 88 ) int -> [sp+0x14]
+; V00 arg0 [V00,T05] ( 10, 28 ) ref -> r4 class-hnd single-def <System.ComponentModel.AttributeCollection>
+; V01 arg1 [V01,T13] ( 6, 8.50) ref -> r5 class-hnd <System.Attribute[]>
+; V02 loc0 [V02,T06] ( 10, 28 ) ref -> r8 class-hnd exact single-def <System.Attribute[]>
+; V03 loc1 [V03,T16] ( 6, 7 ) int -> [sp+0x1C]
+; V04 loc2 [V04,T23] ( 4, 2.50) ref -> r4 class-hnd <System.Attribute[]>
+; V05 loc3 [V05,T11] ( 5, 17 ) int -> r10
+;* V06 loc4 [V06,T19] ( 0, 0 ) ubyte -> zero-ref
+; V07 loc5 [V07,T03] ( 7, 86 ) int -> [sp+0x18]
; V08 OutArgs [V08 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V09 tmp1 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Object>
-; V10 tmp2 [V10,T13] ( 2, 16 ) ref -> r1 class-hnd "Strict ordering of exceptions for Array store" <System.Attribute>
-; V11 tmp3 [V11,T12] ( 4, 16 ) int -> r8 "impSpillLclRefs"
+; V10 tmp2 [V10,T14] ( 2, 8 ) ref -> r1 class-hnd "Strict ordering of exceptions for Array store" <System.Attribute>
+; V11 tmp3 [V11,T12] ( 4, 16 ) int -> r9 "impSpillLclRefs"
; V12 tmp4 [V12,T15] ( 2, 8 ) ref -> r1 class-hnd "Strict ordering of exceptions for Array store" <System.Attribute>
; V13 tmp5 [V13,T18] ( 3, 6 ) ref -> r5 class-hnd exact single-def "NewObj constructor temp" <System.ComponentModel.AttributeCollection>
;* V14 tmp6 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Attribute[]>
;* V15 tmp7 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Attribute>
-; V16 tmp8 [V16,T20] ( 2, 4 ) int -> r1 "argument with side effect"
-; V17 tmp9 [V17,T19] ( 2, 4 ) ref -> r9 single-def "argument with side effect"
-; V18 tmp10 [V18,T21] ( 2, 4 ) int -> r2 "argument with side effect"
+; V16 tmp8 [V16,T21] ( 2, 4 ) int -> r1 "argument with side effect"
+; V17 tmp9 [V17,T20] ( 2, 4 ) ref -> r10 single-def "argument with side effect"
+; V18 tmp10 [V18,T22] ( 2, 4 ) int -> r2 "argument with side effect"
; V19 tmp11 [V19,T00] ( 3, 96 ) ref -> r0 "argument with side effect"
; V20 tmp12 [V20,T01] ( 3, 96 ) ref -> r0 "argument with side effect"
-; V21 tmp13 [V21,T02] ( 3, 96 ) ref -> [sp+0x08] spill-single-def "argument with side effect"
+; V21 tmp13 [V21,T02] ( 3, 96 ) ref -> [sp+0x0C] spill-single-def "argument with side effect"
; V22 tmp14 [V22,T04] ( 2, 64 ) ref -> r1 "argument with side effect"
-; V23 cse0 [V23,T09] ( 8, 29 ) int -> [sp+0x10] multi-def "CSE - aggressive"
-; V24 cse1 [V24,T07] ( 5, 30 ) byref -> r10 "CSE - aggressive"
-; V25 cse2 [V25,T08] ( 5, 30 ) int -> r6 "CSE - aggressive"
-; V26 cse3 [V26,T10] ( 6, 24 ) int -> [sp+0x0C] hoist multi-def "CSE - aggressive"
+; V23 cse0 [V23,T09] ( 7, 25 ) int -> r6 "CSE - aggressive"
+; V24 cse1 [V24,T07] ( 5, 28 ) byref -> [sp+0x08] spill-single-def "CSE - aggressive"
+; V25 cse2 [V25,T08] ( 5, 28 ) int -> [sp+0x14] spill-single-def "CSE - aggressive"
+; V26 cse3 [V26,T10] ( 6, 24 ) int -> [sp+0x10] hoist multi-def "CSE - aggressive"
+; V27 cse4 [V27,T17] ( 4, 7 ) int -> r7 "CSE - moderate"
;
-; Lcl frame size = 28
+; Lcl frame size = 36
G_M10252_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 28
- add r11, sp, 56
+ sub sp, 36
+ add r11, sp, 64
mov r4, r0
; gcrRegs +[r4]
mov r5, r1
@@ -76,37 +77,37 @@ G_M10252_IG04: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
blx r3 // <unknown method>
; gcr arg pop 0
ldr r1, [r0+0x04]
- ldr r0, [r5+0x04]
- ; gcrRegs -[r0]
- adds r1, r1, r0
+ ldr r7, [r5+0x04]
+ adds r1, r1, r7
movw r0, 0xd1ff
+ ; gcrRegs -[r0]
movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_NEWARR_1_OBJ
; gcrRegs +[r0]
; gcr arg pop 0
- mov r7, r0
- ; gcrRegs +[r7]
+ mov r8, r0
+ ; gcrRegs +[r8]
mov r0, r4
ldr r3, [r6+0x10]
blx r3 // <unknown method>
; gcr arg pop 0
- ldr r8, [r0+0x04]
+ ldr r9, [r0+0x04]
mov r0, r4
ldr r3, [r6+0x10]
blx r3 // <unknown method>
; gcr arg pop 0
- mov r9, r0
- ; gcrRegs +[r9]
+ mov r10, r0
+ ; gcrRegs +[r10]
mov r0, r4
ldr r3, [r6+0x10]
blx r3 // <unknown method>
; gcr arg pop 0
ldr r2, [r0+0x04]
- mov r0, r9
+ mov r0, r10
str r2, [sp]
- mov r2, r7
+ mov r2, r8
; gcrRegs +[r2]
movs r1, 0
movs r3, 0
@@ -114,46 +115,46 @@ G_M10252_IG04: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
movt lr, 0xd1ff
ldr lr, [lr]
blx lr // <unknown method>
- ; gcrRegs -[r0 r2 r9]
+ ; gcrRegs -[r0 r2 r10]
; gcr arg pop 0
- mov r9, 0
- ldr r0, [r5+0x04]
- cmp r0, 0
+ mov r10, 0
+ cmp r7, 0
ble SHORT G_M10252_IG12
- ;; size=96 bbWeight=1 PerfScore 39.00
-G_M10252_IG05: ; bbWeight=4, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz
- add r10, r5, 8
- ; byrRegs +[r10]
- lsl r6, r9, 2
- ldr r0, [r10+r6]
+ ;; size=94 bbWeight=1 PerfScore 38.00
+G_M10252_IG05: ; bbWeight=4, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, byref, isz
+ add r3, r5, 8
+ ; byrRegs +[r3]
+ str r3, [sp+0x08]
+ ; GC ptr vars +{V24}
+ lsl r2, r10, 2
+ str r2, [sp+0x14]
+ ldr r0, [r3+r2]
; gcrRegs +[r0]
cmp r0, 0
beq G_M10252_IG19
- movs r3, 0
- str r3, [sp+0x14] // [V07 loc5]
+ movs r1, 0
+ str r1, [sp+0x18] // [V07 loc5]
mov r0, r4
- ldr r2, [r4]
- ldr r2, [r2+0x2C]
- str r2, [sp+0x10] // [V23 cse0]
- ldr r1, [r2+0x10]
- blx r1 // <unknown method>
+ ldr lr, [r6+0x10]
+ blx lr // <unknown method>
+ ; byrRegs -[r3]
; gcr arg pop 0
ldr r0, [r0+0x04]
; gcrRegs -[r0]
cmp r0, 0
ble SHORT G_M10252_IG10
- ;; size=40 bbWeight=4 PerfScore 64.00
-G_M10252_IG06: ; bbWeight=2, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0400 {r10}, byref
- ldr r3, [r7+0x04]
- ;; size=2 bbWeight=2 PerfScore 2.00
-G_M10252_IG07: ; bbWeight=16, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0400 {r10}, byref, isz
- ldr r2, [sp+0x14] // [V07 loc5]
- str r3, [sp+0x0C] // [V26 cse3]
+ ;; size=38 bbWeight=4 PerfScore 60.00
+G_M10252_IG06: ; bbWeight=2, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, byref
+ ldr r3, [r8+0x04]
+ ;; size=4 bbWeight=2 PerfScore 2.00
+G_M10252_IG07: ; bbWeight=16, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, byref, isz
+ ldr r2, [sp+0x18] // [V07 loc5]
+ str r3, [sp+0x10] // [V26 cse3]
cmp r2, r3
- bhs SHORT G_M10252_IG17
- add r0, r7, 8
+ bhs G_M10252_IG17
+ add r0, r8, 8
; byrRegs +[r0]
- str r2, [sp+0x14] // [V07 loc5]
+ str r2, [sp+0x18] // [V07 loc5]
lsls r1, r2, 2
ldr r0, [r0+r1]
; gcrRegs +[r0]
@@ -163,17 +164,21 @@ G_M10252_IG07: ; bbWeight=16, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0400 {
ldr r1, [r1+0x10]
blx r1 // <unknown method>
; gcr arg pop 0
- str r0, [sp+0x08] // [V21 tmp13]
+ str r0, [sp+0x0C] // [V21 tmp13]
; GC ptr vars +{V21}
- ldr r0, [r10+r6]
- ldr r2, [r0]
- ldr r2, [r2+0x2C]
- ldr r2, [r2+0x10]
- blx r2 // <unknown method>
+ ldr r2, [sp+0x08] // [V24 cse1]
+ ; byrRegs +[r2]
+ ldr r1, [sp+0x14] // [V25 cse2]
+ ldr r0, [r2+r1]
+ ldr lr, [r0]
+ ldr lr, [lr+0x2C]
+ ldr lr, [lr+0x10]
+ blx lr // <unknown method>
+ ; byrRegs -[r2]
; gcr arg pop 0
mov r1, r0
; gcrRegs +[r1]
- ldr r0, [sp+0x08] // [V21 tmp13]
+ ldr r0, [sp+0x0C] // [V21 tmp13]
ldr r3, [r0]
ldr r3, [r3+0x2C]
ldr r3, [r3+0x08]
@@ -183,77 +188,84 @@ G_M10252_IG07: ; bbWeight=16, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0400 {
; gcr arg pop 0
cmp r0, 0
bne SHORT G_M10252_IG09
- ldr r3, [sp+0x14] // [V07 loc5]
+ ldr r3, [sp+0x18] // [V07 loc5]
adds r3, r3, 1
- str r3, [sp+0x14] // [V07 loc5]
+ str r3, [sp+0x18] // [V07 loc5]
mov r0, r4
; gcrRegs +[r0]
- ldr r2, [sp+0x10] // [V23 cse0]
- ldr r1, [r2+0x10]
- blx r1 // <unknown method>
+ ldr r2, [r6+0x10]
+ blx r2 // <unknown method>
; gcr arg pop 0
ldr r1, [r0+0x04]
- ldr r0, [sp+0x14] // [V07 loc5]
+ ldr r0, [sp+0x18] // [V07 loc5]
; gcrRegs -[r0]
cmp r1, r0
- str r0, [sp+0x14] // [V07 loc5]
- ldr r3, [sp+0x0C] // [V26 cse3]
+ str r0, [sp+0x18] // [V07 loc5]
+ ldr r3, [sp+0x10] // [V26 cse3]
bgt SHORT G_M10252_IG07
- ;; size=82 bbWeight=16 PerfScore 624.00
-G_M10252_IG08: ; bbWeight=2, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0400 {r10}, byref, isz
+ ;; size=90 bbWeight=16 PerfScore 640.00
+G_M10252_IG08: ; bbWeight=2, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, byref, isz
b SHORT G_M10252_IG10
;; size=2 bbWeight=2 PerfScore 2.00
-G_M10252_IG09: ; bbWeight=4, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0400 {r10}, byref, isz
- ldr r1, [r10+r6]
+G_M10252_IG09: ; bbWeight=2, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, byref, isz
...
libraries_tests.run.linux.arm.Release.mch
-24 (-32.43%) : 213559.dasm - System.UInt32:Equals(System.Object):ubyte:this (Tier1)
@@ -9,76 +9,61 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 3 ) byref -> r0 this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> r4 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> r1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> r1 class-hnd "spilling QMark2" <System.UInt32>
-; V04 tmp2 [V04,T03] ( 2, 4 ) int -> r5 "impAppendStmt"
-; V05 cse0 [V05,T05] ( 3, 2 ) int -> r1 "CSE - aggressive"
-; V06 cse1 [V06,T04] ( 4, 2.50) int -> r3 "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> r3 class-hnd "spilling QMark2" <System.UInt32>
+; V04 tmp2 [V04,T03] ( 2, 4 ) int -> r0 "impAppendStmt"
;
; Lcl frame size = 0
G_M22229_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr}
- add r11, sp, 8
- mov r4, r1
- ; gcrRegs +[r4]
- ;; size=10 bbWeight=1 PerfScore 3.00
-G_M22229_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz
- ; byrRegs +[r0]
- mov r1, r4
+ push {r11,lr}
+ mov r11, sp
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M22229_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz
; gcrRegs +[r1]
- cmp r1, 0
- beq SHORT G_M22229_IG09
+ ; byrRegs +[r0]
+ mov r3, r1
+ ; gcrRegs +[r3]
+ cmp r3, 0
+ bne SHORT G_M22229_IG05
;; size=6 bbWeight=1 PerfScore 3.00
-G_M22229_IG03: ; bbWeight=0.50, gcrefRegs=0012 {r1 r4}, byrefRegs=0001 {r0}, byref, isz
- ldr r1, [r1]
- ; gcrRegs -[r1]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- cmp r1, r3
- bne SHORT G_M22229_IG09
- ;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M22229_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz
- ldr r5, [r0]
- cmp r1, r3
- bne SHORT G_M22229_IG08
- ;; size=6 bbWeight=1 PerfScore 3.00
-G_M22229_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M22229_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r1 r3]
; byrRegs -[r0]
- ldr r0, [r4+0x04]
- cmp r5, r0
- beq SHORT G_M22229_IG06
movs r0, 0
- b SHORT G_M22229_IG07
- ;; size=10 bbWeight=1 PerfScore 5.00
-G_M22229_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4]
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M22229_IG04: ; bbWeight=1, epilog, nogc, extend
+ pop {r11,pc}
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M22229_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000A {r1 r3}, byrefRegs=0001 {r0}, gcvars, byref, isz
+ ; gcrRegs +[r1 r3]
+ ; byrRegs +[r0]
+ ldr r3, [r3]
+ ; gcrRegs -[r3]
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ cmp r3, r2
+ bne SHORT G_M22229_IG03
+ ;; size=14 bbWeight=0.50 PerfScore 2.50
+G_M22229_IG06: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz
+ ldr r0, [r0]
+ ; byrRegs -[r0]
+ ldr r3, [r1+0x04]
+ cmp r0, r3
+ beq SHORT G_M22229_IG07
+ movs r0, 0
+ b SHORT G_M22229_IG08
+ ;; size=12 bbWeight=1 PerfScore 6.00
+G_M22229_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r1]
movs r0, 1
;; size=2 bbWeight=1 PerfScore 1.00
-G_M22229_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- pop {r4,r5,r11,pc}
+G_M22229_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop {r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M22229_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[r4]
- mov r1, r4
- ; gcrRegs +[r1]
- mov r0, r3
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_UNBOX
- ; gcrRegs -[r1]
- b SHORT G_M22229_IG05
- ;; size=16 bbWeight=0.50 PerfScore 3.00
-G_M22229_IG09: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4]
- movs r0, 0
- ;; size=2 bbWeight=0.25 PerfScore 0.25
-G_M22229_IG10: ; bbWeight=0.25, epilog, nogc, extend
- pop {r4,r5,r11,pc}
- ;; size=4 bbWeight=0.25 PerfScore 0.25
-; Total bytes of code 74, prolog size 8, PerfScore 22.00, instruction count 29, allocated bytes for code 74 (MethodHash=4843a92a) for method System.UInt32:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 50, prolog size 6, PerfScore 17.50, instruction count 20, allocated bytes for code 50 (MethodHash=4843a92a) for method System.UInt32:Equals(System.Object):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -90,7 +75,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 74 (0x00004a)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -102,7 +87,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end
FF end
-24 (-32.43%) : 215412.dasm - System.Byte:Equals(System.Object):ubyte:this (Tier1)
@@ -9,76 +9,61 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 3 ) byref -> r0 this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> r4 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> r1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> r1 class-hnd "spilling QMark2" <System.Byte>
-; V04 tmp2 [V04,T03] ( 2, 4 ) int -> r5 "impAppendStmt"
-; V05 cse0 [V05,T05] ( 3, 2 ) int -> r1 "CSE - aggressive"
-; V06 cse1 [V06,T04] ( 4, 2.50) int -> r3 "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> r3 class-hnd "spilling QMark2" <System.Byte>
+; V04 tmp2 [V04,T03] ( 2, 4 ) int -> r0 "impAppendStmt"
;
; Lcl frame size = 0
G_M19224_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr}
- add r11, sp, 8
- mov r4, r1
- ; gcrRegs +[r4]
- ;; size=10 bbWeight=1 PerfScore 3.00
-G_M19224_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz
- ; byrRegs +[r0]
- mov r1, r4
+ push {r11,lr}
+ mov r11, sp
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M19224_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz
; gcrRegs +[r1]
- cmp r1, 0
- beq SHORT G_M19224_IG09
+ ; byrRegs +[r0]
+ mov r3, r1
+ ; gcrRegs +[r3]
+ cmp r3, 0
+ bne SHORT G_M19224_IG05
;; size=6 bbWeight=1 PerfScore 3.00
-G_M19224_IG03: ; bbWeight=0.50, gcrefRegs=0012 {r1 r4}, byrefRegs=0001 {r0}, byref, isz
- ldr r1, [r1]
- ; gcrRegs -[r1]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- cmp r1, r3
- bne SHORT G_M19224_IG09
- ;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M19224_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz
- ldrb r5, [r0]
- cmp r1, r3
- bne SHORT G_M19224_IG08
- ;; size=6 bbWeight=1 PerfScore 3.00
-G_M19224_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M19224_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r1 r3]
; byrRegs -[r0]
- ldrb r0, [r4+0x04]
- cmp r5, r0
- beq SHORT G_M19224_IG06
movs r0, 0
- b SHORT G_M19224_IG07
- ;; size=10 bbWeight=1 PerfScore 5.00
-G_M19224_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4]
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M19224_IG04: ; bbWeight=1, epilog, nogc, extend
+ pop {r11,pc}
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M19224_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000A {r1 r3}, byrefRegs=0001 {r0}, gcvars, byref, isz
+ ; gcrRegs +[r1 r3]
+ ; byrRegs +[r0]
+ ldr r3, [r3]
+ ; gcrRegs -[r3]
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ cmp r3, r2
+ bne SHORT G_M19224_IG03
+ ;; size=14 bbWeight=0.50 PerfScore 2.50
+G_M19224_IG06: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz
+ ldrb r0, [r0]
+ ; byrRegs -[r0]
+ ldrb r3, [r1+0x04]
+ cmp r0, r3
+ beq SHORT G_M19224_IG07
+ movs r0, 0
+ b SHORT G_M19224_IG08
+ ;; size=12 bbWeight=1 PerfScore 6.00
+G_M19224_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r1]
movs r0, 1
;; size=2 bbWeight=1 PerfScore 1.00
-G_M19224_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- pop {r4,r5,r11,pc}
+G_M19224_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop {r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M19224_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[r4]
- mov r1, r4
- ; gcrRegs +[r1]
- mov r0, r3
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_UNBOX
- ; gcrRegs -[r1]
- b SHORT G_M19224_IG05
- ;; size=16 bbWeight=0.50 PerfScore 3.00
-G_M19224_IG09: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4]
- movs r0, 0
- ;; size=2 bbWeight=0.25 PerfScore 0.25
-G_M19224_IG10: ; bbWeight=0.25, epilog, nogc, extend
- pop {r4,r5,r11,pc}
- ;; size=4 bbWeight=0.25 PerfScore 0.25
-; Total bytes of code 74, prolog size 8, PerfScore 22.00, instruction count 29, allocated bytes for code 74 (MethodHash=3af2b4e7) for method System.Byte:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 50, prolog size 6, PerfScore 17.50, instruction count 20, allocated bytes for code 50 (MethodHash=3af2b4e7) for method System.Byte:Equals(System.Object):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -90,7 +75,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 74 (0x00004a)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -102,7 +87,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end
FF end
-24 (-32.43%) : 286856.dasm - System.Char:Equals(System.Object):ubyte:this (Tier1)
@@ -9,76 +9,61 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 3 ) byref -> r0 this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> r4 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> r1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> r1 class-hnd "spilling QMark2" <System.Char>
-; V04 tmp2 [V04,T03] ( 2, 4 ) int -> r5 "impAppendStmt"
-; V05 cse0 [V05,T05] ( 3, 2 ) int -> r1 "CSE - aggressive"
-; V06 cse1 [V06,T04] ( 4, 2.50) int -> r3 "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> r3 class-hnd "spilling QMark2" <System.Char>
+; V04 tmp2 [V04,T03] ( 2, 4 ) int -> r0 "impAppendStmt"
;
; Lcl frame size = 0
G_M59978_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr}
- add r11, sp, 8
- mov r4, r1
- ; gcrRegs +[r4]
- ;; size=10 bbWeight=1 PerfScore 3.00
-G_M59978_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz
- ; byrRegs +[r0]
- mov r1, r4
+ push {r11,lr}
+ mov r11, sp
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M59978_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz
; gcrRegs +[r1]
- cmp r1, 0
- beq SHORT G_M59978_IG09
+ ; byrRegs +[r0]
+ mov r3, r1
+ ; gcrRegs +[r3]
+ cmp r3, 0
+ bne SHORT G_M59978_IG05
;; size=6 bbWeight=1 PerfScore 3.00
-G_M59978_IG03: ; bbWeight=0.50, gcrefRegs=0012 {r1 r4}, byrefRegs=0001 {r0}, byref, isz
- ldr r1, [r1]
- ; gcrRegs -[r1]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- cmp r1, r3
- bne SHORT G_M59978_IG09
- ;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M59978_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz
- ldrh r5, [r0]
- cmp r1, r3
- bne SHORT G_M59978_IG08
- ;; size=6 bbWeight=1 PerfScore 3.00
-G_M59978_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M59978_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r1 r3]
; byrRegs -[r0]
- ldrh r0, [r4+0x04]
- cmp r5, r0
- beq SHORT G_M59978_IG06
movs r0, 0
- b SHORT G_M59978_IG07
- ;; size=10 bbWeight=1 PerfScore 5.00
-G_M59978_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4]
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M59978_IG04: ; bbWeight=1, epilog, nogc, extend
+ pop {r11,pc}
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M59978_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000A {r1 r3}, byrefRegs=0001 {r0}, gcvars, byref, isz
+ ; gcrRegs +[r1 r3]
+ ; byrRegs +[r0]
+ ldr r3, [r3]
+ ; gcrRegs -[r3]
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ cmp r3, r2
+ bne SHORT G_M59978_IG03
+ ;; size=14 bbWeight=0.50 PerfScore 2.50
+G_M59978_IG06: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz
+ ldrh r0, [r0]
+ ; byrRegs -[r0]
+ ldrh r3, [r1+0x04]
+ cmp r0, r3
+ beq SHORT G_M59978_IG07
+ movs r0, 0
+ b SHORT G_M59978_IG08
+ ;; size=12 bbWeight=1 PerfScore 6.00
+G_M59978_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r1]
movs r0, 1
;; size=2 bbWeight=1 PerfScore 1.00
-G_M59978_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- pop {r4,r5,r11,pc}
+G_M59978_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop {r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M59978_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[r4]
- mov r1, r4
- ; gcrRegs +[r1]
- mov r0, r3
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_UNBOX
- ; gcrRegs -[r1]
- b SHORT G_M59978_IG05
- ;; size=16 bbWeight=0.50 PerfScore 3.00
-G_M59978_IG09: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4]
- movs r0, 0
- ;; size=2 bbWeight=0.25 PerfScore 0.25
-G_M59978_IG10: ; bbWeight=0.25, epilog, nogc, extend
- pop {r4,r5,r11,pc}
- ;; size=4 bbWeight=0.25 PerfScore 0.25
-; Total bytes of code 74, prolog size 8, PerfScore 22.00, instruction count 29, allocated bytes for code 74 (MethodHash=911915b5) for method System.Char:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 50, prolog size 6, PerfScore 17.50, instruction count 20, allocated bytes for code 50 (MethodHash=911915b5) for method System.Char:Equals(System.Object):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -90,7 +75,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 74 (0x00004a)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -102,7 +87,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end
FF end
+20 (+5.75%) : 14822.dasm - System.Text.RegularExpressions.RegexNode:TryGetJoinableLengthCheckChildRange(int,byref,byref):ubyte:this (Tier0-FullOpts)
@@ -8,28 +8,30 @@
; 3 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 7, 9.50) ref -> r6 this class-hnd single-def <System.Text.RegularExpressions.RegexNode>
-; V01 arg1 [V01,T10] ( 5, 3 ) int -> r7 single-def
+; V00 this [V00,T04] ( 7, 10 ) ref -> r6 this class-hnd single-def <System.Text.RegularExpressions.RegexNode>
+; V01 arg1 [V01,T10] ( 5, 3.50) int -> r7 single-def
; V02 arg2 [V02,T03] ( 6, 11 ) byref -> r5 single-def
; V03 arg3 [V03,T00] ( 10, 20 ) byref -> r4 single-def
;* V04 loc0 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Text.RegularExpressions.RegexNode>
; V05 loc1 [V05,T11] ( 3, 5 ) int -> r8
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call"
-; V08 tmp2 [V08,T14] ( 4, 2 ) ref -> r8 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
+; V08 tmp2 [V08,T15] ( 4, 2.50) ref -> r9 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
; V09 tmp3 [V09,T12] ( 2, 4 ) ref -> r8 single-def "CASTCLASS eval op1"
;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>
-; V11 tmp5 [V11,T13] ( 4, 2.75) ref -> r8 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
+; V11 tmp5 [V11,T14] ( 4, 2.75) ref -> r8 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
; V12 tmp6 [V12,T07] ( 4, 10 ) ref -> r10 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
; V13 tmp7 [V13,T01] ( 2, 16 ) ref -> r10 "CASTCLASS eval op1"
;* V14 tmp8 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>
; V15 tmp9 [V15,T06] ( 4, 11 ) ref -> r10 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
-; V16 tmp10 [V16,T04] ( 4, 12 ) int -> r9 "Inlining Arg"
+; V16 tmp10 [V16,T05] ( 4, 12 ) int -> r9 "Inlining Arg"
; V17 tmp11 [V17,T09] ( 3, 8 ) ref -> r3 class-hnd "Inlining Arg" <<unknown class>>
-; V18 tmp12 [V18,T16] ( 2, 0 ) ref -> r0 single-def "argument with side effect"
-; V19 tmp13 [V19,T15] ( 3, 0 ) ref -> r3 "arr expr"
-; V20 rat0 [V20,T08] ( 3, 9 ) ref -> r1 "Spilling to split statement for tree"
-; V21 rat1 [V21,T02] ( 5, 15 ) ref -> r3 class-hnd "replacement local" <<unknown class>>
+; V18 tmp12 [V18,T17] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
+; V19 tmp13 [V19,T18] ( 3, 0 ) ref -> r3 "arr expr"
+; V20 rat0 [V20,T16] ( 3, 2.25) ref -> r1 "Spilling to split statement for tree"
+; V21 rat1 [V21,T13] ( 5, 3.75) ref -> r0 class-hnd "replacement local" <<unknown class>>
+; V22 rat2 [V22,T08] ( 3, 9 ) ref -> r1 "Spilling to split statement for tree"
+; V23 rat3 [V23,T02] ( 5, 15 ) ref -> r3 class-hnd "replacement local" <<unknown class>>
;
; Lcl frame size = 4
@@ -48,17 +50,59 @@ G_M56069_IG02: ; bbWeight=1, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5},
ldr r8, [r6+0x04]
; gcrRegs +[r8]
cmp r8, 0
- beq G_M56069_IG21
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M56069_IG03: ; bbWeight=0.25, gcrefRegs=0140 {r6 r8}, byrefRegs=0030 {r4 r5}, byref, isz
- ldr r0, [r8]
+ bne SHORT G_M56069_IG07
+ ;; size=10 bbWeight=1 PerfScore 3.00
+G_M56069_IG03: ; bbWeight=0.50, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
+ ; gcrRegs -[r8]
+ ldr r1, [r6+0x04]
+ ; gcrRegs +[r1]
+ mov r0, r1
+ ; gcrRegs +[r0]
+ cmp r0, 0
+ beq SHORT G_M56069_IG06
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M56069_IG04: ; bbWeight=0.25, gcrefRegs=0043 {r0 r1 r6}, byrefRegs=0030 {r4 r5}, byref, isz
+ ldr r3, [r0]
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ cmp r3, r2
+ beq SHORT G_M56069_IG06
+ ;; size=14 bbWeight=0.25 PerfScore 1.25
+G_M56069_IG05: ; bbWeight=0.12, gcrefRegs=0042 {r1 r6}, byrefRegs=0030 {r4 r5}, byref
+ ; gcrRegs -[r0]
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- cmp r0, r3
- bne G_M56069_IG21
- ;; size=18 bbWeight=0.25 PerfScore 1.25
-G_M56069_IG04: ; bbWeight=1, gcrefRegs=0140 {r6 r8}, byrefRegs=0030 {r4 r5}, byref, isz
- mov r0, r8
+ blx r3 // CORINFO_HELP_CHKCASTCLASS_SPECIAL
+ ; gcrRegs -[r1] +[r0]
+ ;; size=18 bbWeight=0.12 PerfScore 0.62
+G_M56069_IG06: ; bbWeight=0.50, gcrefRegs=0041 {r0 r6}, byrefRegs=0030 {r4 r5}, byref, isz
+ mov r1, r7
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ ldr r2, [r0]
+ blx r3 // System.Collections.Generic.List`1[System.__Canon]:get_Item(int):System.__Canon:this
+ mov r9, r0
+ ; gcrRegs +[r9]
+ b SHORT G_M56069_IG09
+ ;; size=20 bbWeight=0.50 PerfScore 4.00
+G_M56069_IG07: ; bbWeight=0.25, gcrefRegs=0140 {r6 r8}, byrefRegs=0030 {r4 r5}, byref, isz
+ ; gcrRegs -[r0 r9] +[r8]
+ ldr r1, [r8]
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ cmp r1, r0
+ bne SHORT G_M56069_IG03
+ ;; size=16 bbWeight=0.25 PerfScore 1.25
+G_M56069_IG08: ; bbWeight=0.50, gcrefRegs=0140 {r6 r8}, byrefRegs=0030 {r4 r5}, byref
+ mov r9, r8
+ ; gcrRegs +[r9]
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
+G_M56069_IG09: ; bbWeight=1, gcrefRegs=0240 {r6 r9}, byrefRegs=0030 {r4 r5}, byref, isz
+ ; gcrRegs -[r8]
+ mov r0, r9
; gcrRegs +[r0]
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -66,17 +110,17 @@ G_M56069_IG04: ; bbWeight=1, gcrefRegs=0140 {r6 r8}, byrefRegs=0030 {r4 r
blx r3 // System.Text.RegularExpressions.RegexNode:<TryGetJoinableLengthCheckChildRange>g__CanJoinLengthCheck|60_0(System.Text.RegularExpressions.RegexNode):ubyte
; gcrRegs -[r0]
cmp r0, 0
- beq SHORT G_M56069_IG17
+ beq SHORT G_M56069_IG22
;; size=18 bbWeight=1 PerfScore 7.00
-G_M56069_IG05: ; bbWeight=0.50, gcrefRegs=0140 {r6 r8}, byrefRegs=0030 {r4 r5}, byref, isz
- mov r0, r8
+G_M56069_IG10: ; bbWeight=0.50, gcrefRegs=0240 {r6 r9}, byrefRegs=0030 {r4 r5}, byref, isz
+ mov r0, r9
; gcrRegs +[r0]
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
ldr r2, [r0]
blx r3 // <unknown method>
- ; gcrRegs -[r0 r8]
+ ; gcrRegs -[r0 r9]
str r0, [r5]
mov r0, r6
; gcrRegs +[r0]
@@ -90,32 +134,32 @@ G_M56069_IG05: ; bbWeight=0.50, gcrefRegs=0140 {r6 r8}, byrefRegs=0030 {r
str r1, [r4]
ldr r1, [r4]
cmp r1, r8
- bge SHORT G_M56069_IG15
+ bge SHORT G_M56069_IG20
;; size=44 bbWeight=0.50 PerfScore 9.00
-G_M56069_IG06: ; bbWeight=4, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
+G_M56069_IG11: ; bbWeight=4, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
ldr r9, [r4]
ldr r10, [r6+0x04]
; gcrRegs +[r10]
cmp r10, 0
- bne SHORT G_M56069_IG13
+ bne SHORT G_M56069_IG18
;; size=14 bbWeight=4 PerfScore 16.00
-G_M56069_IG07: ; bbWeight=2, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
+G_M56069_IG12: ; bbWeight=2, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
; gcrRegs -[r10]
ldr r1, [r6+0x04]
; gcrRegs +[r1]
mov r3, r1
; gcrRegs +[r3]
cmp r3, 0
- beq SHORT G_M56069_IG10
+ beq SHORT G_M56069_IG15
;; size=8 bbWeight=2 PerfScore 8.00
-G_M56069_IG08: ; bbWeight=1, gcrefRegs=004A {r1 r3 r6}, byrefRegs=0030 {r4 r5}, byref, isz
+G_M56069_IG13: ; bbWeight=1, gcrefRegs=004A {r1 r3 r6}, byrefRegs=0030 {r4 r5}, byref, isz
ldr r0, [r3]
movw r2, 0xd1ff
movt r2, 0xd1ff
cmp r0, r2
- beq SHORT G_M56069_IG10
+ beq SHORT G_M56069_IG15
;; size=14 bbWeight=1 PerfScore 5.00
-G_M56069_IG09: ; bbWeight=0.50, gcrefRegs=0042 {r1 r6}, byrefRegs=0030 {r4 r5}, byref
+G_M56069_IG14: ; bbWeight=0.50, gcrefRegs=0042 {r1 r6}, byrefRegs=0030 {r4 r5}, byref
; gcrRegs -[r3]
movw r0, 0xd1ff
movt r0, 0xd1ff
@@ -126,13 +170,13 @@ G_M56069_IG09: ; bbWeight=0.50, gcrefRegs=0042 {r1 r6}, byrefRegs=0030 {r
mov r3, r0
; gcrRegs +[r3]
;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M56069_IG10: ; bbWeight=2, gcrefRegs=0048 {r3 r6}, byrefRegs=0030 {r4 r5}, byref, isz
+G_M56069_IG15: ; bbWeight=2, gcrefRegs=0048 {r3 r6}, byrefRegs=0030 {r4 r5}, byref, isz
; gcrRegs -[r0]
ldr r0, [r3+0x08]
cmp r9, r0
- blo SHORT G_M56069_IG12
+ blo SHORT G_M56069_IG17
;; size=6 bbWeight=2 PerfScore 6.00
-G_M56069_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M56069_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r3 r6]
; byrRegs -[r4-r5]
movw r3, 0xd1ff
@@ -141,30 +185,30 @@ G_M56069_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blx r3 // System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()
bkpt
;; size=14 bbWeight=0 PerfScore 0.00
-G_M56069_IG12: ; bbWeight=0, gcrefRegs=0048 {r3 r6}, byrefRegs=0030 {r4 r5}, byref, isz
+G_M56069_IG17: ; bbWeight=0, gcrefRegs=0048 {r3 r6}, byrefRegs=0030 {r4 r5}, byref, isz
; gcrRegs +[r3 r6]
; byrRegs +[r4-r5]
ldr r3, [r3+0x04]
ldr r2, [r3+0x04]
cmp r9, r2
- bhs SHORT G_M56069_IG20
+ bhs SHORT G_M56069_IG25
adds r3, 8
; gcrRegs -[r3]
; byrRegs +[r3]
lsl r2, r9, 2
ldr r10, [r3+r2]
; gcrRegs +[r10]
- b SHORT G_M56069_IG14
+ b SHORT G_M56069_IG19
;; size=20 bbWeight=0 PerfScore 0.00
-G_M56069_IG13: ; bbWeight=1, gcrefRegs=0440 {r6 r10}, byrefRegs=0030 {r4 r5}, byref, isz
+G_M56069_IG18: ; bbWeight=1, gcrefRegs=0440 {r6 r10}, byrefRegs=0030 {r4 r5}, byref, isz
; byrRegs -[r3]
ldr r1, [r10]
movw r0, 0xd1ff
movt r0, 0xd1ff
cmp r1, r0
- bne SHORT G_M56069_IG07
+ bne SHORT G_M56069_IG12
;; size=16 bbWeight=1 PerfScore 5.00
-G_M56069_IG14: ; bbWeight=4, gcrefRegs=0440 {r6 r10}, byrefRegs=0030 {r4 r5}, byref, isz
+G_M56069_IG19: ; bbWeight=4, gcrefRegs=0440 {r6 r10}, byrefRegs=0030 {r4 r5}, byref, isz
mov r0, r10
; gcrRegs +[r0]
movw r3, 0xd1ff
@@ -173,7 +217,7 @@ G_M56069_IG14: ; bbWeight=4, gcrefRegs=0440 {r6 r10}, byrefRegs=0030 {r4
blx r3 // System.Text.RegularExpressions.RegexNode:<TryGetJoinableLengthCheckChildRange>g__CanJoinLengthCheck|60_0(System.Text.RegularExpressions.RegexNode):ubyte
; gcrRegs -[r0]
cmp r0, 0
- beq SHORT G_M56069_IG15
+ beq SHORT G_M56069_IG20
ldr r9, [r5]
mov r0, r10
; gcrRegs +[r0]
@@ -190,59 +234,39 @@ G_M56069_IG14: ; bbWeight=4, gcrefRegs=0440 {r6 r10}, byrefRegs=0030 {r4
str r0, [r4]
ldr r0, [r4]
cmp r0, r8
- blt SHORT G_M56069_IG06
+ blt SHORT G_M56069_IG11
;; size=54 bbWeight=4 PerfScore 88.00
-G_M56069_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
+G_M56069_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
; gcrRegs -[r6]
ldr r0, [r4]
subs r0, r0, r7
cmp r0, 1
- ble SHORT G_M56069_IG17
+ ble SHORT G_M56069_IG22
...
+6 (+6.38%) : 67468.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:ShouldCheckRequiredMembers(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):ubyte (Tier1)
@@ -13,30 +13,31 @@
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V02 tmp1 [V02,T04] ( 2, 2 ) int -> r0 "guarded devirt return temp"
;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedInstanceConstructor>
-; V04 tmp3 [V04,T05] ( 3, 2 ) ubyte -> r3 "Inline return value spill temp"
+; V04 tmp3 [V04,T05] ( 3, 2 ) ubyte -> r8 "Inline return value spill temp"
; V05 tmp4 [V05,T03] ( 2, 2 ) int -> r0 "guarded devirt return temp"
;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedInstanceConstructor>
-; V07 tmp6 [V07,T06] ( 3, 2 ) int -> r6 "guarded devirt return temp"
+; V07 tmp6 [V07,T06] ( 3, 2 ) int -> r7 "guarded devirt return temp"
;* V08 tmp7 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedInstanceConstructor>
; V09 cse0 [V09,T02] ( 3, 3 ) int -> r6 "CSE - aggressive"
; V10 cse1 [V10,T01] ( 4, 3.44) int -> r5 "CSE - aggressive"
+; V11 cse2 [V11,T07] ( 2, 2 ) int -> r0 "CSE - aggressive"
;
; Lcl frame size = 4
G_M22420_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r5,r6,r11,lr}
- add r11, sp, 16
+ push {r3,r4,r5,r6,r7,r8,r11,lr}
+ add r11, sp, 24
mov r4, r0
; gcrRegs +[r4]
;; size=10 bbWeight=1 PerfScore 3.00
G_M22420_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r4, 0
- beq SHORT G_M22420_IG10
+ beq SHORT G_M22420_IG11
ldr r5, [r4]
movw r0, 0xd1ff
movt r0, 0xd1ff
cmp r5, r0
- beq SHORT G_M22420_IG03
+ beq SHORT G_M22420_IG04
mov r0, r4
; gcrRegs +[r0]
ldr r6, [r5+0x70]
@@ -44,36 +45,38 @@ G_M22420_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
blx r3 // <unknown method>
; gcrRegs -[r0]
cmp r0, 1
- bne SHORT G_M22420_IG10
+ bne SHORT G_M22420_IG11
mov r0, r4
; gcrRegs +[r0]
ldr r3, [r6+0x1C]
blx r3 // <unknown method>
; gcrRegs -[r0]
cmp r0, 1
- bne SHORT G_M22420_IG09
- b SHORT G_M22420_IG08
- ;; size=42 bbWeight=1 PerfScore 19.00
-G_M22420_IG03: ; bbWeight=0.56, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ bne SHORT G_M22420_IG10
+ ;; size=40 bbWeight=1 PerfScore 18.00
+G_M22420_IG03: ; bbWeight=0.44, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M22420_IG09
+ ;; size=2 bbWeight=0.44 PerfScore 0.44
+G_M22420_IG04: ; bbWeight=0.56, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r4]
- movs r6, 0
+ movs r7, 0
;; size=2 bbWeight=0.56 PerfScore 0.56
-G_M22420_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- uxtb r3, r6
- ;; size=2 bbWeight=1 PerfScore 1.00
-G_M22420_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp r3, 0
- beq SHORT G_M22420_IG06
+G_M22420_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ uxtb r8, r7
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M22420_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp r8, 0
+ beq SHORT G_M22420_IG07
movs r0, 0
- b SHORT G_M22420_IG07
- ;; size=8 bbWeight=1 PerfScore 4.00
-G_M22420_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ b SHORT G_M22420_IG08
+ ;; size=10 bbWeight=1 PerfScore 4.00
+G_M22420_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r0, 1
;; size=2 bbWeight=1 PerfScore 1.00
-G_M22420_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- pop {r3,r4,r5,r6,r11,pc}
+G_M22420_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop {r3,r4,r5,r6,r7,r8,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M22420_IG08: ; bbWeight=0.44, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M22420_IG09: ; bbWeight=0.44, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r4]
mov r0, r4
; gcrRegs +[r0]
@@ -81,21 +84,21 @@ G_M22420_IG08: ; bbWeight=0.44, gcVars=00000000 {}, gcrefRegs=0010 {r4},
ldr r3, [r3+0x0C]
blx r3 // <unknown method>
; gcrRegs -[r0 r4]
- mov r6, r0
- b SHORT G_M22420_IG04
- ;; size=14 bbWeight=0.44 PerfScore 2.64
-G_M22420_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movs r3, 0
+ mov r7, r0
b SHORT G_M22420_IG05
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M22420_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=14 bbWeight=0.44 PerfScore 2.64
+G_M22420_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ mov r8, 0
+ b SHORT G_M22420_IG06
+ ;; size=6 bbWeight=0 PerfScore 0.00
+G_M22420_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r0, 0
;; size=2 bbWeight=0 PerfScore 0.00
-G_M22420_IG11: ; bbWeight=0, epilog, nogc, extend
- pop {r3,r4,r5,r6,r11,pc}
+G_M22420_IG12: ; bbWeight=0, epilog, nogc, extend
+ pop {r3,r4,r5,r6,r7,r8,r11,pc}
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 94, prolog size 8, PerfScore 32.20, instruction count 40, allocated bytes for code 94 (MethodHash=9bdfa86b) for method Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:ShouldCheckRequiredMembers(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):ubyte (Tier1)
+; Total bytes of code 100, prolog size 8, PerfScore 31.64, instruction count 40, allocated bytes for code 100 (MethodHash=9bdfa86b) for method Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:ShouldCheckRequiredMembers(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):ubyte (Tier1)
; ============================================================
Unwind Info:
@@ -107,7 +110,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 47 (0x0002f) Actual length = 94 (0x00005e)
+ Function Length : 50 (0x00032) Actual length = 100 (0x000064)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -119,7 +122,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 78 pop {r3,r4,r5,r6,r11,lr} ; opsize 32
+ A9 F8 pop {r3,r4,r5,r6,r7,r8,r11,lr} ; opsize 32
FF end
FF end
+24 (+7.95%) : 432766.dasm - System.Xml.Serialization.StructModel:CheckPropertyRead(System.Reflection.PropertyInfo):ubyte (Tier1)
@@ -9,41 +9,41 @@
; 7 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 7, 6.99) ref -> r4 class-hnd single-def <System.Reflection.PropertyInfo>
+; V00 arg0 [V00,T01] ( 7, 5.99) ref -> r4 class-hnd single-def <System.Reflection.PropertyInfo>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Reflection.MethodInfo>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Reflection.ParameterInfo[]>
; V03 OutArgs [V03 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T11] ( 2, 2 ) int -> r0 "guarded devirt return temp"
;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.RuntimePropertyInfo>
-; V06 tmp3 [V06,T00] ( 15, 10.08) ref -> r6 "guarded devirt return temp"
+; V06 tmp3 [V06,T00] ( 16, 9.08) ref -> r6 "guarded devirt return temp"
;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.RuntimePropertyInfo>
-; V08 tmp5 [V08,T09] ( 4, 2.54) ref -> r5 "guarded devirt return temp"
+; V08 tmp5 [V08,T09] ( 4, 2.54) ref -> r8 "guarded devirt return temp"
;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Reflection.RuntimeMethodInfo>
;* V10 tmp7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
;* V11 tmp8 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V12 tmp9 [V12,T12] ( 3, 1.99) int -> r4 "guarded devirt return temp"
+; V12 tmp9 [V12,T12] ( 3, 1.99) int -> r7 "guarded devirt return temp"
;* V13 tmp10 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.RuntimeMethodInfo>
;* V14 tmp11 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.ParameterInfo[]>
-; V15 tmp12 [V15,T08] ( 3, 2.98) ref -> r4 class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.ParameterInfo[]>
+; V15 tmp12 [V15,T08] ( 3, 2.98) ref -> r5 class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.ParameterInfo[]>
;* V16 tmp13 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Reflection.ParameterInfo[]>
-; V17 tmp14 [V17,T05] ( 2, 3.97) ref -> r5 class-hnd single-def "dup spill" <System.Reflection.ParameterInfo[]>
-; V18 tmp15 [V18,T02] ( 6, 5.35) ref -> r5
+; V17 tmp14 [V17,T05] ( 2, 3.97) ref -> r8 class-hnd single-def "dup spill" <System.Reflection.ParameterInfo[]>
+; V18 tmp15 [V18,T02] ( 6, 5.35) ref -> r8
;* V19 tmp16 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "dup spill" <System.Reflection.ParameterInfo[]>
;* V20 tmp17 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.ParameterInfo[]>
-; V21 tmp18 [V21,T07] ( 2, 3.29) ref -> r5 class-hnd exact single-def "dup spill" <System.Signature>
-; V22 tmp19 [V22,T06] ( 4, 3.29) ref -> r5
-; V23 tmp20 [V23,T10] ( 3, 2.47) ref -> r5 class-hnd single-def "Inline return value spill temp" <System.Reflection.ParameterInfo[]>
+; V21 tmp18 [V21,T07] ( 2, 3.29) ref -> r8 class-hnd exact single-def "dup spill" <System.Signature>
+; V22 tmp19 [V22,T06] ( 4, 3.29) ref -> r8
+; V23 tmp20 [V23,T10] ( 3, 2.47) ref -> r8 class-hnd single-def "Inline return value spill temp" <System.Reflection.ParameterInfo[]>
; V24 tmp21 [V24,T13] ( 2, 1.65) int -> r0
; V25 tmp22 [V25 ] ( 2, 1.65) ref -> [sp+0x0C] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Reflection.ParameterInfo>
-; V26 cse0 [V26,T03] ( 5, 4.99) int -> r5 "CSE - aggressive"
-; V27 cse1 [V27,T04] ( 4, 3.97) int -> r6 "CSE - moderate"
+; V26 cse0 [V26,T03] ( 5, 3.99) int -> r5 "CSE - aggressive"
+; V27 cse1 [V27,T04] ( 4, 3.97) int -> r4 "CSE - moderate"
;
; Lcl frame size = 20
G_M52216_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r11,lr}
+ push {r4,r5,r6,r7,r8,r11,lr}
sub sp, 20
- add r11, sp, 32
+ add r11, sp, 40
movs r1, 0
str r1, [sp+0x0C] // [V25 tmp22]
mov r4, r0
@@ -58,7 +58,7 @@ G_M52216_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
ldr r0, [r4+0x0C]
; gcrRegs +[r0]
cmp r0, 0
- beq SHORT G_M52216_IG07
+ beq SHORT G_M52216_IG05
;; size=20 bbWeight=1 PerfScore 8.00
G_M52216_IG03: ; bbWeight=0.99, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
@@ -71,7 +71,7 @@ G_M52216_IG03: ; bbWeight=0.99, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs -[r4]
mov r6, r0
; gcrRegs +[r6]
- b SHORT G_M52216_IG06
+ b SHORT G_M52216_IG07
;; size=14 bbWeight=0.99 PerfScore 6.95
G_M52216_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0 r6] +[r4]
@@ -82,56 +82,46 @@ G_M52216_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
blx r3 // <unknown method>
; gcrRegs -[r0]
cmp r0, 0
- beq SHORT G_M52216_IG07
- ;; size=12 bbWeight=1 PerfScore 6.00
-G_M52216_IG05: ; bbWeight=0.99, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- mov r0, r4
- ; gcrRegs +[r0]
- ldr r3, [r5+0x38]
- ldr r3, [r3]
- blx r3 // System.Reflection.PropertyInfo:get_GetMethod():System.Reflection.MethodInfo:this
- ; gcrRegs -[r4]
- mov r6, r0
- ; gcrRegs +[r6]
- ;; size=10 bbWeight=0.99 PerfScore 4.97
-G_M52216_IG06: ; bbWeight=0.99, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0]
- ldr r0, [r6]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- cmp r0, r3
bne SHORT G_M52216_IG17
- ldr r4, [r6+0x30]
- b SHORT G_M52216_IG09
- ;; size=18 bbWeight=0.99 PerfScore 6.95
-G_M52216_IG07: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r6]
+ ;; size=12 bbWeight=1 PerfScore 6.00
+G_M52216_IG05: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r4]
movs r0, 0
;; size=2 bbWeight=0.01 PerfScore 0.01
-G_M52216_IG08: ; bbWeight=0.01, epilog, nogc, extend
+G_M52216_IG06: ; bbWeight=0.01, epilog, nogc, extend
add sp, 20
- pop {r4,r5,r6,r11,pc}
+ pop {r4,r5,r6,r7,r8,r11,pc}
;; size=6 bbWeight=0.01 PerfScore 0.01
-G_M52216_IG09: ; bbWeight=0.99, gcVars=00000000 {}, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M52216_IG07: ; bbWeight=0.99, gcVars=00000000 {}, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r6]
- ands r0, r4, 16
- cmp r0, 0
- bne SHORT G_M52216_IG07
ldr r0, [r6]
movw r3, 0xd1ff
movt r3, 0xd1ff
cmp r0, r3
bne SHORT G_M52216_IG18
- ldr r5, [r6+0x10]
- ; gcrRegs +[r5]
- cmp r5, 0
+ ;; size=14 bbWeight=0.99 PerfScore 4.97
+G_M52216_IG08: ; bbWeight=0.99, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref
+ ldr r7, [r6+0x30]
+ ;; size=2 bbWeight=0.99 PerfScore 0.99
+G_M52216_IG09: ; bbWeight=0.99, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz
+ ands r0, r7, 16
+ cmp r0, 0
+ bne SHORT G_M52216_IG05
+ ldr r0, [r6]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r0, r3
+ bne SHORT G_M52216_IG19
+ ldr r8, [r6+0x10]
+ ; gcrRegs +[r8]
+ cmp r8, 0
bne SHORT G_M52216_IG12
- ;; size=28 bbWeight=0.99 PerfScore 10.93
+ ;; size=32 bbWeight=0.99 PerfScore 10.93
G_M52216_IG10: ; bbWeight=0.82, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r5]
- ldr r5, [r6+0x18]
- ; gcrRegs +[r5]
- cmp r5, 0
+ ; gcrRegs -[r8]
+ ldr r8, [r6+0x18]
+ ; gcrRegs +[r8]
+ cmp r8, 0
bne SHORT G_M52216_IG11
mov r0, r6
; gcrRegs +[r0]
@@ -139,11 +129,11 @@ G_M52216_IG10: ; bbWeight=0.82, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, b
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
- ; gcrRegs -[r5]
- mov r5, r0
- ; gcrRegs +[r5]
- ;; size=22 bbWeight=0.82 PerfScore 7.41
-G_M52216_IG11: ; bbWeight=0.82, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r8]
+ mov r8, r0
+ ; gcrRegs +[r8]
+ ;; size=26 bbWeight=0.82 PerfScore 7.41
+G_M52216_IG11: ; bbWeight=0.82, gcrefRegs=0140 {r6 r8}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
movs r0, 1
movw r3, 0xd1ff
@@ -157,21 +147,21 @@ G_M52216_IG11: ; bbWeight=0.82, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}
; gcrRegs +[r0]
mov r1, r6
; gcrRegs +[r1]
- mov r2, r5
+ mov r2, r8
; gcrRegs +[r2]
movw lr, 0xd1ff
movt lr, 0xd1ff
ldr lr, [lr]
blx lr // <unknown method>
- ; gcrRegs -[r1-r2 r5]
- mov r5, r0
- ; gcrRegs +[r5]
+ ; gcrRegs -[r1-r2 r8]
+ mov r8, r0
+ ; gcrRegs +[r8]
movs r1, 0
str r1, [sp+0x0C] // [V25 tmp22]
add r0, r6, 16
; gcrRegs -[r0]
; byrRegs +[r0]
- mov r1, r5
+ mov r1, r8
; gcrRegs +[r1]
movw r12, 0xd1ff
movt r12, 0xd1ff
@@ -179,49 +169,65 @@ G_M52216_IG11: ; bbWeight=0.82, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}
; gcrRegs -[r1 r6]
; byrRegs -[r0]
;; size=62 bbWeight=0.82 PerfScore 18.93
-G_M52216_IG12: ; bbWeight=0.99, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
- ldr r6, [r5+0x04]
- cmp r6, 0
+G_M52216_IG12: ; bbWeight=0.99, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz
+ ldr r4, [r8+0x04]
+ cmp r4, 0
bne SHORT G_M52216_IG14
- ;; size=6 bbWeight=0.99 PerfScore 2.98
-G_M52216_IG13: ; bbWeight=0.55, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ ;; size=8 bbWeight=0.99 PerfScore 2.98
+G_M52216_IG13: ; bbWeight=0.55, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz
b SHORT G_M52216_IG15
;; size=2 bbWeight=0.55 PerfScore 0.55
-G_M52216_IG14: ; bbWeight=0.99, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
- mov r1, r6
+G_M52216_IG14: ; bbWeight=0.99, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
+ mov r1, r4
movw r0, 0xd1ff
movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_NEWARR_1_OBJ
; gcrRegs +[r0]
- mov r4, r0
- ; gcrRegs +[r4]
- mov r2, r6
- mov r0, r5
- mov r1, r4
+ mov r5, r0
+ ; gcrRegs +[r5]
+ mov r2, r4
+ mov r0, r8
+ mov r1, r5
; gcrRegs +[r1]
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
- ; gcrRegs -[r0-r1 r5]
- mov r5, r4
- ; gcrRegs +[r5]
+ ; gcrRegs -[r0-r1 r8]
+ mov r8, r5
+ ; gcrRegs +[r8]
...
librariestestsnotieredcompilation.run.linux.arm.Release.mch
-24 (-31.58%) : 194419.dasm - System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs:Equals(System.Object):ubyte:this (FullOpts)
@@ -8,79 +8,59 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 2.50) byref -> r0 this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> r4 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> r1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> r1 class-hnd "spilling QMark2" <System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs>
-; V04 tmp2 [V04,T03] ( 2, 2 ) ref -> r5 class-hnd exact single-def "impAppendStmt" <System.Runtime.Serialization.Formatters.Tests.StructContainingOtherStructs[]>
-; V05 cse0 [V05,T05] ( 3, 1 ) int -> r1 "CSE - moderate"
-; V06 cse1 [V06,T04] ( 4, 1.25) int -> r3 "CSE - moderate"
+; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> r3 class-hnd "spilling QMark2" <System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs>
+; V04 tmp2 [V04,T03] ( 2, 2 ) ref -> r0 class-hnd exact single-def "impAppendStmt" <System.Runtime.Serialization.Formatters.Tests.StructContainingOtherStructs[]>
;
; Lcl frame size = 0
-G_M20050_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr}
- add r11, sp, 8
- mov r4, r1
- ; gcrRegs +[r4]
- ;; size=10 bbWeight=1 PerfScore 3.00
-G_M20050_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz
- ; byrRegs +[r0]
- mov r1, r4
+G_M20050_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+ push {r11,lr}
+ mov r11, sp
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M20050_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz
; gcrRegs +[r1]
- cmp r1, 0
+ ; byrRegs +[r0]
+ mov r3, r1
+ ; gcrRegs +[r3]
+ cmp r3, 0
beq SHORT G_M20050_IG04
;; size=6 bbWeight=1 PerfScore 3.00
-G_M20050_IG03: ; bbWeight=0.25, gcrefRegs=0012 {r1 r4}, byrefRegs=0001 {r0}, byref, isz
- ldr r1, [r1]
- ; gcrRegs -[r1]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- cmp r1, r3
+G_M20050_IG03: ; bbWeight=0.25, gcrefRegs=000A {r1 r3}, byrefRegs=0001 {r0}, byref, isz
+ ldr r3, [r3]
+ ; gcrRegs -[r3]
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ cmp r3, r2
beq SHORT G_M20050_IG06
;; size=14 bbWeight=0.25 PerfScore 1.25
G_M20050_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4]
+ ; gcrRegs -[r1]
; byrRegs -[r0]
movs r0, 0
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M20050_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,pc}
+ pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M20050_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, gcvars, byref, isz
- ; gcrRegs +[r4]
+G_M20050_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, gcvars, byref
+ ; gcrRegs +[r1]
; byrRegs +[r0]
- ldr r5, [r0]
- ; gcrRegs +[r5]
- cmp r1, r3
- beq SHORT G_M20050_IG08
- ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M20050_IG07: ; bbWeight=0.25, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
- ; byrRegs -[r0]
- mov r1, r4
- ; gcrRegs +[r1]
- mov r0, r3
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_UNBOX
- ; gcrRegs -[r1]
- ; gcr arg pop 0
- ;; size=14 bbWeight=0.25 PerfScore 1.25
-G_M20050_IG08: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
- ldr r1, [r4+0x04]
- ; gcrRegs +[r1]
- mov r0, r5
+ ldr r0, [r0]
; gcrRegs +[r0]
+ ; byrRegs -[r0]
+ ldr r1, [r1+0x04]
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M20050_IG09: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,lr}
+G_M20050_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ pop {r11,lr}
bx r3 // System.Runtime.Serialization.Formatters.Tests.EqualityHelpers:ArraysAreEqual[System.Runtime.Serialization.Formatters.Tests.StructContainingOtherStructs](System.Runtime.Serialization.Formatters.Tests.StructContainingOtherStructs[],System.Runtime.Serialization.Formatters.Tests.StructContainingOtherStructs[]):ubyte
; gcr arg pop 0
;; size=6 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 76, prolog size 10, PerfScore 14.50, instruction count 28, allocated bytes for code 76 (MethodHash=8ccbb1ad) for method System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 52, prolog size 6, PerfScore 10.75, instruction count 19, allocated bytes for code 52 (MethodHash=8ccbb1ad) for method System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -92,7 +72,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
+ Function Length : 26 (0x0001a) Actual length = 52 (0x000034)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -104,7 +84,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end
FF end
-32 (-26.67%) : 94842.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
@@ -7,15 +7,17 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 5, 7.50) ref -> r0 class-hnd single-def <System.String>
-; V01 arg1 [V01,T02] ( 6, 11 ) ref -> r1 class-hnd single-def <System.String>
-; V02 arg2 [V02,T05] ( 4, 6.50) int -> r2 single-def
-; V03 arg3 [V03,T07] ( 5, 4 ) int -> r3 single-def
-; V04 loc0 [V04,T03] ( 5, 11.50) int -> r12
-; V05 loc1 [V05,T00] ( 11, 27.50) int -> r4
+; V00 arg0 [V00,T04] ( 4, 7 ) ref -> r0 class-hnd single-def <System.String>
+; V01 arg1 [V01,T01] ( 4, 10 ) ref -> r1 class-hnd single-def <System.String>
+; V02 arg2 [V02,T07] ( 3, 6 ) int -> r2 single-def
+; V03 arg3 [V03,T09] ( 5, 4 ) int -> r3 single-def
+; V04 loc0 [V04,T03] ( 4, 10.50) int -> r12
+; V05 loc1 [V05,T00] ( 7, 25 ) int -> r4
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T06] ( 5, 7 ) int -> lr "CSE - aggressive"
-; V08 cse1 [V08,T01] ( 6, 13.50) int -> r6 multi-def "CSE - aggressive"
+; V07 cse0 [V07,T05] ( 3, 8.50) int -> r6 "CSE - aggressive"
+; V08 cse1 [V08,T06] ( 3, 8.50) int -> r5 "CSE - aggressive"
+; V09 cse2 [V09,T08] ( 4, 6.50) int -> lr "CSE - aggressive"
+; V10 cse3 [V10,T02] ( 3, 12 ) int -> r6 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -42,11 +44,11 @@ G_M6389_IG05: ; bbWeight=2, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, by
;; size=2 bbWeight=2 PerfScore 2.00
G_M6389_IG06: ; bbWeight=8, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
cmp r4, r12
- bge SHORT G_M6389_IG08
+ bge SHORT G_M6389_IG10
;; size=4 bbWeight=8 PerfScore 16.00
G_M6389_IG07: ; bbWeight=4, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
cmp r4, lr
- bhs SHORT G_M6389_IG13
+ bhs SHORT G_M6389_IG12
add r5, r0, 8
; byrRegs +[r5]
lsls r6, r4, 1
@@ -55,7 +57,7 @@ G_M6389_IG07: ; bbWeight=4, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, by
adds r6, r2, r4
ldr r7, [r1+0x04]
cmp r6, r7
- bhs SHORT G_M6389_IG13
+ bhs SHORT G_M6389_IG12
lsls r6, r6, 1
add r7, r1, 8
; byrRegs +[r7]
@@ -63,42 +65,21 @@ G_M6389_IG07: ; bbWeight=4, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, by
cmp r5, r6
beq SHORT G_M6389_IG05
;; size=32 bbWeight=4 PerfScore 56.00
-G_M6389_IG08: ; bbWeight=1, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
+G_M6389_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r0-r1]
; byrRegs -[r7]
- cmp r4, r12
- bge SHORT G_M6389_IG11
- ;; size=4 bbWeight=1 PerfScore 2.00
-G_M6389_IG09: ; bbWeight=0.50, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
- cmp r4, lr
- bhs SHORT G_M6389_IG13
- adds r0, 8
- ; gcrRegs -[r0]
- ; byrRegs +[r0]
- lsls r3, r4, 1
- ldrh r0, [r0+r3]
- ; byrRegs -[r0]
- adds r6, r2, r4
- ldr lr, [r1+0x04]
- cmp r6, lr
- bhs SHORT G_M6389_IG13
- lsls r3, r6, 1
- add r2, r1, 8
- ; byrRegs +[r2]
- ldrh r3, [r2+r3]
- subs r0, r0, r3
- ;; size=30 bbWeight=0.50 PerfScore 6.50
-G_M6389_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ subs r0, r5, r6
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
+G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend
pop {r4,r5,r6,r7,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M6389_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r1]
- ; byrRegs -[r2]
+G_M6389_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
sub r0, lr, r3
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M6389_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M6389_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop {r4,r5,r6,r7,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M6389_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_RNGCHKFAIL
@@ -106,7 +87,7 @@ G_M6389_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefR
bkpt
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 120, prolog size 8, PerfScore 92.50, instruction count 48, allocated bytes for code 120 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
+; Total bytes of code 88, prolog size 8, PerfScore 84.50, instruction count 34, allocated bytes for code 88 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -118,7 +99,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 60 (0x0003c) Actual length = 120 (0x000078)
+ Function Length : 44 (0x0002c) Actual length = 88 (0x000058)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-22 (-18.64%) : 90744.dasm - System.Data.Tests.DataRowTest2+Address:Equals(System.Object):ubyte:this (FullOpts)
@@ -8,14 +8,14 @@
; 2 inlinees with PGO data; 6 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 4, 3 ) byref -> r5 this single-def
-; V01 arg1 [V01,T00] ( 6, 4.25) ref -> r4 class-hnd single-def <System.Object>
+; V00 this [V00,T01] ( 4, 3 ) byref -> r0 this single-def
+; V01 arg1 [V01,T00] ( 5, 4 ) ref -> r1 class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref <System.Data.Tests.DataRowTest2+Address>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T02] ( 3, 4.50) ref -> r0 class-hnd "spilling QMark2" <System.Data.Tests.DataRowTest2+Address>
+; V04 tmp1 [V04,T02] ( 3, 4.50) ref -> r2 class-hnd "spilling QMark2" <System.Data.Tests.DataRowTest2+Address>
;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
; V06 tmp3 [V06,T04] ( 5, 4.70) ref -> r1 class-hnd exact single-def "Inlining Arg" <System.String>
-; V07 tmp4 [V07,T08] ( 2, 1 ) ubyte -> r0 "Inline return value spill temp"
+; V07 tmp4 [V07,T07] ( 2, 1 ) ubyte -> r0 "Inline return value spill temp"
; V08 tmp5 [V08,T03] ( 5, 4.70) ref -> r2 class-hnd exact single-def "Inlining Arg" <System.String>
; V09 tmp6 [V09,T05] ( 2, 2 ) byref -> r3 single-def "impAppendStmt"
;* V10 tmp7 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -23,87 +23,71 @@
;* 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 ) ubyte -> zero-ref "Inlining Arg"
-; V15 tmp12 [V15,T10] ( 2, 1 ) ref -> r2 single-def "field V02.Street (fldOffset=0x0)" P-INDEP
-; V16 tmp13 [V16,T11] ( 2, 1 ) int -> r1 single-def "field V02.HouseNumber (fldOffset=0x4)" P-INDEP
+; V15 tmp12 [V15,T08] ( 2, 1 ) ref -> r2 single-def "field V02.Street (fldOffset=0x0)" P-INDEP
+; V16 tmp13 [V16,T09] ( 2, 1 ) int -> r1 single-def "field V02.HouseNumber (fldOffset=0x4)" P-INDEP
; V17 cse0 [V17,T06] ( 3, 1.35) int -> r0 "CSE - moderate"
-; V18 cse1 [V18,T09] ( 3, 1 ) int -> r1 "CSE - moderate"
-; V19 cse2 [V19,T07] ( 4, 1.25) int -> r0 "CSE - moderate"
;
; Lcl frame size = 0
G_M31876_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr}
- add r11, sp, 8
- mov r5, r0
- ; byrRegs +[r5]
- mov r4, r1
- ; gcrRegs +[r4]
- ;; size=12 bbWeight=1 PerfScore 4.00
-G_M31876_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
- mov r0, r4
- ; gcrRegs +[r0]
- cmp r0, 0
+ push {r11,lr}
+ mov r11, sp
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M31876_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz
+ ; gcrRegs +[r1]
+ ; byrRegs +[r0]
+ mov r2, r1
+ ; gcrRegs +[r2]
+ cmp r2, 0
beq SHORT G_M31876_IG04
;; size=6 bbWeight=1 PerfScore 3.00
-G_M31876_IG03: ; bbWeight=0.25, gcrefRegs=0011 {r0 r4}, byrefRegs=0020 {r5}, byref, isz
- ldr r1, [r0]
- movw r0, 0xd1ff
- ; gcrRegs -[r0]
- movt r0, 0xd1ff
- cmp r1, r0
+G_M31876_IG03: ; bbWeight=0.25, gcrefRegs=0006 {r1 r2}, byrefRegs=0001 {r0}, byref, isz
+ ldr r2, [r2]
+ ; gcrRegs -[r2]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r2, r3
beq SHORT G_M31876_IG06
;; size=14 bbWeight=0.25 PerfScore 1.25
G_M31876_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4]
- ; byrRegs -[r5]
+ ; gcrRegs -[r1]
+ ; byrRegs -[r0]
movs r0, 0
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M31876_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,pc}
+ pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M31876_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, gcvars, byref, isz
- ; gcrRegs +[r4]
- ; byrRegs +[r5]
- cmp r1, r0
- beq SHORT G_M31876_IG08
- ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M31876_IG07: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref
- mov r1, r4
+G_M31876_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, gcvars, byref, isz
; gcrRegs +[r1]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_UNBOX
- ; gcrRegs -[r1]
- ;; size=12 bbWeight=0.25 PerfScore 1.00
-G_M31876_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
- ldr r2, [r4+0x04]
+ ; byrRegs +[r0]
+ ldr r2, [r1+0x04]
; gcrRegs +[r2]
- ldr r1, [r4+0x08]
- ldr r0, [r5+0x04]
- cmp r1, r0
+ ldr r1, [r1+0x08]
+ ; gcrRegs -[r1]
+ ldr r3, [r0+0x04]
+ cmp r1, r3
bne SHORT G_M31876_IG04
- ldr r1, [r5]
+ ldr r1, [r0]
; gcrRegs +[r1]
cmp r2, r1
- beq SHORT G_M31876_IG13
+ beq SHORT G_M31876_IG11
;; size=16 bbWeight=0.50 PerfScore 4.00
-G_M31876_IG09: ; bbWeight=0.43, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r4]
- ; byrRegs -[r5]
+G_M31876_IG07: ; bbWeight=0.43, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[r0]
cmp r2, 0
beq SHORT G_M31876_IG04
;; size=4 bbWeight=0.43 PerfScore 0.85
-G_M31876_IG10: ; bbWeight=0.43, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz
+G_M31876_IG08: ; bbWeight=0.43, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz
cmp r1, 0
beq SHORT G_M31876_IG04
;; size=4 bbWeight=0.43 PerfScore 0.85
-G_M31876_IG11: ; bbWeight=0.43, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz
+G_M31876_IG09: ; bbWeight=0.43, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz
ldr r0, [r2+0x04]
ldr r3, [r1+0x04]
cmp r0, r3
bne SHORT G_M31876_IG04
;; size=8 bbWeight=0.43 PerfScore 1.70
-G_M31876_IG12: ; bbWeight=0.50, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz
+G_M31876_IG10: ; bbWeight=0.50, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz
add r3, r2, 8
; byrRegs +[r3]
lsls r2, r0, 1
@@ -122,14 +106,14 @@ G_M31876_IG12: ; bbWeight=0.50, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}
cmp r0, 0
beq SHORT G_M31876_IG04
;; size=26 bbWeight=0.50 PerfScore 5.00
-G_M31876_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M31876_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r0, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M31876_IG14: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,pc}
+G_M31876_IG12: ; bbWeight=0.50, epilog, nogc, extend
+ pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 118, prolog size 8, PerfScore 24.65, instruction count 48, allocated bytes for code 118 (MethodHash=de0c837b) for method System.Data.Tests.DataRowTest2+Address:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 96, prolog size 6, PerfScore 20.65, instruction count 40, allocated bytes for code 96 (MethodHash=de0c837b) for method System.Data.Tests.DataRowTest2+Address:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -141,7 +125,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 59 (0x0003b) Actual length = 118 (0x000076)
+ Function Length : 48 (0x00030) Actual length = 96 (0x000060)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -153,7 +137,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end
FF end
+44 (+3.46%) : 23733.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)
@@ -42,15 +42,15 @@
; V31 tmp14 [V31,T26] ( 4, 3 ) int -> lr "Inline stloc first use temp"
; V32 tmp15 [V32,T03] ( 9, 10.70) ref -> r5 class-hnd exact single-def "Inlining Arg" <System.String>
; V33 tmp16 [V33,T15] ( 5, 4 ) ref -> r9 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V34 tmp17 [V34,T11] ( 9, 4.88) ref -> r8 class-hnd exact single-def "Inline stloc first use temp" <System.String>
-; V35 tmp18 [V35,T37] ( 2, 1 ) ubyte -> r0 "Inline return value spill temp"
+; V34 tmp17 [V34,T11] ( 9, 4.81) ref -> r8 class-hnd exact single-def "Inline stloc first use temp" <System.String>
+; V35 tmp18 [V35,T36] ( 2, 1 ) ubyte -> r0 "Inline return value spill temp"
; V36 tmp19 [V36,T33] ( 2, 2 ) byref -> r0 single-def "impAppendStmt"
;* V37 tmp20 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V38 tmp21 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V39 tmp22 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V40 tmp23 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V41 tmp24 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V42 tmp25 [V42,T38] ( 2, 1 ) ubyte -> r0 "Inline return value spill temp"
+; V42 tmp25 [V42,T37] ( 2, 1 ) ubyte -> r0 "Inline return value spill temp"
; V43 tmp26 [V43,T34] ( 2, 2 ) byref -> r0 single-def "impAppendStmt"
;* V44 tmp27 [V44 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V45 tmp28 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -67,7 +67,7 @@
; V56 tmp39 [V56 ] ( 8, 13 ) struct ( 8) [sp+0x28] do-not-enreg[HS] must-init hidden-struct-arg "dup spill" <System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]>
;* V57 tmp40 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax>
;* V58 tmp41 [V58 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V59 tmp42 [V59,T00] ( 27, 45 ) ref -> r5 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax>
+; V59 tmp42 [V59,T00] ( 27, 45 ) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax>
;* V60 tmp43 [V60 ] ( 0, 0 ) int -> zero-ref single-def "field V04.<Start>k__BackingField (fldOffset=0x0)" P-INDEP
;* V61 tmp44 [V61 ] ( 0, 0 ) int -> zero-ref "field V04.<End>k__BackingField (fldOffset=0x4)" P-INDEP
; V62 tmp45 [V62,T30] ( 3, 2 ) int -> r7 single-def "field V08._value (fldOffset=0x0)" P-INDEP
@@ -87,8 +87,8 @@
; V76 PSPSym [V76,T44] ( 1, 1 ) int -> [sp+0x90] do-not-enreg[V] "PSPSym"
; V77 cse0 [V77,T28] ( 3, 2.50) int -> r2 "CSE - moderate"
; V78 cse1 [V78,T27] ( 3, 3 ) int -> r2 "CSE - moderate"
-; V79 cse2 [V79,T36] ( 3, 1.50) int -> [sp+0x24] spill-single-def "CSE - conservative"
-; V80 cse3 [V80,T23] ( 9, 3.88) int -> [sp+0x20] multi-def "CSE - moderate"
+; V79 cse2 [V79,T38] ( 3, 1.50) int -> [sp+0x24] spill-single-def "CSE - conservative"
+; V80 cse3 [V80,T23] ( 9, 3.81) int -> [sp+0x20] multi-def "CSE - moderate"
; TEMP_01 ref -> [r11-0xA0]
;
; Lcl frame size = 148
@@ -134,10 +134,10 @@ G_M12557_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
ldr r8, [r4+0x04]
mov r1, r7
cmp r1, 0
- blt G_M12557_IG35
+ blt G_M12557_IG36
mov r3, r6
cmp r3, 0
- blt G_M12557_IG36
+ blt G_M12557_IG37
;; size=22 bbWeight=1 PerfScore 8.00
G_M12557_IG06: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
subs r2, r3, r1
@@ -377,17 +377,17 @@ G_M12557_IG11: ; bbWeight=1, gcrefRegs=02D0 {r4 r6 r7 r9}, byrefRegs=0000
G_M12557_IG12: ; bbWeight=0.43, gcrefRegs=03F0 {r4 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
cmp r5, 0
- beq G_M12557_IG30
+ beq G_M12557_IG31
;; size=6 bbWeight=0.43 PerfScore 0.85
G_M12557_IG13: ; bbWeight=0.43, gcrefRegs=03F0 {r4 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
cmp r8, 0
- beq G_M12557_IG30
+ beq G_M12557_IG31
;; size=8 bbWeight=0.43 PerfScore 0.85
G_M12557_IG14: ; bbWeight=0.43, gcrefRegs=03F0 {r4 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
ldr r3, [r5+0x04]
ldr r2, [r8+0x04]
cmp r3, r2
- bne G_M12557_IG30
+ bne G_M12557_IG31
;; size=12 bbWeight=0.43 PerfScore 1.70
G_M12557_IG15: ; bbWeight=0.27, gcrefRegs=03F0 {r4 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
ldr r2, [r8+0x04]
@@ -456,23 +456,23 @@ G_M12557_IG18: ; bbWeight=1, gcrefRegs=02D0 {r4 r6 r7 r9}, byrefRegs=0000
blx r3 // CORINFO_HELP_NEWSFAST
; gcrRegs +[r0]
; gcr arg pop 0
- mov r5, r0
- ; gcrRegs +[r5]
+ mov r8, r0
+ ; gcrRegs +[r8]
movw r1, 0xd1ff
- strh r1, [r5+0x08]
+ strh r1, [r8+0x08]
movs r1, 5
- strb r1, [r5+0x0B]
- ldrb r1, [r5+0x0A]
+ strb r1, [r8+0x0B]
+ ldrb r1, [r8+0x0A]
ldrb r0, [r9+0x0A]
; gcrRegs -[r0]
and r0, r0, 63
orrs r1, r0
- strb r1, [r5+0x0A]
- ldr r1, [r5+0x04]
+ strb r1, [r8+0x0A]
+ ldr r1, [r8+0x04]
ldr r0, [r9+0x04]
adds r2, r1, r0
- str r2, [r5+0x04]
- add r0, r5, 12
+ str r2, [r8+0x04]
+ add r0, r8, 12
; byrRegs +[r0]
mov r1, r9
; gcrRegs +[r1]
@@ -481,21 +481,21 @@ G_M12557_IG18: ; bbWeight=1, gcrefRegs=02D0 {r4 r6 r7 r9}, byrefRegs=0000
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1 r9]
; byrRegs -[r0]
- ldrb r1, [r5+0x0A]
+ ldrb r1, [r8+0x0A]
ldr r0, [sp+0x30] // [V70 tmp53]
; gcrRegs +[r0]
ldrb r0, [r0+0x0A]
; gcrRegs -[r0]
and r0, r0, 63
orrs r1, r0
- strb r1, [r5+0x0A]
+ strb r1, [r8+0x0A]
ldr r1, [sp+0x30] // [V70 tmp53]
; gcrRegs +[r1]
ldr r1, [r1+0x04]
; gcrRegs -[r1]
adds r2, r2, r1
- str r2, [r5+0x04]
- add r0, r5, 16
+ str r2, [r8+0x04]
+ add r0, r8, 16
; byrRegs +[r0]
ldr r1, [sp+0x30] // [V70 tmp53]
; gcrRegs +[r1]
@@ -508,24 +508,24 @@ G_M12557_IG18: ; bbWeight=1, gcrefRegs=02D0 {r4 r6 r7 r9}, byrefRegs=0000
; gcrRegs +[r1]
cmp r1, 0
beq SHORT G_M12557_IG20
- ;; size=174 bbWeight=1 PerfScore 66.00
-G_M12557_IG19: ; bbWeight=0.50, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref
+ ;; size=192 bbWeight=1 PerfScore 66.00
+G_M12557_IG19: ; bbWeight=0.50, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0000 {}, byref
; gcrRegs -[r1]
- ldrb r1, [r5+0x0A]
+ ldrb r1, [r8+0x0A]
ldr r0, [sp+0x34] // [V71 tmp54]
; gcrRegs +[r0]
ldrb r0, [r0+0x0A]
; gcrRegs -[r0]
and r0, r0, 63
orrs r1, r0
- strb r1, [r5+0x0A]
+ strb r1, [r8+0x0A]
ldr r1, [sp+0x34] // [V71 tmp54]
; gcrRegs +[r1]
ldr r1, [r1+0x04]
; gcrRegs -[r1]
adds r1, r2, r1
- str r1, [r5+0x04]
- add r0, r5, 20
+ str r1, [r8+0x04]
+ add r0, r8, 20
; byrRegs +[r0]
ldr r1, [sp+0x34] // [V71 tmp54]
; gcrRegs +[r1]
@@ -534,31 +534,31 @@ G_M12557_IG19: ; bbWeight=0.50, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0]
- ;; size=38 bbWeight=0.50 PerfScore 7.50
-G_M12557_IG20: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+ ;; size=44 bbWeight=0.50 PerfScore 7.50
+G_M12557_IG20: ; bbWeight=1, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0000 {}, byref, isz
ldr r1, [sp+0x28] // [V72 tmp55]
; gcrRegs +[r1]
cmp r1, 0
beq SHORT G_M12557_IG22
;; size=6 bbWeight=1 PerfScore 3.00
-G_M12557_IG21: ; bbWeight=0.50, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref
+G_M12557_IG21: ; bbWeight=0.50, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0000 {}, byref
; gcrRegs -[r1]
- ldrb r1, [r5+0x0A]
+ ldrb r1, [r8+0x0A]
ldr r0, [sp+0x28] // [V72 tmp55]
; gcrRegs +[r0]
ldrb r0, [r0+0x0A]
; gcrRegs -[r0]
and r0, r0, 63
orrs r1, r0
- strb r1, [r5+0x0A]
- ldr r1, [r5+0x04]
+ strb r1, [r8+0x0A]
+ ldr r1, [r8+0x04]
ldr r0, [sp+0x28] // [V72 tmp55]
; gcrRegs +[r0]
ldr r0, [r0+0x04]
; gcrRegs -[r0]
adds r1, r1, r0
- str r1, [r5+0x04]
- add r0, r5, 24
+ str r1, [r8+0x04]
+ add r0, r8, 24
; byrRegs +[r0]
ldr r1, [sp+0x28] // [V72 tmp55]
; gcrRegs +[r1]
@@ -567,24 +567,24 @@ G_M12557_IG21: ; bbWeight=0.50, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0]
- ;; size=40 bbWeight=0.50 PerfScore 8.00
-G_M12557_IG22: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
- ldrb r1, [r5+0x0A]
+ ;; size=48 bbWeight=0.50 PerfScore 8.00
+G_M12557_IG22: ; bbWeight=1, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0000 {}, byref, isz
+ ldrb r1, [r8+0x0A]
ldr r0, [sp+0x2C] // [V73 tmp56]
; gcrRegs +[r0]
ldrb r0, [r0+0x0A]
; gcrRegs -[r0]
and r0, r0, 63
orrs r1, r0
- strb r1, [r5+0x0A]
- ldr r1, [r5+0x04]
+ strb r1, [r8+0x0A]
+ ldr r1, [r8+0x04]
ldr r0, [sp+0x2C] // [V73 tmp56]
; gcrRegs +[r0]
ldr r0, [r0+0x04]
; gcrRegs -[r0]
adds r1, r1, r0
- str r1, [r5+0x04]
- add r0, r5, 28
+ str r1, [r8+0x04]
+ add r0, r8, 28
; byrRegs +[r0]
ldr r1, [sp+0x2C] // [V73 tmp56]
; gcrRegs +[r1]
@@ -593,10 +593,10 @@ G_M12557_IG22: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0]
- b SHORT G_M12557_IG32
- ;; size=42 bbWeight=1 PerfScore 17.00
+ b SHORT G_M12557_IG33
+ ;; size=50 bbWeight=1 PerfScore 17.00
G_M12557_IG23: ; bbWeight=0, gcrefRegs=02D0 {r4 r6 r7 r9}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r5] +[r4 r9]
+ ; gcrRegs -[r8] +[r4 r9]
add r0, r8, r3
add lr, r0, 1
b SHORT G_M12557_IG11
@@ -636,18 +636,22 @@ G_M12557_IG26: ; bbWeight=0.50, gcrefRegs=03F0 {r4 r5 r6 r7 r8 r9}, byref
...
+18 (+3.56%) : 78112.dasm - System.ComponentModel.AttributeCollection:FromExisting(System.ComponentModel.AttributeCollection,System.Attribute[]):System.ComponentModel.AttributeCollection (FullOpts)
@@ -8,40 +8,41 @@
; 2 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T05] ( 11, 32 ) ref -> r4 class-hnd single-def <System.ComponentModel.AttributeCollection>
-; V01 arg1 [V01,T14] ( 8, 13.50) ref -> r5 class-hnd <System.Attribute[]>
-; V02 loc0 [V02,T06] ( 10, 30 ) ref -> r7 class-hnd exact single-def <System.Attribute[]>
-; V03 loc1 [V03,T17] ( 6, 7 ) int -> registers
-; V04 loc2 [V04,T22] ( 4, 2.50) ref -> r4 class-hnd <System.Attribute[]>
-; V05 loc3 [V05,T11] ( 5, 17 ) int -> r9
-;* V06 loc4 [V06,T16] ( 0, 0 ) ubyte -> zero-ref
-; V07 loc5 [V07,T03] ( 7, 88 ) int -> [sp+0x14]
+; V00 arg0 [V00,T05] ( 10, 28 ) ref -> r4 class-hnd single-def <System.ComponentModel.AttributeCollection>
+; V01 arg1 [V01,T13] ( 6, 8.50) ref -> r5 class-hnd <System.Attribute[]>
+; V02 loc0 [V02,T06] ( 10, 28 ) ref -> r8 class-hnd exact single-def <System.Attribute[]>
+; V03 loc1 [V03,T16] ( 6, 7 ) int -> [sp+0x1C]
+; V04 loc2 [V04,T23] ( 4, 2.50) ref -> r4 class-hnd <System.Attribute[]>
+; V05 loc3 [V05,T11] ( 5, 17 ) int -> r10
+;* V06 loc4 [V06,T19] ( 0, 0 ) ubyte -> zero-ref
+; V07 loc5 [V07,T03] ( 7, 86 ) int -> [sp+0x18]
; V08 OutArgs [V08 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V09 tmp1 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Object>
-; V10 tmp2 [V10,T13] ( 2, 16 ) ref -> r1 class-hnd "Strict ordering of exceptions for Array store" <System.Attribute>
-; V11 tmp3 [V11,T12] ( 4, 16 ) int -> r8 "impSpillLclRefs"
+; V10 tmp2 [V10,T14] ( 2, 8 ) ref -> r1 class-hnd "Strict ordering of exceptions for Array store" <System.Attribute>
+; V11 tmp3 [V11,T12] ( 4, 16 ) int -> r9 "impSpillLclRefs"
; V12 tmp4 [V12,T15] ( 2, 8 ) ref -> r1 class-hnd "Strict ordering of exceptions for Array store" <System.Attribute>
; V13 tmp5 [V13,T18] ( 3, 6 ) ref -> r5 class-hnd exact single-def "NewObj constructor temp" <System.ComponentModel.AttributeCollection>
;* V14 tmp6 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Attribute[]>
;* V15 tmp7 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Attribute>
-; V16 tmp8 [V16,T20] ( 2, 4 ) int -> r1 "argument with side effect"
-; V17 tmp9 [V17,T19] ( 2, 4 ) ref -> r9 single-def "argument with side effect"
-; V18 tmp10 [V18,T21] ( 2, 4 ) int -> r2 "argument with side effect"
+; V16 tmp8 [V16,T21] ( 2, 4 ) int -> r1 "argument with side effect"
+; V17 tmp9 [V17,T20] ( 2, 4 ) ref -> r10 single-def "argument with side effect"
+; V18 tmp10 [V18,T22] ( 2, 4 ) int -> r2 "argument with side effect"
; V19 tmp11 [V19,T00] ( 3, 96 ) ref -> r0 "argument with side effect"
; V20 tmp12 [V20,T01] ( 3, 96 ) ref -> r0 "argument with side effect"
-; V21 tmp13 [V21,T02] ( 3, 96 ) ref -> [sp+0x08] spill-single-def "argument with side effect"
+; V21 tmp13 [V21,T02] ( 3, 96 ) ref -> [sp+0x0C] spill-single-def "argument with side effect"
; V22 tmp14 [V22,T04] ( 2, 64 ) ref -> r1 "argument with side effect"
-; V23 cse0 [V23,T09] ( 8, 29 ) int -> [sp+0x10] multi-def "CSE - aggressive"
-; V24 cse1 [V24,T07] ( 5, 30 ) byref -> r10 "CSE - aggressive"
-; V25 cse2 [V25,T08] ( 5, 30 ) int -> r6 "CSE - aggressive"
-; V26 cse3 [V26,T10] ( 6, 24 ) int -> [sp+0x0C] hoist multi-def "CSE - aggressive"
+; V23 cse0 [V23,T09] ( 7, 25 ) int -> r6 "CSE - aggressive"
+; V24 cse1 [V24,T07] ( 5, 28 ) byref -> [sp+0x08] spill-single-def "CSE - aggressive"
+; V25 cse2 [V25,T08] ( 5, 28 ) int -> [sp+0x14] spill-single-def "CSE - aggressive"
+; V26 cse3 [V26,T10] ( 6, 24 ) int -> [sp+0x10] hoist multi-def "CSE - aggressive"
+; V27 cse4 [V27,T17] ( 4, 7 ) int -> r7 "CSE - moderate"
;
-; Lcl frame size = 28
+; Lcl frame size = 36
G_M10252_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 28
- add r11, sp, 56
+ sub sp, 36
+ add r11, sp, 64
mov r4, r0
; gcrRegs +[r4]
mov r5, r1
@@ -68,37 +69,37 @@ G_M10252_IG04: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
blx r3 // <unknown method>
; gcr arg pop 0
ldr r1, [r0+0x04]
- ldr r0, [r5+0x04]
- ; gcrRegs -[r0]
- adds r1, r1, r0
+ ldr r7, [r5+0x04]
+ adds r1, r1, r7
movw r0, 0xd1ff
+ ; gcrRegs -[r0]
movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_NEWARR_1_OBJ
; gcrRegs +[r0]
; gcr arg pop 0
- mov r7, r0
- ; gcrRegs +[r7]
+ mov r8, r0
+ ; gcrRegs +[r8]
mov r0, r4
ldr r3, [r6+0x10]
blx r3 // <unknown method>
; gcr arg pop 0
- ldr r8, [r0+0x04]
+ ldr r9, [r0+0x04]
mov r0, r4
ldr r3, [r6+0x10]
blx r3 // <unknown method>
; gcr arg pop 0
- mov r9, r0
- ; gcrRegs +[r9]
+ mov r10, r0
+ ; gcrRegs +[r10]
mov r0, r4
ldr r3, [r6+0x10]
blx r3 // <unknown method>
; gcr arg pop 0
ldr r2, [r0+0x04]
- mov r0, r9
+ mov r0, r10
str r2, [sp]
- mov r2, r7
+ mov r2, r8
; gcrRegs +[r2]
movs r1, 0
movs r3, 0
@@ -106,46 +107,46 @@ G_M10252_IG04: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
movt lr, 0xd1ff
ldr lr, [lr]
blx lr // <unknown method>
- ; gcrRegs -[r0 r2 r9]
+ ; gcrRegs -[r0 r2 r10]
; gcr arg pop 0
- mov r9, 0
- ldr r0, [r5+0x04]
- cmp r0, 0
+ mov r10, 0
+ cmp r7, 0
ble SHORT G_M10252_IG12
- ;; size=96 bbWeight=1 PerfScore 39.00
-G_M10252_IG05: ; bbWeight=4, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz
- add r10, r5, 8
- ; byrRegs +[r10]
- lsl r6, r9, 2
- ldr r0, [r10+r6]
+ ;; size=94 bbWeight=1 PerfScore 38.00
+G_M10252_IG05: ; bbWeight=4, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, byref, isz
+ add r3, r5, 8
+ ; byrRegs +[r3]
+ str r3, [sp+0x08]
+ ; GC ptr vars +{V24}
+ lsl r2, r10, 2
+ str r2, [sp+0x14]
+ ldr r0, [r3+r2]
; gcrRegs +[r0]
cmp r0, 0
beq G_M10252_IG19
- movs r3, 0
- str r3, [sp+0x14] // [V07 loc5]
+ movs r1, 0
+ str r1, [sp+0x18] // [V07 loc5]
mov r0, r4
- ldr r2, [r4]
- ldr r2, [r2+0x2C]
- str r2, [sp+0x10] // [V23 cse0]
- ldr r1, [r2+0x10]
- blx r1 // <unknown method>
+ ldr lr, [r6+0x10]
+ blx lr // <unknown method>
+ ; byrRegs -[r3]
; gcr arg pop 0
ldr r0, [r0+0x04]
; gcrRegs -[r0]
cmp r0, 0
ble SHORT G_M10252_IG10
- ;; size=40 bbWeight=4 PerfScore 64.00
-G_M10252_IG06: ; bbWeight=2, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0400 {r10}, byref
- ldr r3, [r7+0x04]
- ;; size=2 bbWeight=2 PerfScore 2.00
-G_M10252_IG07: ; bbWeight=16, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0400 {r10}, byref, isz
- ldr r2, [sp+0x14] // [V07 loc5]
- str r3, [sp+0x0C] // [V26 cse3]
+ ;; size=38 bbWeight=4 PerfScore 60.00
+G_M10252_IG06: ; bbWeight=2, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, byref
+ ldr r3, [r8+0x04]
+ ;; size=4 bbWeight=2 PerfScore 2.00
+G_M10252_IG07: ; bbWeight=16, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, byref, isz
+ ldr r2, [sp+0x18] // [V07 loc5]
+ str r3, [sp+0x10] // [V26 cse3]
cmp r2, r3
- bhs SHORT G_M10252_IG17
- add r0, r7, 8
+ bhs G_M10252_IG17
+ add r0, r8, 8
; byrRegs +[r0]
- str r2, [sp+0x14] // [V07 loc5]
+ str r2, [sp+0x18] // [V07 loc5]
lsls r1, r2, 2
ldr r0, [r0+r1]
; gcrRegs +[r0]
@@ -155,17 +156,21 @@ G_M10252_IG07: ; bbWeight=16, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0400 {
ldr r1, [r1+0x10]
blx r1 // <unknown method>
; gcr arg pop 0
- str r0, [sp+0x08] // [V21 tmp13]
+ str r0, [sp+0x0C] // [V21 tmp13]
; GC ptr vars +{V21}
- ldr r0, [r10+r6]
- ldr r2, [r0]
- ldr r2, [r2+0x2C]
- ldr r2, [r2+0x10]
- blx r2 // <unknown method>
+ ldr r2, [sp+0x08] // [V24 cse1]
+ ; byrRegs +[r2]
+ ldr r1, [sp+0x14] // [V25 cse2]
+ ldr r0, [r2+r1]
+ ldr lr, [r0]
+ ldr lr, [lr+0x2C]
+ ldr lr, [lr+0x10]
+ blx lr // <unknown method>
+ ; byrRegs -[r2]
; gcr arg pop 0
mov r1, r0
; gcrRegs +[r1]
- ldr r0, [sp+0x08] // [V21 tmp13]
+ ldr r0, [sp+0x0C] // [V21 tmp13]
ldr r3, [r0]
ldr r3, [r3+0x2C]
ldr r3, [r3+0x08]
@@ -175,77 +180,84 @@ G_M10252_IG07: ; bbWeight=16, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0400 {
; gcr arg pop 0
cmp r0, 0
bne SHORT G_M10252_IG09
- ldr r3, [sp+0x14] // [V07 loc5]
+ ldr r3, [sp+0x18] // [V07 loc5]
adds r3, r3, 1
- str r3, [sp+0x14] // [V07 loc5]
+ str r3, [sp+0x18] // [V07 loc5]
mov r0, r4
; gcrRegs +[r0]
- ldr r2, [sp+0x10] // [V23 cse0]
- ldr r1, [r2+0x10]
- blx r1 // <unknown method>
+ ldr r2, [r6+0x10]
+ blx r2 // <unknown method>
; gcr arg pop 0
ldr r1, [r0+0x04]
- ldr r0, [sp+0x14] // [V07 loc5]
+ ldr r0, [sp+0x18] // [V07 loc5]
; gcrRegs -[r0]
cmp r1, r0
- str r0, [sp+0x14] // [V07 loc5]
- ldr r3, [sp+0x0C] // [V26 cse3]
+ str r0, [sp+0x18] // [V07 loc5]
+ ldr r3, [sp+0x10] // [V26 cse3]
bgt SHORT G_M10252_IG07
- ;; size=82 bbWeight=16 PerfScore 624.00
-G_M10252_IG08: ; bbWeight=2, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0400 {r10}, byref, isz
+ ;; size=90 bbWeight=16 PerfScore 640.00
+G_M10252_IG08: ; bbWeight=2, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, byref, isz
b SHORT G_M10252_IG10
;; size=2 bbWeight=2 PerfScore 2.00
-G_M10252_IG09: ; bbWeight=4, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0400 {r10}, byref, isz
- ldr r1, [r10+r6]
+G_M10252_IG09: ; bbWeight=2, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, byref, isz
...
+8 (+5.13%) : 35998.dasm - Stashbox.Registration.SelectionRules.NameRule:IsValidForCurrentRequest(Stashbox.Resolution.TypeInformation,Stashbox.Registration.ServiceRegistrations.ServiceRegistration,Stashbox.Resolution.ResolutionContext,byref):ubyte:this (FullOpts)
@@ -22,11 +22,11 @@
; V11 cse0 [V11,T07] ( 3, 1.50) ref -> r0 "CSE - moderate"
; V12 cse1 [V12,T04] ( 5, 2.50) ref -> r0 multi-def "CSE - aggressive"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M65523_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r1,r2,r3}
- push {r3,r4,r5,r6,r7,r11,lr}
+ push {r4,r5,r6,r7,r8,r11,lr}
add r11, sp, 20
ldr r5, [sp+0x3C] // [V02 arg2]
; gcrRegs +[r5]
@@ -72,30 +72,30 @@ G_M65523_IG05: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0040 {r6},
; gcrRegs +[r0]
cmp r0, 0
beq SHORT G_M65523_IG10
- ldr r5, [sp+0x40] // [V03 arg3]
- ldr r0, [r5+0x40]
+ ldr r8, [sp+0x40] // [V03 arg3]
+ ; gcrRegs +[r8]
+ ldr r0, [r8+0x40]
movw r4, 0xd1ff
movt r4, 0xd1ff
ldr r3, [r4]
blx r3 // <unknown method>
- ; gcrRegs -[r5]
- ldrb r0, [r0+0x29]
- ; gcrRegs -[r0]
- cmp r0, 0
+ ; gcrRegs -[r5 r8]
+ ldrb r3, [r0+0x29]
+ cmp r3, 0
bne SHORT G_M65523_IG07
b SHORT G_M65523_IG10
- ;; size=32 bbWeight=0.50 PerfScore 6.50
+ ;; size=36 bbWeight=0.50 PerfScore 6.50
G_M65523_IG06: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0040 {r6}, byref, isz
- ; gcrRegs +[r5 r7]
- ldr r4, [sp+0x40] // [V03 arg3]
- ; gcrRegs +[r4]
- ldr r0, [r4+0x40]
+ ; gcrRegs -[r0] +[r5 r7]
+ ldr r8, [sp+0x40] // [V03 arg3]
+ ; gcrRegs +[r8]
+ ldr r0, [r8+0x40]
; gcrRegs +[r0]
movw r4, 0xd1ff
- ; gcrRegs -[r4]
movt r4, 0xd1ff
ldr r3, [r4]
blx r3 // <unknown method>
+ ; gcrRegs -[r8]
ldrb r0, [r0+0x28]
; gcrRegs -[r0]
cmp r0, 0
@@ -113,7 +113,7 @@ G_M65523_IG06: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0040 {r
; gcrRegs -[r0-r1 r5 r7]
cmp r0, 0
beq SHORT G_M65523_IG10
- ;; size=44 bbWeight=0.50 PerfScore 9.50
+ ;; size=48 bbWeight=0.50 PerfScore 9.50
G_M65523_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {r6}, byref
movs r0, 0
strb r0, [r6]
@@ -123,7 +123,7 @@ G_M65523_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
movs r0, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M65523_IG09: ; bbWeight=0.50, epilog, nogc, extend
- pop {r3,r4,r5,r6,r7,r11,lr}
+ pop {r4,r5,r6,r7,r8,r11,lr}
add sp, 12
bx lr
;; size=8 bbWeight=0.50 PerfScore 1.50
@@ -134,12 +134,12 @@ G_M65523_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, by
;; size=4 bbWeight=0.50 PerfScore 1.00
G_M65523_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[r6]
- pop {r3,r4,r5,r6,r7,r11,lr}
+ pop {r4,r5,r6,r7,r8,r11,lr}
add sp, 12
bx lr
;; size=8 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 156, prolog size 10, PerfScore 38.00, instruction count 68, allocated bytes for code 156 (MethodHash=19ec000c) for method Stashbox.Registration.SelectionRules.NameRule:IsValidForCurrentRequest(Stashbox.Resolution.TypeInformation,Stashbox.Registration.ServiceRegistrations.ServiceRegistration,Stashbox.Resolution.ResolutionContext,byref):ubyte:this (FullOpts)
+; Total bytes of code 164, prolog size 10, PerfScore 38.00, instruction count 68, allocated bytes for code 164 (MethodHash=19ec000c) for method Stashbox.Registration.SelectionRules.NameRule:IsValidForCurrentRequest(Stashbox.Resolution.TypeInformation,Stashbox.Registration.ServiceRegistrations.ServiceRegistration,Stashbox.Resolution.ResolutionContext,byref):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -151,7 +151,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 78 (0x0004e) Actual length = 156 (0x00009c)
+ Function Length : 82 (0x00052) Actual length = 164 (0x0000a4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -162,11 +162,11 @@ Unwind Info:
Condition : 14 (0xe) (always)
Epilog Start Index : 5 (0x05)
---- Unwind codes ----
- A8 F8 pop {r3,r4,r5,r6,r7,r11,lr} ; opsize 32
+ A9 F0 pop {r4,r5,r6,r7,r8,r11,lr} ; opsize 32
EC 0E pop {r1,r2,r3} ; opsize 16
FF end
---- Epilog start at index 5 ----
- A8 F8 pop {r3,r4,r5,r6,r7,r11,lr} ; opsize 32
+ A9 F0 pop {r4,r5,r6,r7,r8,r11,lr} ; opsize 32
03 add sp, sp, #12 ; opsize 16
FD end + nop ; opsize 16
FF end
realworld.run.linux.arm.checked.mch
-24 (-32.43%) : 7045.dasm - System.Byte:Equals(System.Object):ubyte:this (FullOpts)
@@ -8,78 +8,61 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 2.50) byref -> r0 this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> r4 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> r1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> r1 class-hnd "spilling QMark2" <System.Byte>
-; V04 tmp2 [V04,T03] ( 2, 2 ) int -> r5 "impAppendStmt"
-; V05 cse0 [V05,T05] ( 3, 1 ) int -> r1 "CSE - moderate"
-; V06 cse1 [V06,T04] ( 4, 1.25) int -> r3 "CSE - moderate"
+; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> r3 class-hnd "spilling QMark2" <System.Byte>
+; V04 tmp2 [V04,T03] ( 2, 2 ) int -> r0 "impAppendStmt"
;
; Lcl frame size = 0
G_M19224_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr}
- add r11, sp, 8
- mov r4, r1
- ; gcrRegs +[r4]
- ;; size=10 bbWeight=1 PerfScore 3.00
-G_M19224_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz
- ; byrRegs +[r0]
- mov r1, r4
+ push {r11,lr}
+ mov r11, sp
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M19224_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz
; gcrRegs +[r1]
- cmp r1, 0
+ ; byrRegs +[r0]
+ mov r3, r1
+ ; gcrRegs +[r3]
+ cmp r3, 0
beq SHORT G_M19224_IG04
;; size=6 bbWeight=1 PerfScore 3.00
-G_M19224_IG03: ; bbWeight=0.25, gcrefRegs=0012 {r1 r4}, byrefRegs=0001 {r0}, byref, isz
- ldr r1, [r1]
- ; gcrRegs -[r1]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- cmp r1, r3
+G_M19224_IG03: ; bbWeight=0.25, gcrefRegs=000A {r1 r3}, byrefRegs=0001 {r0}, byref, isz
+ ldr r3, [r3]
+ ; gcrRegs -[r3]
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ cmp r3, r2
beq SHORT G_M19224_IG06
;; size=14 bbWeight=0.25 PerfScore 1.25
G_M19224_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4]
+ ; gcrRegs -[r1]
; byrRegs -[r0]
movs r0, 0
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M19224_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,pc}
+ pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M19224_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, gcvars, byref, isz
- ; gcrRegs +[r4]
- ; byrRegs +[r0]
- ldrb r5, [r0]
- cmp r1, r3
- beq SHORT G_M19224_IG08
- ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M19224_IG07: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- ; byrRegs -[r0]
- mov r1, r4
+G_M19224_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, gcvars, byref, isz
; gcrRegs +[r1]
- mov r0, r3
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // CORINFO_HELP_UNBOX
- ; gcrRegs -[r1]
- ;; size=16 bbWeight=0.25 PerfScore 1.50
-G_M19224_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldrb r0, [r4+0x04]
- cmp r5, r0
- beq SHORT G_M19224_IG09
+ ; byrRegs +[r0]
+ ldrb r0, [r0]
+ ; byrRegs -[r0]
+ ldrb r3, [r1+0x04]
+ cmp r0, r3
+ beq SHORT G_M19224_IG07
movs r0, 0
- b SHORT G_M19224_IG10
- ;; size=10 bbWeight=0.50 PerfScore 2.50
-G_M19224_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4]
+ b SHORT G_M19224_IG08
+ ;; size=12 bbWeight=0.50 PerfScore 3.00
+G_M19224_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r1]
movs r0, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M19224_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- pop {r4,r5,r11,pc}
+G_M19224_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 74, prolog size 8, PerfScore 14.75, instruction count 29, allocated bytes for code 74 (MethodHash=3af2b4e7) for method System.Byte:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 50, prolog size 6, PerfScore 11.25, instruction count 20, allocated bytes for code 50 (MethodHash=3af2b4e7) for method System.Byte:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -91,7 +74,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 74 (0x00004a)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -103,7 +86,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end
FF end
-24 (-32.43%) : 8710.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
@@ -8,78 +8,61 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 2.50) byref -> r0 this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> r4 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> r1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> r1 class-hnd "spilling QMark2" <System.Int32>
-; V04 tmp2 [V04,T03] ( 2, 2 ) int -> r5 "impAppendStmt"
-; V05 cse0 [V05,T05] ( 3, 1 ) int -> r1 "CSE - moderate"
-; V06 cse1 [V06,T04] ( 4, 1.25) int -> r3 "CSE - moderate"
+; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> r3 class-hnd "spilling QMark2" <System.Int32>
+; V04 tmp2 [V04,T03] ( 2, 2 ) int -> r0 "impAppendStmt"
;
; Lcl frame size = 0
G_M40448_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr}
- add r11, sp, 8
- mov r4, r1
- ; gcrRegs +[r4]
- ;; size=10 bbWeight=1 PerfScore 3.00
-G_M40448_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz
- ; byrRegs +[r0]
- mov r1, r4
+ push {r11,lr}
+ mov r11, sp
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M40448_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz
; gcrRegs +[r1]
- cmp r1, 0
+ ; byrRegs +[r0]
+ mov r3, r1
+ ; gcrRegs +[r3]
+ cmp r3, 0
beq SHORT G_M40448_IG04
;; size=6 bbWeight=1 PerfScore 3.00
-G_M40448_IG03: ; bbWeight=0.25, gcrefRegs=0012 {r1 r4}, byrefRegs=0001 {r0}, byref, isz
- ldr r1, [r1]
- ; gcrRegs -[r1]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- cmp r1, r3
+G_M40448_IG03: ; bbWeight=0.25, gcrefRegs=000A {r1 r3}, byrefRegs=0001 {r0}, byref, isz
+ ldr r3, [r3]
+ ; gcrRegs -[r3]
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ cmp r3, r2
beq SHORT G_M40448_IG06
;; size=14 bbWeight=0.25 PerfScore 1.25
G_M40448_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4]
+ ; gcrRegs -[r1]
; byrRegs -[r0]
movs r0, 0
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M40448_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,pc}
+ pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M40448_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, gcvars, byref, isz
- ; gcrRegs +[r4]
- ; byrRegs +[r0]
- ldr r5, [r0]
- cmp r1, r3
- beq SHORT G_M40448_IG08
- ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M40448_IG07: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- ; byrRegs -[r0]
- mov r1, r4
+G_M40448_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, gcvars, byref, isz
; gcrRegs +[r1]
- mov r0, r3
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // CORINFO_HELP_UNBOX
- ; gcrRegs -[r1]
- ;; size=16 bbWeight=0.25 PerfScore 1.50
-G_M40448_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r4+0x04]
- cmp r5, r0
- beq SHORT G_M40448_IG09
+ ; byrRegs +[r0]
+ ldr r0, [r0]
+ ; byrRegs -[r0]
+ ldr r3, [r1+0x04]
+ cmp r0, r3
+ beq SHORT G_M40448_IG07
movs r0, 0
- b SHORT G_M40448_IG10
- ;; size=10 bbWeight=0.50 PerfScore 2.50
-G_M40448_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4]
+ b SHORT G_M40448_IG08
+ ;; size=12 bbWeight=0.50 PerfScore 3.00
+G_M40448_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r1]
movs r0, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M40448_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- pop {r4,r5,r11,pc}
+G_M40448_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 74, prolog size 8, PerfScore 14.75, instruction count 29, allocated bytes for code 74 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 50, prolog size 6, PerfScore 11.25, instruction count 20, allocated bytes for code 50 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -91,7 +74,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 74 (0x00004a)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -103,7 +86,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end
FF end
-24 (-32.43%) : 7363.dasm - System.Boolean:Equals(System.Object):ubyte:this (FullOpts)
@@ -8,78 +8,61 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 2.50) byref -> r0 this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> r4 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> r1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> r1 class-hnd "spilling QMark2" <System.Boolean>
-; V04 tmp2 [V04,T03] ( 2, 2 ) int -> r5 "impAppendStmt"
-; V05 cse0 [V05,T05] ( 3, 1 ) int -> r1 "CSE - moderate"
-; V06 cse1 [V06,T04] ( 4, 1.25) int -> r3 "CSE - moderate"
+; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> r3 class-hnd "spilling QMark2" <System.Boolean>
+; V04 tmp2 [V04,T03] ( 2, 2 ) int -> r0 "impAppendStmt"
;
; Lcl frame size = 0
G_M31030_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr}
- add r11, sp, 8
- mov r4, r1
- ; gcrRegs +[r4]
- ;; size=10 bbWeight=1 PerfScore 3.00
-G_M31030_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz
- ; byrRegs +[r0]
- mov r1, r4
+ push {r11,lr}
+ mov r11, sp
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M31030_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz
; gcrRegs +[r1]
- cmp r1, 0
+ ; byrRegs +[r0]
+ mov r3, r1
+ ; gcrRegs +[r3]
+ cmp r3, 0
beq SHORT G_M31030_IG04
;; size=6 bbWeight=1 PerfScore 3.00
-G_M31030_IG03: ; bbWeight=0.25, gcrefRegs=0012 {r1 r4}, byrefRegs=0001 {r0}, byref, isz
- ldr r1, [r1]
- ; gcrRegs -[r1]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- cmp r1, r3
+G_M31030_IG03: ; bbWeight=0.25, gcrefRegs=000A {r1 r3}, byrefRegs=0001 {r0}, byref, isz
+ ldr r3, [r3]
+ ; gcrRegs -[r3]
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ cmp r3, r2
beq SHORT G_M31030_IG06
;; size=14 bbWeight=0.25 PerfScore 1.25
G_M31030_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4]
+ ; gcrRegs -[r1]
; byrRegs -[r0]
movs r0, 0
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M31030_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,pc}
+ pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M31030_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, gcvars, byref, isz
- ; gcrRegs +[r4]
- ; byrRegs +[r0]
- ldrb r5, [r0]
- cmp r1, r3
- beq SHORT G_M31030_IG08
- ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M31030_IG07: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- ; byrRegs -[r0]
- mov r1, r4
+G_M31030_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, gcvars, byref, isz
; gcrRegs +[r1]
- mov r0, r3
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // CORINFO_HELP_UNBOX
- ; gcrRegs -[r1]
- ;; size=16 bbWeight=0.25 PerfScore 1.50
-G_M31030_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldrb r0, [r4+0x04]
- cmp r5, r0
- beq SHORT G_M31030_IG09
+ ; byrRegs +[r0]
+ ldrb r0, [r0]
+ ; byrRegs -[r0]
+ ldrb r3, [r1+0x04]
+ cmp r0, r3
+ beq SHORT G_M31030_IG07
movs r0, 0
- b SHORT G_M31030_IG10
- ;; size=10 bbWeight=0.50 PerfScore 2.50
-G_M31030_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4]
+ b SHORT G_M31030_IG08
+ ;; size=12 bbWeight=0.50 PerfScore 3.00
+G_M31030_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r1]
movs r0, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M31030_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- pop {r4,r5,r11,pc}
+G_M31030_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 74, prolog size 8, PerfScore 14.75, instruction count 29, allocated bytes for code 74 (MethodHash=c96e86c9) for method System.Boolean:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 50, prolog size 6, PerfScore 11.25, instruction count 20, allocated bytes for code 50 (MethodHash=c96e86c9) for method System.Boolean:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -91,7 +74,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 74 (0x00004a)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -103,7 +86,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end
FF end
+18 (+2.06%) : 28765.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:g_visitMemberInitializer|1690(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator,ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
@@ -9,26 +9,26 @@
; Final local variable assignments
;
; V00 this [V00,T01] ( 11, 7 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.NullableWalker>
-; V01 arg1 [V01,T07] ( 4, 3 ) int -> r7 single-def
+; V01 arg1 [V01,T06] ( 4, 3 ) int -> r7 single-def
; V02 arg2 [V02,T05] ( 4, 3.50) ref -> r6 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
; V03 arg3 [V03,T02] ( 7, 5.50) ref -> r5 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator>
; V04 arg4 [V04,T18] ( 4, 2.50) ubyte -> r8 single-def
;* V05 loc0 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <Microsoft.CodeAnalysis.CSharp.BoundObjectInitializerMember>
-; V06 loc1 [V06,T06] ( 8, 5 ) ref -> [sp+0x68] class-hnd spill-single-def <Microsoft.CodeAnalysis.CSharp.Symbol>
+; V06 loc1 [V06,T07] ( 7, 4.12) ref -> [sp+0x74] class-hnd spill-single-def <Microsoft.CodeAnalysis.CSharp.Symbol>
;* V07 loc2 [V07 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult]>
-; V08 loc3 [V08,T19] ( 3, 2.50) ref -> [sp+0x64] class-hnd <Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate>
-; V09 loc4 [V09,T12] ( 4, 3 ) ref -> registers class-hnd <System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbol]>
+; V08 loc3 [V08,T19] ( 3, 2.50) ref -> [sp+0x70] class-hnd <Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate>
+; V09 loc4 [V09,T11] ( 4, 3 ) ref -> registers class-hnd <System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbol]>
;* V10 loc5 [V10 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
;* V11 loc6 [V11 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol]>
-; V12 loc7 [V12,T30] ( 3, 1.50) ref -> r0 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundObjectInitializerExpressionBase>
+; V12 loc7 [V12,T29] ( 3, 1.50) ref -> r0 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundObjectInitializerExpressionBase>
; V13 OutArgs [V13 ] ( 1, 1 ) struct (56) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V14 tmp1 [V14,T10] ( 3, 4 ) ref -> r1 single-def "CASTCLASS eval op1"
; V15 tmp2 [V15,T43] ( 3, 1 ) int -> r3 "fgMakeTemp is creating a new local variable"
; V16 tmp3 [V16,T00] ( 13, 16.50) ref -> r9 class-hnd single-def "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundObjectInitializerMember>
;* V17 tmp4 [V17 ] ( 0, 0 ) struct ( 4) zero-ref "impAppendStmt" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
;* V18 tmp5 [V18 ] ( 0, 0 ) struct ( 4) zero-ref "bubbling QMark2" <System.Collections.Immutable.ImmutableArray`1[ubyte]>
-; V19 tmp6 [V19,T26] ( 3, 2 ) int -> r1 "fgMakeTemp is creating a new local variable"
-; V20 tmp7 [V20,T11] ( 3, 2.50) ref -> r0 class-hnd "spilling QMark2" <<unknown class>>
+; V19 tmp6 [V19,T42] ( 3, 1.25) int -> r0 "fgMakeTemp is creating a new local variable"
+; V20 tmp7 [V20,T16] ( 3, 2.50) ref -> r0 class-hnd "spilling QMark2" <<unknown class>>
;* V21 tmp8 [V21 ] ( 0, 0 ) ref -> zero-ref single-def
;* V22 tmp9 [V22 ] ( 0, 0 ) ref -> zero-ref single-def
;* V23 tmp10 [V23 ] ( 0, 0 ) struct ( 4) zero-ref <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
@@ -41,93 +41,96 @@
;* V30 tmp17 [V30 ] ( 0, 0 ) struct ( 4) zero-ref single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol]>
;* V31 tmp18 [V31 ] ( 0, 0 ) struct ( 4) zero-ref "impAppendStmt" <System.Collections.Immutable.ImmutableArray`1[int]>
;* V32 tmp19 [V32 ] ( 0, 0 ) struct (16) zero-ref double-align "impAppendStmt" <Microsoft.CodeAnalysis.BitVector>
-; V33 tmp20 [V33 ] ( 3, 3 ) struct (16) [sp+0xA8] do-not-enreg[HS] must-init hidden-struct-arg "dup spill" <System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]>
-;* V34 tmp21 [V34,T57] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V33 tmp20 [V33 ] ( 3, 3 ) struct (16) [sp+0xB8] do-not-enreg[HS] must-init hidden-struct-arg "dup spill" <System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]>
+;* V34 tmp21 [V34,T58] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V35 tmp22 [V35 ] ( 0, 0 ) struct ( 4) zero-ref "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
-; V36 tmp23 [V36 ] ( 3, 3 ) struct ( 8) [sp+0xA0] do-not-enreg[HS] must-init hidden-struct-arg "dup spill" <System.ValueTuple`2[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion]]>
+; V36 tmp23 [V36 ] ( 3, 3 ) struct ( 8) [sp+0xB0] do-not-enreg[HS] must-init hidden-struct-arg "dup spill" <System.ValueTuple`2[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion]]>
;* V37 tmp24 [V37 ] ( 0, 0 ) struct ( 4) zero-ref "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
;* V38 tmp25 [V38 ] ( 0, 0 ) struct ( 4) zero-ref "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion]>
-; V39 tmp26 [V39,T16] ( 3, 3 ) ubyte -> [sp+0x9C] spill-single-def "Inlining Arg"
+; V39 tmp26 [V39,T15] ( 3, 3 ) ubyte -> [sp+0xAC] spill-single-def "Inlining Arg"
;* V40 tmp27 [V40 ] ( 0, 0 ) struct ( 4) zero-ref single-def "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[int]>
;* V41 tmp28 [V41 ] ( 0, 0 ) struct ( 4) zero-ref single-def "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult]>
; V42 tmp29 [V42,T08] ( 4, 4 ) ref -> r9 class-hnd exact single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.NullableWalker+SnapshotManager+Builder>
;* V43 tmp30 [V43 ] ( 0, 0 ) ref -> zero-ref single-def
; V44 tmp31 [V44,T09] ( 4, 4 ) ref -> r0 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
-; V45 tmp32 [V45,T27] ( 2, 2 ) ref -> [sp+0x60] class-hnd spill-single-def "impAppendStmt" <System.Collections.Generic.SortedDictionary`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]>
+; V45 tmp32 [V45,T26] ( 2, 2 ) ref -> [sp+0x6C] class-hnd spill-single-def "impAppendStmt" <System.Collections.Generic.SortedDictionary`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]>
;* V46 tmp33 [V46 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] ld-addr-op double-align "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState>
-; V47 tmp34 [V47,T28] ( 2, 2 ) int -> [sp+0x98] spill-single-def "impAppendStmt"
+; V47 tmp34 [V47,T27] ( 2, 2 ) int -> [sp+0xA8] spill-single-def "impAppendStmt"
;* V48 tmp35 [V48 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot>
;* V49 tmp36 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <<unknown class>>
;* V50 tmp37 [V50 ] ( 0, 0 ) int -> zero-ref single-def
;* V51 tmp38 [V51 ] ( 0, 0 ) ref -> zero-ref single-def
;* V52 tmp39 [V52 ] ( 0, 0 ) int -> zero-ref single-def
-; V53 tmp40 [V53,T31] ( 3, 1.50) ref -> r6
+; V53 tmp40 [V53,T30] ( 3, 1.50) ref -> r6
; V54 tmp41 [V54,T03] ( 7, 7 ) ref -> r2 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalStateSnapshot>
;* V55 tmp42 [V55 ] ( 0, 0 ) struct (16) zero-ref double-align "spilled call-like call argument" <Microsoft.CodeAnalysis.BitVector>
;* V56 tmp43 [V56 ] ( 0, 0 ) struct (16) zero-ref double-align "Inline return value spill temp" <Microsoft.CodeAnalysis.BitVector>
-; V57 tmp44 [V57,T32] ( 3, 1.50) ref -> registers class-hnd "Inline stloc first use temp" <ulong[]>
+; V57 tmp44 [V57,T31] ( 3, 1.50) ref -> registers class-hnd "Inline stloc first use temp" <ulong[]>
;* V58 tmp45 [V58 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op double-align "NewObj constructor temp" <Microsoft.CodeAnalysis.BitVector>
;* V59 tmp46 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <ulong[]>
;* V60 tmp47 [V60 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V61 tmp48 [V61 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V62 tmp49 [V62 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V63 tmp50 [V63,T29] ( 2, 2 ) int -> r3 "Inlining Arg"
-; V64 tmp51 [V64,T20] ( 3, 2.50) ref -> [sp+0x5C] "field V07.array (fldOffset=0x0)" P-INDEP
+; V63 tmp50 [V63,T28] ( 2, 2 ) int -> r3 "Inlining Arg"
+; V64 tmp51 [V64,T20] ( 3, 2.50) ref -> [sp+0x68] "field V07.array (fldOffset=0x0)" P-INDEP
;* V65 tmp52 [V65 ] ( 0, 0 ) ref -> zero-ref "field V10.array (fldOffset=0x0)" P-INDEP
;* V66 tmp53 [V66 ] ( 0, 0 ) ref -> zero-ref single-def "field V11.array (fldOffset=0x0)" P-INDEP
-; V67 tmp54 [V67,T22] ( 4, 2 ) ref -> [sp+0x58] spill-single-def "field V17.array (fldOffset=0x0)" P-INDEP
-; V68 tmp55 [V68,T23] ( 4, 2 ) ref -> [sp+0x54] spill-single-def "field V18.array (fldOffset=0x0)" P-INDEP
+; V67 tmp54 [V67,T22] ( 4, 2 ) ref -> [sp+0x64] spill-single-def "field V17.array (fldOffset=0x0)" P-INDEP
+; V68 tmp55 [V68,T23] ( 4, 2 ) ref -> [sp+0x60] spill-single-def "field V18.array (fldOffset=0x0)" P-INDEP
;* V69 tmp56 [V69 ] ( 0, 0 ) ref -> zero-ref single-def "field V23.array (fldOffset=0x0)" P-INDEP
;* V70 tmp57 [V70 ] ( 0, 0 ) ref -> zero-ref single-def "field V24.array (fldOffset=0x0)" P-INDEP
;* V71 tmp58 [V71 ] ( 0, 0 ) ref -> zero-ref "field V28.array (fldOffset=0x0)" P-INDEP
;* V72 tmp59 [V72 ] ( 0, 0 ) ref -> zero-ref "field V29.array (fldOffset=0x0)" P-INDEP
-; V73 tmp60 [V73,T24] ( 4, 2 ) ref -> [sp+0x50] single-def "field V30.array (fldOffset=0x0)" P-INDEP
-; V74 tmp61 [V74,T33] ( 3, 1.50) ref -> [sp+0x4C] spill-single-def "field V31.array (fldOffset=0x0)" P-INDEP
-; V75 tmp62 [V75,T17] ( 5, 2.50) long -> [sp+0x90] do-not-enreg[F] single-def "field V32._bits0 (fldOffset=0x0)" P-INDEP
-; V76 tmp63 [V76,T34] ( 3, 1.50) ref -> [sp+0x48] spill-single-def "field V32._bits (fldOffset=0x8)" P-INDEP
-; V77 tmp64 [V77,T37] ( 3, 1.50) int -> [sp+0x8C] spill-single-def "field V32._capacity (fldOffset=0xc)" P-INDEP
-; V78 tmp65 [V78,T55] ( 1, 1 ) ref -> [sp+0xA8] do-not-enreg[H] hidden-struct-arg "field V33.Item1 (fldOffset=0x0)" P-DEP
-; V79 tmp66 [V79,T39] ( 2, 1.50) ref -> [sp+0xAC] do-not-enreg[H] hidden-struct-arg "field V33.Item4 (fldOffset=0x4)" P-DEP
-; V80 tmp67 [V80,T56] ( 1, 1 ) ubyte -> [sp+0xB0] do-not-enreg[H] hidden-struct-arg "field V33.Item3 (fldOffset=0x8)" P-DEP
-; V81 tmp68 [V81,T40] ( 2, 1.50) ref -> [sp+0xB4] do-not-enreg[H] hidden-struct-arg "field V33.Item2 (fldOffset=0xc)" P-DEP
+; V73 tmp60 [V73,T24] ( 4, 2 ) ref -> [sp+0x5C] single-def "field V30.array (fldOffset=0x0)" P-INDEP
+; V74 tmp61 [V74,T32] ( 3, 1.50) ref -> [sp+0x58] spill-single-def "field V31.array (fldOffset=0x0)" P-INDEP
+; V75 tmp62 [V75,T17] ( 5, 2.50) long -> [sp+0xA0] do-not-enreg[F] single-def "field V32._bits0 (fldOffset=0x0)" P-INDEP
+; V76 tmp63 [V76,T33] ( 3, 1.50) ref -> [sp+0x54] spill-single-def "field V32._bits (fldOffset=0x8)" P-INDEP
+; V77 tmp64 [V77,T36] ( 3, 1.50) int -> [sp+0x9C] spill-single-def "field V32._capacity (fldOffset=0xc)" P-INDEP
+; V78 tmp65 [V78,T56] ( 1, 1 ) ref -> [sp+0xB8] do-not-enreg[H] hidden-struct-arg "field V33.Item1 (fldOffset=0x0)" P-DEP
+; V79 tmp66 [V79,T38] ( 2, 1.50) ref -> [sp+0xBC] do-not-enreg[H] hidden-struct-arg "field V33.Item4 (fldOffset=0x4)" P-DEP
+; V80 tmp67 [V80,T57] ( 1, 1 ) ubyte -> [sp+0xC0] do-not-enreg[H] hidden-struct-arg "field V33.Item3 (fldOffset=0x8)" P-DEP
+; V81 tmp68 [V81,T39] ( 2, 1.50) ref -> [sp+0xC4] do-not-enreg[H] hidden-struct-arg "field V33.Item2 (fldOffset=0xc)" P-DEP
; V82 tmp69 [V82,T21] ( 3, 2.50) ref -> r0 single-def "field V35.array (fldOffset=0x0)" P-INDEP
-; V83 tmp70 [V83,T41] ( 2, 1.50) ref -> [sp+0xA0] do-not-enreg[H] hidden-struct-arg "field V36.Item1 (fldOffset=0x0)" P-DEP
-; V84 tmp71 [V84,T42] ( 2, 1.50) ref -> [sp+0xA4] do-not-enreg[H] hidden-struct-arg "field V36.Item2 (fldOffset=0x4)" P-DEP
-; V85 tmp72 [V85,T35] ( 3, 1.50) ref -> [sp+0x44] spill-single-def "field V37.array (fldOffset=0x0)" P-INDEP
-; V86 tmp73 [V86,T44] ( 2, 1 ) ref -> [sp+0x40] spill-single-def "field V38.array (fldOffset=0x0)" P-INDEP
-; V87 tmp74 [V87,T45] ( 2, 1 ) ref -> r3 "field V40.array (fldOffset=0x0)" P-INDEP
-; V88 tmp75 [V88,T46] ( 2, 1 ) ref -> r0 "field V41.array (fldOffset=0x0)" P-INDEP
-; V89 tmp76 [V89,T47] ( 2, 1 ) ref -> r2 single-def "field V48.VariableState (fldOffset=0x0)" P-INDEP
-; V90 tmp77 [V90,T49] ( 2, 1 ) int -> r3 single-def "field V48.SharedStateIndex (fldOffset=0x4)" P-INDEP
+; V83 tmp70 [V83,T40] ( 2, 1.50) ref -> [sp+0xB0] do-not-enreg[H] hidden-struct-arg "field V36.Item1 (fldOffset=0x0)" P-DEP
+; V84 tmp71 [V84,T41] ( 2, 1.50) ref -> [sp+0xB4] do-not-enreg[H] hidden-struct-arg "field V36.Item2 (fldOffset=0x4)" P-DEP
+; V85 tmp72 [V85,T34] ( 3, 1.50) ref -> [sp+0x50] spill-single-def "field V37.array (fldOffset=0x0)" P-INDEP
+; V86 tmp73 [V86,T45] ( 2, 1 ) ref -> [sp+0x4C] spill-single-def "field V38.array (fldOffset=0x0)" P-INDEP
+; V87 tmp74 [V87,T46] ( 2, 1 ) ref -> r3 "field V40.array (fldOffset=0x0)" P-INDEP
+; V88 tmp75 [V88,T47] ( 2, 1 ) ref -> r0 "field V41.array (fldOffset=0x0)" P-INDEP
+; V89 tmp76 [V89,T48] ( 2, 1 ) ref -> r2 single-def "field V48.VariableState (fldOffset=0x0)" P-INDEP
+; V90 tmp77 [V90,T50] ( 2, 1 ) int -> r3 single-def "field V48.SharedStateIndex (fldOffset=0x4)" P-INDEP
;* V91 tmp78 [V91 ] ( 0, 0 ) long -> zero-ref single-def "field V55._bits0 (fldOffset=0x0)" P-INDEP
;* V92 tmp79 [V92 ] ( 0, 0 ) ref -> zero-ref single-def "field V55._bits (fldOffset=0x8)" P-INDEP
;* V93 tmp80 [V93 ] ( 0, 0 ) int -> zero-ref single-def "field V55._capacity (fldOffset=0xc)" P-INDEP
;* V94 tmp81 [V94 ] ( 0, 0 ) long -> zero-ref single-def "field V56._bits0 (fldOffset=0x0)" P-INDEP
;* V95 tmp82 [V95 ] ( 0, 0 ) ref -> zero-ref single-def "field V56._bits (fldOffset=0x8)" P-INDEP
;* V96 tmp83 [V96 ] ( 0, 0 ) int -> zero-ref single-def "field V56._capacity (fldOffset=0xc)" P-INDEP
-; V97 tmp84 [V97,T38] ( 3, 1.50) long -> [sp+0x80] do-not-enreg[F] single-def "field V58._bits0 (fldOffset=0x0)" P-INDEP
-; V98 tmp85 [V98,T48] ( 2, 1 ) ref -> [sp+0x3C] spill-single-def "field V58._bits (fldOffset=0x8)" P-INDEP
-; V99 tmp86 [V99,T50] ( 2, 1 ) int -> [sp+0x7C] spill-single-def "field V58._capacity (fldOffset=0xc)" P-INDEP
-; V100 tmp87 [V100,T36] ( 3, 1.50) ref -> r6 single-def "V46.[000..004)"
-; V101 tmp88 [V101,T51] ( 2, 1 ) int -> [sp+0x78] spill-single-def "V46.[004..008)"
+; V97 tmp84 [V97,T37] ( 3, 1.50) long -> [sp+0x90] do-not-enreg[F] single-def "field V58._bits0 (fldOffset=0x0)" P-INDEP
+; V98 tmp85 [V98,T49] ( 2, 1 ) ref -> [sp+0x48] spill-single-def "field V58._bits (fldOffset=0x8)" P-INDEP
+; V99 tmp86 [V99,T51] ( 2, 1 ) int -> [sp+0x8C] spill-single-def "field V58._capacity (fldOffset=0xc)" P-INDEP
+; V100 tmp87 [V100,T35] ( 3, 1.50) ref -> r6 single-def "V46.[000..004)"
+; V101 tmp88 [V101,T52] ( 2, 1 ) int -> [sp+0x88] spill-single-def "V46.[004..008)"
;* V102 tmp89 [V102 ] ( 0, 0 ) long -> zero-ref single-def "V46.[008..016)"
-; V103 tmp90 [V103,T25] ( 4, 2 ) ref -> [sp+0x38] spill-single-def "V46.[016..020)"
-; V104 tmp91 [V104,T52] ( 2, 1 ) int -> [sp+0x74] spill-single-def "V46.[020..024)"
+; V103 tmp90 [V103,T25] ( 4, 2 ) ref -> [sp+0x44] spill-single-def "V46.[016..020)"
+; V104 tmp91 [V104,T53] ( 2, 1 ) int -> [sp+0x84] spill-single-def "V46.[020..024)"
; V105 tmp92 [V105,T04] ( 6, 6 ) byref -> r3 single-def "Spilling address for field-by-field copy"
-;* V106 rat0 [V106 ] ( 0, 0 ) int -> zero-ref "field V61.lo (fldOffset=0x0)" P-INDEP
-;* V107 rat1 [V107 ] ( 0, 0 ) int -> zero-ref "field V61.hi (fldOffset=0x4)" P-INDEP
-; V108 rat2 [V108,T53] ( 2, 1 ) int -> [sp+0x70] spill-single-def "field V102.lo (fldOffset=0x0)" P-INDEP
-; V109 rat3 [V109,T54] ( 2, 1 ) int -> [sp+0x6C] spill-single-def "field V102.hi (fldOffset=0x4)" P-INDEP
-; V110 rat4 [V110,T13] ( 3, 3 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
-; V111 rat5 [V111,T14] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable"
-; V112 rat6 [V112,T15] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable"
+; V106 cse0 [V106,T44] ( 3, 1 ) int -> [sp+0x80] spill-single-def "CSE - conservative"
+;* V107 rat0 [V107 ] ( 0, 0 ) int -> zero-ref "field V61.lo (fldOffset=0x0)" P-INDEP
+;* V108 rat1 [V108 ] ( 0, 0 ) int -> zero-ref "field V61.hi (fldOffset=0x4)" P-INDEP
+; V109 rat2 [V109,T54] ( 2, 1 ) int -> [sp+0x7C] spill-single-def "field V102.lo (fldOffset=0x0)" P-INDEP
+; V110 rat3 [V110,T55] ( 2, 1 ) int -> [sp+0x78] spill-single-def "field V102.hi (fldOffset=0x4)" P-INDEP
+; V111 rat4 [V111,T12] ( 3, 3 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V112 rat5 [V112,T13] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable"
+; V113 rat6 [V113,T14] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable"
+; TEMP_02 int -> [r11-0xA8]
+; TEMP_01 int -> [r11-0xAC]
;
-; Lcl frame size = 188
+; Lcl frame size = 204
G_M62268_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 188
- add r11, sp, 216
+ sub sp, 204
+ add r11, sp, 232
sub r6, r11, 56
movs r4, 0
movs r5, 0
@@ -141,7 +144,7 @@ G_M62268_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[r6]
mov r5, r3
; gcrRegs +[r5]
- ldr r8, [sp+0xE0] // [V04 arg4]
+ ldr r8, [sp+0xF0] // [V04 arg4]
;; size=36 bbWeight=1 PerfScore 14.00
G_M62268_IG02: ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
ldr r1, [r5+0x10]
@@ -171,7 +174,7 @@ G_M62268_IG04: ; bbWeight=1, gcrefRegs=0270 {r4 r5 r6 r9}, byrefRegs=0000
; gcrRegs -[r1]
mov r3, r0
; gcrRegs +[r3]
- str r3, [sp+0x68]
+ str r3, [sp+0x74]
; GC ptr vars +{V06}
movs r2, 0
mov lr, 0
@@ -179,48 +182,52 @@ G_M62268_IG04: ; bbWeight=1, gcrefRegs=0270 {r4 r5 r6 r9}, byrefRegs=0000
cmp r0, 0
beq G_M62268_IG12
;; size=36 bbWeight=1 PerfScore 13.00
-G_M62268_IG05: ; bbWeight=0.50, gcVars=0000000000000040 {V06}, gcrefRegs=427D {r0 r2 r3 r4 r5 r6 r9 lr}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M62268_IG05: ; bbWeight=0.50, gcVars=0000000000000080 {V06}, gcrefRegs=427D {r0 r2 r3 r4 r5 r6 r9 lr}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r2 lr]
ldr r0, [r0+0x04]
; gcrRegs -[r0]
cmp r0, 0
beq G_M62268_IG12
ldr r2, [r9+0x1C]
- str r2, [sp+0x58] // [V67 tmp54]
+ str r2, [sp+0x64] // [V67 tmp54]
; GC ptr vars +{V67}
ldr lr, [r9+0x24]
- str lr, [sp+0x54] // [V68 tmp55]
+ str lr, [sp+0x60] // [V68 tmp55]
; GC ptr vars +{V68}
mov r0, r3
; gcrRegs +[r0]
cmp r0, 0
beq SHORT G_M62268_IG08
;; size=28 bbWeight=0.50 PerfScore 5.00
-G_M62268_IG06: ; bbWeight=0.25, gcVars=0000000000C00040 {V06 V67 V68}, gcrefRegs=0279 {r0 r3 r4 r5 r6 r9}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M62268_IG06: ; bbWeight=0.25, gcVars=0000000000C00080 {V06 V67 V68}, gcrefRegs=0279 {r0 r3 r4 r5 r6 r9}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r2 lr]
- ldr r0, [r0]
+ ldr r12, [r0]
+ str r12, [sp+0x80] // [V106 cse0]
+ movw r0, 0xd1ff
; gcrRegs -[r0]
- movw r1, 0xd1ff
- movt r1, 0xd1ff
- cmp r0, r1
+ movt r0, 0xd1ff
+ cmp r12, r0
beq SHORT G_M62268_IG09
- ;; size=14 bbWeight=0.25 PerfScore 1.25
-G_M62268_IG07: ; bbWeight=0.50, gcrefRegs=0278 {r3 r4 r5 r6 r9}, byrefRegs=0000 {}, byref, isz
- mov r0, r1
+ ;; size=20 bbWeight=0.25 PerfScore 1.50
+G_M62268_IG07: ; bbWeight=0.12, gcrefRegs=0278 {r3 r4 r5 r6 r9}, byrefRegs=0000 {}, byref, isz
+ str r0, [sp+0x40] // [TEMP_02]
mov r1, r3
; gcrRegs +[r1]
- movw r12, 0xd1ff
- movt r12, 0xd1ff
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ str r0, [sp+0x3C] // [TEMP_01]
+ ldr r0, [sp+0x40] // [TEMP_02]
+ ldr r12, [sp+0x3C] // [TEMP_01]
blx r12 // CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[r1 r3] +[r0]
...
+20 (+2.45%) : 2743.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (FullOpts)
@@ -8,32 +8,32 @@
; 0 inlinees with PGO data; 12 single block inlinees; 6 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T06] ( 7, 8.50) ref -> r4 class-hnd single-def <System.String>
-; V01 arg1 [V01,T09] ( 6, 4 ) byref -> r7 single-def
-; V02 arg2 [V02,T07] ( 8, 5 ) byref -> r5 single-def
-; V03 arg3 [V03,T08] ( 7, 4.50) byref -> r6 single-def
-; V04 loc0 [V04,T00] ( 27, 36.50) int -> r8
-; V05 loc1 [V05,T10] ( 6, 3 ) int -> [sp+0x14]
+; V00 arg0 [V00,T07] ( 6, 8 ) ref -> r4 class-hnd single-def <System.String>
+; V01 arg1 [V01,T10] ( 6, 4 ) byref -> r7 single-def
+; V02 arg2 [V02,T08] ( 8, 5 ) byref -> r5 single-def
+; V03 arg3 [V03,T09] ( 7, 4.50) byref -> r6 single-def
+; V04 loc0 [V04,T00] ( 21, 33 ) int -> r8
+; V05 loc1 [V05,T11] ( 6, 3 ) int -> [sp+0x14]
;* V06 loc2 [V06 ] ( 0, 0 ) ubyte -> zero-ref
-; V07 loc3 [V07,T11] ( 4, 3.50) ubyte -> r1
+; V07 loc3 [V07,T12] ( 4, 3.50) ubyte -> r1
;* V08 loc4 [V08 ] ( 0, 0 ) ubyte -> zero-ref
-; V09 loc5 [V09,T20] ( 4, 2 ) ubyte -> r1
+; V09 loc5 [V09,T21] ( 4, 2 ) ubyte -> r1
; V10 loc6 [V10,T04] ( 18, 13.50) ushort -> registers
-; V11 loc7 [V11,T05] ( 6, 7.50) ubyte -> r3
+; V11 loc7 [V11,T06] ( 6, 7.50) ubyte -> lr
;* V12 loc8 [V12 ] ( 0, 0 ) ubyte -> zero-ref
-; V13 loc9 [V13,T03] ( 4, 14 ) ubyte -> r3
+; V13 loc9 [V13,T03] ( 4, 14 ) ubyte -> lr
;# V14 OutArgs [V14 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V15 tmp1 [V15,T22] ( 3, 2 ) int -> r1
+; V15 tmp1 [V15,T23] ( 3, 2 ) int -> r1
;* V16 tmp2 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V17 tmp3 [V17 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V18 tmp4 [V18 ] ( 0, 0 ) byref -> zero-ref
;* V19 tmp5 [V19 ] ( 0, 0 ) byref -> zero-ref single-def
-; V20 tmp6 [V20,T33] ( 3, 1.50) int -> r3
+; V20 tmp6 [V20,T33] ( 3, 1.50) int -> lr
;* V21 tmp7 [V21 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V22 tmp8 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V23 tmp9 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V24 tmp10 [V24,T18] ( 3, 3 ) int -> [sp+0x10] spill-single-def "Inlining Arg"
-; V25 tmp11 [V25,T23] ( 2, 2 ) byref -> [sp+0x08] spill-single-def "Inlining Arg"
+; V24 tmp10 [V24,T19] ( 3, 3 ) int -> [sp+0x10] spill-single-def "Inlining Arg"
+; V25 tmp11 [V25,T24] ( 2, 2 ) byref -> [sp+0x04] spill-single-def "Inlining Arg"
;* V26 tmp12 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V27 tmp13 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V28 tmp14 [V28 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
@@ -48,18 +48,18 @@
;* V37 tmp23 [V37 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V38 tmp24 [V38 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V39 tmp25 [V39 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V40 tmp26 [V40,T24] ( 2, 2 ) byref -> r4 single-def "Inlining Arg"
+; V40 tmp26 [V40,T25] ( 2, 2 ) byref -> r4 single-def "Inlining Arg"
;* V41 tmp27 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V42 tmp28 [V42 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V43 tmp29 [V43,T19] ( 3, 3 ) int -> r8 "Single return block return value"
+; V43 tmp29 [V43,T20] ( 3, 3 ) int -> r8 "Single return block return value"
;* V44 tmp30 [V44 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP
;* V45 tmp31 [V45 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x4)" P-INDEP
;* V46 tmp32 [V46 ] ( 0, 0 ) byref -> zero-ref "field V17._reference (fldOffset=0x0)" P-INDEP
;* V47 tmp33 [V47 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x4)" P-INDEP
; V48 tmp34 [V48,T35] ( 2, 1 ) byref -> r0 single-def "field V21._reference (fldOffset=0x0)" P-INDEP
-; V49 tmp35 [V49,T39] ( 2, 1 ) int -> r2 "field V21._length (fldOffset=0x4)" P-INDEP
+; V49 tmp35 [V49,T39] ( 2, 1 ) int -> lr "field V21._length (fldOffset=0x4)" P-INDEP
; V50 tmp36 [V50,T36] ( 2, 1 ) byref -> r0 single-def "field V22._reference (fldOffset=0x0)" P-INDEP
-; V51 tmp37 [V51,T40] ( 2, 1 ) int -> r2 "field V22._length (fldOffset=0x4)" P-INDEP
+; V51 tmp37 [V51,T40] ( 2, 1 ) int -> lr "field V22._length (fldOffset=0x4)" P-INDEP
;* V52 tmp38 [V52 ] ( 0, 0 ) byref -> zero-ref "field V23._reference (fldOffset=0x0)" P-INDEP
;* V53 tmp39 [V53 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x4)" P-INDEP
;* V54 tmp40 [V54 ] ( 0, 0 ) byref -> zero-ref single-def "field V29._reference (fldOffset=0x0)" P-INDEP
@@ -74,25 +74,25 @@
;* V63 tmp49 [V63,T43] ( 0, 0 ) int -> zero-ref "field V38._length (fldOffset=0x4)" P-INDEP
;* V64 tmp50 [V64 ] ( 0, 0 ) byref -> zero-ref "field V39._reference (fldOffset=0x0)" P-INDEP
;* V65 tmp51 [V65 ] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0x4)" P-INDEP
-; V66 cse0 [V66,T21] ( 4, 2 ) int -> r3 "CSE - moderate"
-; V67 cse1 [V67,T31] ( 3, 1.50) byref -> r4 "CSE - moderate"
+; V66 cse0 [V66,T22] ( 4, 2 ) int -> lr "CSE - moderate"
+; V67 cse1 [V67,T32] ( 3, 1.50) byref -> r4 "CSE - moderate"
; V68 cse2 [V68,T34] ( 3, 1.50) int -> [sp+0x0C] spill-single-def "CSE - moderate"
-; V69 cse3 [V69,T01] ( 10, 17 ) int -> r9 hoist "CSE - aggressive"
-; V70 cse4 [V70,T02] ( 13, 15 ) byref -> r10 multi-def "CSE - aggressive"
-; V71 cse5 [V71,T32] ( 3, 1.50) ref -> r1 "CSE - moderate"
-; V72 rat0 [V72,T12] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable"
-; V73 rat1 [V73,T13] ( 3, 3 ) byref -> r5 "ReplaceWithLclVar is creating a new local variable"
-; V74 rat2 [V74,T25] ( 2, 2 ) int -> r0 "ReplaceWithLclVar is creating a new local variable"
-; V75 rat3 [V75,T26] ( 2, 2 ) int -> r1 "ReplaceWithLclVar is creating a new local variable"
-; V76 rat4 [V76,T14] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable"
-; V77 rat5 [V77,T15] ( 3, 3 ) byref -> r3 "ReplaceWithLclVar is creating a new local variable"
-; V78 rat6 [V78,T27] ( 2, 2 ) int -> r0 "ReplaceWithLclVar is creating a new local variable"
-; V79 rat7 [V79,T28] ( 2, 2 ) int -> r1 "ReplaceWithLclVar is creating a new local variable"
-; V80 rat8 [V80,T16] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable"
-; V81 rat9 [V81,T17] ( 3, 3 ) byref -> r3 "ReplaceWithLclVar is creating a new local variable"
-; V82 rat10 [V82,T29] ( 2, 2 ) int -> r0 "ReplaceWithLclVar is creating a new local variable"
-; V83 rat11 [V83,T30] ( 2, 2 ) int -> r1 "ReplaceWithLclVar is creating a new local variable"
-; TEMP_01 ref -> [r11-0x34]
+; V69 cse3 [V69,T01] ( 9, 16 ) int -> r9 hoist "CSE - aggressive"
+; V70 cse4 [V70,T02] ( 12, 14.50) byref -> r10 multi-def "CSE - aggressive"
+; V71 cse5 [V71,T05] ( 11, 12.50) int -> [sp+0x08] multi-def "CSE - aggressive"
+; V72 rat0 [V72,T13] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable"
+; V73 rat1 [V73,T14] ( 3, 3 ) byref -> r5 "ReplaceWithLclVar is creating a new local variable"
+; V74 rat2 [V74,T26] ( 2, 2 ) int -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V75 rat3 [V75,T27] ( 2, 2 ) int -> r1 "ReplaceWithLclVar is creating a new local variable"
+; V76 rat4 [V76,T15] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable"
+; V77 rat5 [V77,T16] ( 3, 3 ) byref -> r3 "ReplaceWithLclVar is creating a new local variable"
+; V78 rat6 [V78,T28] ( 2, 2 ) int -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V79 rat7 [V79,T29] ( 2, 2 ) int -> r1 "ReplaceWithLclVar is creating a new local variable"
+; V80 rat8 [V80,T17] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable"
+; V81 rat9 [V81,T18] ( 3, 3 ) byref -> r3 "ReplaceWithLclVar is creating a new local variable"
+; V82 rat10 [V82,T30] ( 2, 2 ) int -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V83 rat11 [V83,T31] ( 2, 2 ) int -> r1 "ReplaceWithLclVar is creating a new local variable"
+; TEMP_01 ref -> [r11-0x38]
;
; Lcl frame size = 28
@@ -101,7 +101,7 @@ G_M49978_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
sub sp, 28
add r11, sp, 56
movs r4, 0
- str r4, [sp+0x04] // [TEMP_01]
+ str r4, [sp] // [TEMP_01]
mov r4, r0
; gcrRegs +[r4]
mov r7, r1
@@ -121,96 +121,90 @@ G_M49978_IG03: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r
;; size=4 bbWeight=2 PerfScore 2.00
G_M49978_IG04: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
cmp r9, r8
- bls SHORT G_M49978_IG06
+ bls SHORT G_M49978_IG09
;; size=4 bbWeight=8 PerfScore 16.00
G_M49978_IG05: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
add r10, r4, 8
; byrRegs +[r10]
- lsl r0, r8, 1
- ldrh r0, [r10+r0]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // System.UriHelper:IsLWS(ushort):ubyte
- ; byrRegs -[r10]
+ lsl r3, r8, 1
+ str r3, [sp+0x08]
+ ldrh r0, [r10+r3]
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ ldr r2, [r2]
+ blx r2 // System.UriHelper:IsLWS(ushort):ubyte
; gcr arg pop 0
cmp r0, 0
bne SHORT G_M49978_IG03
- ;; size=28 bbWeight=4 PerfScore 36.00
-G_M49978_IG06: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
- cmp r9, r8
- bls SHORT G_M49978_IG10
- ;; size=4 bbWeight=1 PerfScore 2.00
-G_M49978_IG07: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
- add r10, r4, 8
- ; byrRegs +[r10]
- lsl r1, r8, 1
- ldrh r1, [r10+r1]
- cmp r1, 47
- beq SHORT G_M49978_IG08
+ ;; size=30 bbWeight=4 PerfScore 40.00
+G_M49978_IG06: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=04E0 {r5 r6 r7 r10}, byref, isz
+ ldr r2, [sp+0x08] // [V71 cse5]
+ ldrh r2, [r10+r2]
+ cmp r2, 47
+ beq SHORT G_M49978_IG07
movs r1, 0
- b SHORT G_M49978_IG09
- ;; size=20 bbWeight=0.50 PerfScore 3.50
-G_M49978_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref
+ b SHORT G_M49978_IG08
+ ;; size=14 bbWeight=0.50 PerfScore 3.00
+G_M49978_IG07: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref
; byrRegs -[r10]
movs r1, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M49978_IG09: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
- b SHORT G_M49978_IG11
+G_M49978_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
+ b SHORT G_M49978_IG10
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M49978_IG10: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref
+G_M49978_IG09: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref
movs r1, 0
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M49978_IG11: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
+G_M49978_IG10: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
uxtb r1, r1
cmp r1, 0
- beq SHORT G_M49978_IG19
+ beq SHORT G_M49978_IG18
;; size=6 bbWeight=1 PerfScore 3.00
-G_M49978_IG12: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
+G_M49978_IG11: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
add r1, r8, 1
cmp r9, r1
- bls SHORT G_M49978_IG13
+ bls SHORT G_M49978_IG12
movs r1, 0
- b SHORT G_M49978_IG14
+ b SHORT G_M49978_IG13
;; size=12 bbWeight=0.50 PerfScore 2.50
-G_M49978_IG13: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref
+G_M49978_IG12: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref
movs r1, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M49978_IG14: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
+G_M49978_IG13: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
cmp r1, 0
- bne SHORT G_M49978_IG19
+ bne SHORT G_M49978_IG18
add r10, r4, 8
; byrRegs +[r10]
- lsl r1, r8, 1
- adds r1, r1, 2
- ldrh r2, [r10+r1]
- cmp r2, 47
- beq SHORT G_M49978_IG15
- cmp r2, 92
- bne SHORT G_M49978_IG16
+ lsl r2, r8, 1
+ adds r1, r2, 2
+ ldrh r3, [r10+r1]
+ cmp r3, 47
+ beq SHORT G_M49978_IG14
+ cmp r3, 92
+ bne SHORT G_M49978_IG15
;; size=26 bbWeight=0.50 PerfScore 5.00
-G_M49978_IG15: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
+G_M49978_IG14: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
; byrRegs -[r10]
- movs r3, 1
- b SHORT G_M49978_IG17
- ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M49978_IG16: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref
- movs r3, 0
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M49978_IG17: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
- cmp r3, 0
- beq SHORT G_M49978_IG18
+ mov lr, 1
+ b SHORT G_M49978_IG16
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
+G_M49978_IG15: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref
+ mov lr, 0
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M49978_IG16: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
+ cmp lr, 0
...
+12 (+3.35%) : 18520.dasm - System.IO.Path:TryJoin(System.ReadOnlySpan1[ushort],System.ReadOnlySpan
1[ushort],System.Span`1[ushort],byref):ubyte (FullOpts)
@@ -8,44 +8,44 @@
; 0 inlinees with PGO data; 7 single block inlinees; 12 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00 ] ( 10, 6.50) struct ( 8) [sp+0x20] do-not-enreg[XSF] addr-exposed ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
+; V00 arg0 [V00 ] ( 9, 6 ) struct ( 8) [sp+0x20] do-not-enreg[XSF] addr-exposed ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
; V01 arg1 [V01 ] ( 10, 6 ) struct ( 8) [sp+0x28] do-not-enreg[XSF] addr-exposed ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 arg2 [V02,T13] ( 2, 2 ) struct ( 8) [sp+0x30] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[ushort]>
-; V03 arg3 [V03,T08] ( 3, 2 ) byref -> r4 single-def
-; V04 loc0 [V04,T20] ( 3, 1.50) ubyte -> r7
-; V05 loc1 [V05,T21] ( 3, 1.50) int -> r9
+; V02 arg2 [V02,T14] ( 2, 2 ) struct ( 8) [sp+0x30] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[ushort]>
+; V03 arg3 [V03,T09] ( 3, 2 ) byref -> r4 single-def
+; V04 loc0 [V04,T21] ( 3, 1.50) ubyte -> r7
+; V05 loc1 [V05,T22] ( 3, 1.50) int -> r9
;* V06 loc2 [V06 ] ( 0, 0 ) byref -> zero-ref single-def
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T05] ( 5, 2.50) byref -> r7
-; V09 tmp2 [V09,T22] ( 3, 1.50) int -> r0
+; V08 tmp1 [V08,T05] ( 5, 2.50) byref -> r8
+; V09 tmp2 [V09,T23] ( 3, 1.50) int -> r0
;* V10 tmp3 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V11 tmp4 [V11,T03] ( 3, 3 ) int -> r0 "Span.get_Item index"
;* V12 tmp5 [V12 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V13 tmp6 [V13 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V14 tmp7 [V14,T09] ( 2, 2 ) byref -> r1 single-def "Inlining Arg"
-; V15 tmp8 [V15,T14] ( 2, 2 ) int -> r2 "Inlining Arg"
+; V14 tmp7 [V14,T10] ( 2, 2 ) byref -> r1 single-def "Inlining Arg"
+; V15 tmp8 [V15,T15] ( 2, 2 ) int -> r2 "Inlining Arg"
;* V16 tmp9 [V16 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V17 tmp10 [V17 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V18 tmp11 [V18,T30] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V18 tmp11 [V18,T31] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V19 tmp12 [V19 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V20 tmp13 [V20,T15] ( 2, 2 ) int -> r3 "Span.get_Item index"
-; V21 tmp14 [V21,T16] ( 2, 2 ) ushort -> r7 "Inlining Arg"
-; V22 tmp15 [V22,T23] ( 3, 1.50) ubyte -> r0 "Inline return value spill temp"
+; V20 tmp13 [V20,T16] ( 2, 2 ) int -> r3 "Span.get_Item index"
+; V21 tmp14 [V21,T17] ( 2, 2 ) ushort -> r8 "Inlining Arg"
+; V22 tmp15 [V22,T24] ( 3, 1.50) ubyte -> r0 "Inline return value spill temp"
;* V23 tmp16 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V24 tmp17 [V24,T17] ( 2, 2 ) ushort -> r7 "Inlining Arg"
+; V24 tmp17 [V24,T18] ( 2, 2 ) ushort -> r7 "Inlining Arg"
;* V25 tmp18 [V25 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V26 tmp19 [V26 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V27 tmp20 [V27,T10] ( 2, 2 ) byref -> r1 single-def "Inlining Arg"
-; V28 tmp21 [V28,T18] ( 2, 2 ) int -> r2 "Inlining Arg"
+; V27 tmp20 [V27,T11] ( 2, 2 ) byref -> r1 single-def "Inlining Arg"
+; V28 tmp21 [V28,T19] ( 2, 2 ) int -> r2 "Inlining Arg"
;* V29 tmp22 [V29 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V30 tmp23 [V30,T01] ( 4, 4 ) int -> r0 "Inlining Arg"
;* V31 tmp24 [V31 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V32 tmp25 [V32,T04] ( 3, 3 ) int -> r6 "Inlining Arg"
-; V33 tmp26 [V33,T11] ( 2, 2 ) byref -> r5 single-def "Inlining Arg"
+; V33 tmp26 [V33,T12] ( 2, 2 ) byref -> r5 single-def "Inlining Arg"
;* V34 tmp27 [V34 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V35 tmp28 [V35 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V36 tmp29 [V36,T12] ( 2, 2 ) byref -> r1 single-def "Inlining Arg"
-; V37 tmp30 [V37,T19] ( 2, 2 ) int -> r2 "Inlining Arg"
+; V36 tmp29 [V36,T13] ( 2, 2 ) byref -> r1 single-def "Inlining Arg"
+; V37 tmp30 [V37,T20] ( 2, 2 ) int -> r2 "Inlining Arg"
;* V38 tmp31 [V38 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V39 tmp32 [V39 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP
;* V40 tmp33 [V40 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x4)" P-INDEP
@@ -53,10 +53,10 @@
;* V42 tmp35 [V42 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x4)" P-INDEP
;* V43 tmp36 [V43 ] ( 0, 0 ) byref -> zero-ref "field V17._reference (fldOffset=0x0)" P-INDEP
;* V44 tmp37 [V44 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x4)" P-INDEP
-; V45 tmp38 [V45,T27] ( 2, 1 ) byref -> r0 single-def "field V19._reference (fldOffset=0x0)" P-INDEP
-; V46 tmp39 [V46,T24] ( 3, 1.50) int -> r3 "field V19._length (fldOffset=0x4)" P-INDEP
-; V47 tmp40 [V47,T28] ( 2, 1 ) byref -> r0 single-def "field V23._reference (fldOffset=0x0)" P-INDEP
-; V48 tmp41 [V48,T29] ( 2, 1 ) int -> r3 "field V23._length (fldOffset=0x4)" P-INDEP
+; V45 tmp38 [V45,T28] ( 2, 1 ) byref -> r0 single-def "field V19._reference (fldOffset=0x0)" P-INDEP
+; V46 tmp39 [V46,T25] ( 3, 1.50) int -> r7 "field V19._length (fldOffset=0x4)" P-INDEP
+; V47 tmp40 [V47,T29] ( 2, 1 ) byref -> r0 single-def "field V23._reference (fldOffset=0x0)" P-INDEP
+; V48 tmp41 [V48,T30] ( 2, 1 ) int -> r3 "field V23._length (fldOffset=0x4)" P-INDEP
;* V49 tmp42 [V49 ] ( 0, 0 ) byref -> zero-ref single-def "field V25._reference (fldOffset=0x0)" P-INDEP
;* V50 tmp43 [V50 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x4)" P-INDEP
;* V51 tmp44 [V51 ] ( 0, 0 ) byref -> zero-ref single-def "field V31._reference (fldOffset=0x0)" P-INDEP
@@ -65,10 +65,11 @@
;* V54 tmp47 [V54 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x4)" P-INDEP
; V55 tmp48 [V55,T02] ( 5, 3 ) byref -> r5 single-def "V02.[000..004)"
; V56 tmp49 [V56,T00] ( 8, 4.50) int -> r6 "V02.[004..008)"
-; V57 cse0 [V57,T25] ( 3, 1.50) int -> r8 "CSE - moderate"
-; V58 cse1 [V58,T06] ( 4, 2 ) int -> r2 "CSE - moderate"
-; V59 cse2 [V59,T07] ( 4, 2 ) int -> r2 "CSE - moderate"
-; V60 cse3 [V60,T26] ( 3, 1.50) int -> r2 "CSE - moderate"
+; V57 cse0 [V57,T26] ( 3, 1.50) int -> r8 "CSE - moderate"
+; V58 cse1 [V58,T07] ( 4, 2 ) int -> r2 "CSE - moderate"
+; V59 cse2 [V59,T06] ( 3, 2.50) int -> r7 "CSE - aggressive"
+; V60 cse3 [V60,T08] ( 4, 2 ) int -> r2 "CSE - moderate"
+; V61 cse4 [V61,T27] ( 3, 1.50) int -> r2 "CSE - moderate"
;
; Lcl frame size = 0
@@ -85,8 +86,8 @@ G_M17254_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byre
ldr r6, [sp+0x34]
movs r2, 0
str r2, [r4]
- ldr r2, [sp+0x24]
- cmp r2, 0
+ ldr r7, [sp+0x24]
+ cmp r7, 0
bne SHORT G_M17254_IG04
;; size=14 bbWeight=1 PerfScore 7.00
G_M17254_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
@@ -99,22 +100,22 @@ G_M17254_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}
ldr r2, [sp+0x2C]
cmp r2, 0
bne SHORT G_M17254_IG07
- add r7, sp, 32
- ; byrRegs +[r7]
+ addw r8, sp, 32
+ ; byrRegs +[r8]
b SHORT G_M17254_IG06
- ;; size=10 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M17254_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref
- ; byrRegs -[r7]
- add r7, sp, 40
- ; byrRegs +[r7]
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M17254_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00B0 {r4 r5 r7}, byref, isz
- ldr r2, [r7+0x04]
+ ; byrRegs -[r8]
+ addw r8, sp, 40
+ ; byrRegs +[r8]
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M17254_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0130 {r4 r5 r8}, byref, isz
+ ldr r2, [r8+0x04]
cmp r6, r2
blt SHORT G_M17254_IG17
cmp r2, r6
bhi G_M17254_IG27
- ldr r1, [r7]
+ ldr r1, [r8]
; byrRegs +[r1]
lsls r2, r2, 1
mov r0, r5
@@ -124,31 +125,30 @@ G_M17254_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00B0 {r4 r5
ldr r3, [r3]
blx r3 // <unknown method>
; byrRegs -[r0-r1 r5]
- ldr r0, [r7+0x04]
+ ldr r0, [r8+0x04]
str r0, [r4]
b SHORT G_M17254_IG23
- ;; size=36 bbWeight=0.50 PerfScore 7.50
+ ;; size=42 bbWeight=0.50 PerfScore 7.50
G_M17254_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
- ; byrRegs -[r7] +[r5]
+ ; byrRegs -[r8] +[r5]
ldr r0, [sp+0x20]
; byrRegs +[r0]
- ldr r3, [sp+0x24]
- cmp r3, 0
+ cmp r7, 0
ble SHORT G_M17254_IG08
- subs r3, r3, 1
+ subs r3, r7, 1
lsls r3, r3, 1
- ldrh r7, [r0+r3]
+ ldrh r8, [r0+r3]
movs r0, 1
; byrRegs -[r0]
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
- cmp r7, 47
+ cmp r8, 47
bne SHORT G_M17254_IG08
movs r0, 0
b SHORT G_M17254_IG14
- ;; size=36 bbWeight=0.50 PerfScore 8.00
+ ;; size=38 bbWeight=0.50 PerfScore 7.50
G_M17254_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
ldr r0, [sp+0x28]
; byrRegs +[r0]
@@ -300,7 +300,7 @@ G_M17254_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bkpt
;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 358, prolog size 10, PerfScore 74.50, instruction count 151, allocated bytes for code 358 (MethodHash=7c1abc99) for method System.IO.Path:TryJoin(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (FullOpts)
+; Total bytes of code 370, prolog size 10, PerfScore 74.00, instruction count 150, allocated bytes for code 370 (MethodHash=7c1abc99) for method System.IO.Path:TryJoin(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -312,7 +312,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 179 (0x000b3) Actual length = 358 (0x000166)
+ Function Length : 185 (0x000b9) Actual length = 370 (0x000172)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Details
Improvements/regressions per collection
Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
benchmarks.run.linux.arm.checked.mch |
87 |
63 |
15 |
9 |
-516 |
+172 |
benchmarks.run_pgo.linux.arm.checked.mch |
1,218 |
522 |
404 |
292 |
-4,332 |
+3,352 |
benchmarks.run_tiered.linux.arm.checked.mch |
81 |
58 |
15 |
8 |
-514 |
+166 |
coreclr_tests.run.linux.arm.checked.mch |
809 |
499 |
152 |
158 |
-4,844 |
+1,278 |
libraries.crossgen2.linux.arm.checked.mch |
205 |
127 |
26 |
52 |
-1,132 |
+194 |
libraries.pmi.linux.arm.checked.mch |
475 |
274 |
88 |
113 |
-2,676 |
+620 |
libraries_tests.run.linux.arm.Release.mch |
4,683 |
2,535 |
1,060 |
1,088 |
-21,988 |
+8,140 |
librariestestsnotieredcompilation.run.linux.arm.Release.mch |
1,004 |
607 |
146 |
251 |
-4,246 |
+1,080 |
realworld.run.linux.arm.checked.mch |
85 |
42 |
26 |
17 |
-396 |
+290 |
|
8,647 |
4,727 |
1,932 |
1,988 |
-40,644 |
+15,292 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
benchmarks.run.linux.arm.checked.mch |
45,963 |
5,344 |
40,619 |
1,203 (2.55%) |
1,204 (2.55%) |
benchmarks.run_pgo.linux.arm.checked.mch |
159,432 |
56,729 |
102,703 |
3,201 (1.97%) |
3,282 (2.02%) |
benchmarks.run_tiered.linux.arm.checked.mch |
80,098 |
43,607 |
36,491 |
1,086 (1.34%) |
1,087 (1.34%) |
coreclr_tests.run.linux.arm.checked.mch |
471,979 |
259,195 |
212,784 |
7,170 (1.50%) |
7,184 (1.50%) |
libraries.crossgen2.linux.arm.checked.mch |
188,191 |
14 |
188,177 |
0 (0.00%) |
0 (0.00%) |
libraries.pmi.linux.arm.checked.mch |
272,358 |
6 |
272,352 |
7,786 (2.78%) |
7,788 (2.78%) |
libraries_tests.run.linux.arm.Release.mch |
709,953 |
442,672 |
267,281 |
16,195 (2.23%) |
16,473 (2.27%) |
librariestestsnotieredcompilation.run.linux.arm.Release.mch |
274,631 |
21,604 |
253,027 |
33,224 (10.79%) |
33,226 (10.79%) |
realworld.run.linux.arm.checked.mch |
36,407 |
157 |
36,250 |
1,408 (3.72%) |
1,408 (3.72%) |
|
2,239,012 |
829,328 |
1,409,684 |
71,273 (3.08%) |
71,652 (3.10%) |
jit-analyze output
benchmarks.run.linux.arm.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15290340 (overridden on cmd)
Total bytes of diff: 15289996 (overridden on cmd)
Total bytes of delta: -344 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
34 : 2143.dasm (3.23 % of base)
24 : 5214.dasm (0.41 % of base)
20 : 3107.dasm (1.40 % of base)
16 : 26523.dasm (0.62 % of base)
14 : 2771.dasm (1.62 % of base)
12 : 1197.dasm (0.28 % of base)
10 : 7370.dasm (2.84 % of base)
8 : 10658.dasm (1.12 % of base)
8 : 17983.dasm (0.10 % of base)
8 : 26053.dasm (0.61 % of base)
8 : 26062.dasm (0.17 % of base)
4 : 8157.dasm (0.83 % of base)
2 : 4673.dasm (0.43 % of base)
2 : 10673.dasm (0.06 % of base)
2 : 17949.dasm (0.12 % of base)
Top file improvements (bytes):
-34 : 12628.dasm (-0.34 % of base)
-30 : 10118.dasm (-1.08 % of base)
-28 : 24814.dasm (-1.24 % of base)
-24 : 14130.dasm (-32.43 % of base)
-22 : 23507.dasm (-5.21 % of base)
-18 : 6154.dasm (-0.49 % of base)
-18 : 33614.dasm (-13.85 % of base)
-16 : 24870.dasm (-1.70 % of base)
-16 : 28828.dasm (-8.42 % of base)
-14 : 47079.dasm (-5.00 % of base)
-12 : 11384.dasm (-0.56 % of base)
-12 : 13891.dasm (-4.23 % of base)
-12 : 15956.dasm (-6.12 % of base)
-12 : 938.dasm (-4.80 % of base)
-12 : 25443.dasm (-0.47 % of base)
-10 : 27653.dasm (-1.06 % of base)
-10 : 3501.dasm (-4.59 % of base)
-8 : 4234.dasm (-1.54 % of base)
-8 : 19792.dasm (-4.08 % of base)
-8 : 24418.dasm (-1.20 % of base)
49 total files with Code Size differences (34 improved, 15 regressed), 9 unchanged.
Top method regressions (bytes):
34 (3.23 % of base) : 2143.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
24 (0.41 % of base) : 5214.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (FullOpts)
20 (1.40 % of base) : 3107.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
16 (0.62 % of base) : 26523.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitArgumentsAndCaptureReceiverIfNeeded(byref,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (FullOpts)
14 (1.62 % of base) : 2771.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
12 (0.28 % of base) : 1197.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
10 (2.84 % of base) : 7370.dasm - System.IO.Path:TryJoin(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (FullOpts)
8 (0.61 % of base) : 26053.dasm - Microsoft.CodeAnalysis.ConstantValue:Create(System.Object,ubyte):Microsoft.CodeAnalysis.ConstantValue (FullOpts)
8 (0.17 % of base) : 26062.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
8 (0.10 % of base) : 17983.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)
8 (1.12 % of base) : 10658.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (FullOpts)
4 (0.83 % of base) : 8157.dasm - System.Text.RegularExpressions.RegexCharClass:AddCategoryFromName(System.String,ubyte,ubyte,System.String,int):this (FullOpts)
2 (0.43 % of base) : 4673.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
2 (0.06 % of base) : 10673.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (FullOpts)
2 (0.12 % of base) : 17949.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)
Top method improvements (bytes):
-34 (-0.34 % of base) : 12628.dasm - MessagePack.Internal.ObjectSerializationInfo:CreateOrNull(System.Type,ubyte,ubyte,ubyte):MessagePack.Internal.ObjectSerializationInfo (FullOpts)
-30 (-1.08 % of base) : 10118.dasm - Sigil.Impl.VerifiableTracker:CollapseAndVerify():Sigil.Impl.VerificationResult:this (FullOpts)
-28 (-1.24 % of base) : 24814.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
-24 (-32.43 % of base) : 14130.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
-22 (-5.21 % of base) : 23507.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
-18 (-13.85 % of base) : 33614.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-18 (-0.49 % of base) : 6154.dasm - Utf8Json.Internal.Emit.MetaType:.ctor(System.Type,System.Func`2[System.String,System.String],ubyte):this (FullOpts)
-16 (-8.42 % of base) : 28828.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
-16 (-1.70 % of base) : 24870.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
-14 (-5.00 % of base) : 47079.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (FullOpts)
-12 (-0.47 % of base) : 25443.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-12 (-6.12 % of base) : 15956.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (FullOpts)
-12 (-4.23 % of base) : 13891.dasm - System.Net.Sockets.SocketAsyncContext:Accept(System.Memory`1[ubyte],byref,byref):int:this (FullOpts)
-12 (-4.80 % of base) : 938.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-12 (-0.56 % of base) : 11384.dasm - System.Runtime.Serialization.Json.JsonFormatWriterGenerator+CriticalHelper:WriteMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder,System.Runtime.Serialization.DataContracts.ClassDataContract):int:this (FullOpts)
-10 (-1.06 % of base) : 27653.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:CreateInstance(System.IServiceProvider,System.Type,System.Object[]):System.Object (FullOpts)
-10 (-4.59 % of base) : 3501.dasm - System.Xml.Serialization.CodeGenerator:StoreMember(System.Reflection.MemberInfo):this (FullOpts)
-8 (-1.20 % of base) : 24418.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
-8 (-1.54 % of base) : 4234.dasm - System.Text.Json.Reflection.ReflectionExtensions:TryGetDeserializationConstructor(System.Type,ubyte,byref):ubyte (FullOpts)
-8 (-4.08 % of base) : 19792.dasm - System.Xml.XmlElement:WriteElementTo(System.Xml.XmlWriter,System.Xml.XmlElement) (FullOpts)
Top method regressions (percentages):
34 (3.23 % of base) : 2143.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
10 (2.84 % of base) : 7370.dasm - System.IO.Path:TryJoin(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (FullOpts)
14 (1.62 % of base) : 2771.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
20 (1.40 % of base) : 3107.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
8 (1.12 % of base) : 10658.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (FullOpts)
4 (0.83 % of base) : 8157.dasm - System.Text.RegularExpressions.RegexCharClass:AddCategoryFromName(System.String,ubyte,ubyte,System.String,int):this (FullOpts)
16 (0.62 % of base) : 26523.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitArgumentsAndCaptureReceiverIfNeeded(byref,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (FullOpts)
8 (0.61 % of base) : 26053.dasm - Microsoft.CodeAnalysis.ConstantValue:Create(System.Object,ubyte):Microsoft.CodeAnalysis.ConstantValue (FullOpts)
2 (0.43 % of base) : 4673.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
24 (0.41 % of base) : 5214.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (FullOpts)
12 (0.28 % of base) : 1197.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
8 (0.17 % of base) : 26062.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
2 (0.12 % of base) : 17949.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)
8 (0.10 % of base) : 17983.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)
2 (0.06 % of base) : 10673.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (FullOpts)
Top method improvements (percentages):
-24 (-32.43 % of base) : 14130.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
-18 (-13.85 % of base) : 33614.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-16 (-8.42 % of base) : 28828.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
-6 (-6.12 % of base) : 25949.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetSymbol[System.__Canon](Microsoft.CodeAnalysis.ISymbol):System.__Canon (FullOpts)
-12 (-6.12 % of base) : 15956.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (FullOpts)
-22 (-5.21 % of base) : 23507.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
-14 (-5.00 % of base) : 47079.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (FullOpts)
-12 (-4.80 % of base) : 938.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-10 (-4.59 % of base) : 3501.dasm - System.Xml.Serialization.CodeGenerator:StoreMember(System.Reflection.MemberInfo):this (FullOpts)
-12 (-4.23 % of base) : 13891.dasm - System.Net.Sockets.SocketAsyncContext:Accept(System.Memory`1[ubyte],byref,byref):int:this (FullOpts)
-8 (-4.08 % of base) : 19792.dasm - System.Xml.XmlElement:WriteElementTo(System.Xml.XmlWriter,System.Xml.XmlElement) (FullOpts)
-6 (-4.05 % of base) : 15724.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (FullOpts)
-4 (-3.57 % of base) : 7551.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection+Enumerator:MoveNext():ubyte:this (FullOpts)
-4 (-3.28 % of base) : 9033.dasm - System.Buffers.ReadOnlySequence`1[ubyte]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment`1[ubyte],System.Object,int,long,int):System.SequencePosition (FullOpts)
-6 (-2.97 % of base) : 1829.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-4 (-2.74 % of base) : 2756.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
-4 (-2.41 % of base) : 950.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
-4 (-1.89 % of base) : 5411.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
-4 (-1.82 % of base) : 5929.dasm - System.Text.Json.Tests.Perf_Reader:ReadMultiSpanSequenceEmptyLoop():this (FullOpts)
-4 (-1.82 % of base) : 14970.dasm - System.Text.Json.Tests.Perf_Reader:ReadSingleSpanSequenceEmptyLoop():this (FullOpts)
benchmarks.run_pgo.linux.arm.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 63930056 (overridden on cmd)
Total bytes of diff: 63929076 (overridden on cmd)
Total bytes of delta: -980 (-0.00 % of base)
diff is a regression.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
66 : 81989.dasm (5.24 % of base)
54 : 139413.dasm (4.31 % of base)
52 : 79316.dasm (4.62 % of base)
52 : 112575.dasm (4.61 % of base)
52 : 87556.dasm (4.62 % of base)
48 : 139431.dasm (3.82 % of base)
42 : 141533.dasm (1.69 % of base)
36 : 137992.dasm (3.47 % of base)
36 : 103380.dasm (3.47 % of base)
36 : 38959.dasm (3.47 % of base)
36 : 16881.dasm (3.47 % of base)
36 : 40986.dasm (3.53 % of base)
34 : 141540.dasm (1.34 % of base)
34 : 148281.dasm (2.25 % of base)
34 : 148282.dasm (3.29 % of base)
34 : 18040.dasm (1.82 % of base)
28 : 107635.dasm (1.28 % of base)
28 : 137988.dasm (1.98 % of base)
28 : 27611.dasm (2.70 % of base)
28 : 86528.dasm (1.88 % of base)
Top file improvements (bytes):
-84 : 100674.dasm (-4.32 % of base)
-36 : 130096.dasm (-4.40 % of base)
-36 : 133293.dasm (-4.40 % of base)
-32 : 139419.dasm (-1.35 % of base)
-30 : 38107.dasm (-0.30 % of base)
-30 : 35066.dasm (-1.08 % of base)
-30 : 100220.dasm (-2.20 % of base)
-28 : 91434.dasm (-1.24 % of base)
-28 : 79268.dasm (-2.46 % of base)
-28 : 112559.dasm (-2.47 % of base)
-28 : 87530.dasm (-2.47 % of base)
-26 : 161586.dasm (-2.78 % of base)
-24 : 13211.dasm (-32.43 % of base)
-24 : 141534.dasm (-1.45 % of base)
-24 : 19845.dasm (-32.43 % of base)
-22 : 105361.dasm (-30.56 % of base)
-22 : 117585.dasm (-30.56 % of base)
-22 : 84209.dasm (-30.56 % of base)
-22 : 56029.dasm (-30.56 % of base)
-22 : 57661.dasm (-30.56 % of base)
70 total files with Code Size differences (37 improved, 33 regressed), 20 unchanged.
Top method regressions (bytes):
66 (5.24 % of base) : 81989.dasm - System.DateTimeFormat:TryFormat[ushort](System.DateTime,System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.TimeSpan):ubyte (Tier1)
54 (4.31 % of base) : 139413.dasm - BenchmarksGame.pidigits:compose_l(int,int,int,int):this (Tier1)
52 (4.62 % of base) : 79316.dasm - System.Net.Sockets.SocketAsyncContext:SendToAsync(System.Memory`1[ubyte],int,int,int,System.Memory`1[ubyte],byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
52 (4.61 % of base) : 112575.dasm - System.Net.Sockets.SocketAsyncContext:SendToAsync(System.Memory`1[ubyte],int,int,int,System.Memory`1[ubyte],byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
52 (4.62 % of base) : 87556.dasm - System.Net.Sockets.SocketAsyncContext:SendToAsync(System.Memory`1[ubyte],int,int,int,System.Memory`1[ubyte],byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
48 (3.82 % of base) : 139431.dasm - BenchmarksGame.pidigits:compose_r(int,int,int,int):this (Tier1)
42 (1.69 % of base) : 141533.dasm - System.Net.Sockets.Socket:ReceiveFromAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
36 (3.47 % of base) : 137992.dasm - System.Net.Sockets.SocketAsyncContext:SendToAsync(System.Memory`1[ubyte],int,int,int,System.Memory`1[ubyte],byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
36 (3.47 % of base) : 103380.dasm - System.Net.Sockets.SocketAsyncContext:SendToAsync(System.Memory`1[ubyte],int,int,int,System.Memory`1[ubyte],byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
36 (3.47 % of base) : 38959.dasm - System.Net.Sockets.SocketAsyncContext:SendToAsync(System.Memory`1[ubyte],int,int,int,System.Memory`1[ubyte],byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
36 (3.47 % of base) : 16881.dasm - System.Net.Sockets.SocketAsyncContext:SendToAsync(System.Memory`1[ubyte],int,int,int,System.Memory`1[ubyte],byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
36 (3.53 % of base) : 40986.dasm - System.Net.Sockets.SocketAsyncContext:SendToAsync(System.Memory`1[ubyte],int,int,int,System.Memory`1[ubyte],byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
34 (1.34 % of base) : 141540.dasm - System.Net.Sockets.Socket:SendToAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
34 (3.29 % of base) : 148282.dasm - System.Net.Sockets.SocketAsyncContext:SendToAsync(System.Memory`1[ubyte],int,int,int,System.Memory`1[ubyte],byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
34 (2.25 % of base) : 148281.dasm - System.Net.Sockets.SocketAsyncEventArgs:DoOperationSendTo(System.Net.Sockets.SafeSocketHandle,System.Threading.CancellationToken):int:this (Tier1)
34 (1.82 % of base) : 18040.dasm - System.Text.RegularExpressions.RegexPrefixAnalyzer:<FindFirstCharClass>g__TryFindFirstCharClass|4_0(System.Text.RegularExpressions.RegexNode,byref):System.Nullable`1[ubyte] (Tier0-FullOpts)
28 (2.70 % of base) : 27611.dasm - System.Net.Sockets.SocketAsyncContext:SendToAsync(System.Memory`1[ubyte],int,int,int,System.Memory`1[ubyte],byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
28 (1.98 % of base) : 137988.dasm - System.Net.Sockets.SocketAsyncEventArgs:DoOperationReceive(System.Net.Sockets.SafeSocketHandle,System.Threading.CancellationToken):int:this (Tier1)
28 (1.88 % of base) : 86528.dasm - System.Net.Sockets.SocketAsyncEventArgs:DoOperationReceive(System.Net.Sockets.SafeSocketHandle,System.Threading.CancellationToken):int:this (Tier1)
28 (1.28 % of base) : 107635.dasm - System.Reflection.InvokerEmitUtil:EmitCallAndReturnHandling(System.Reflection.Emit.ILGenerator,System.Reflection.MethodBase,ubyte,ubyte) (Tier1)
Top method improvements (bytes):
-84 (-4.32 % of base) : 100674.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (Tier1)
-36 (-4.40 % of base) : 130096.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CanLockTheFile(int,int):ubyte:this (Tier1)
-36 (-4.40 % of base) : 133293.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CanLockTheFile(int,int):ubyte:this (Tier1)
-32 (-1.35 % of base) : 139419.dasm - System.Numerics.BigInteger:Subtract(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (Tier1)
-30 (-0.30 % of base) : 38107.dasm - MessagePack.Internal.ObjectSerializationInfo:CreateOrNull(System.Type,ubyte,ubyte,ubyte):MessagePack.Internal.ObjectSerializationInfo (Tier0-FullOpts)
-30 (-2.20 % of base) : 100220.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:Rewrite(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundStatement,Microsoft.CodeAnalysis.CSharp.TypeCompilationState,Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields,ubyte,Microsoft.CodeAnalysis.Emit.MethodInstrumentation,Microsoft.CodeAnalysis.CodeGen.DebugDocumentProvider,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,byref,byref):Microsoft.CodeAnalysis.CSharp.BoundStatement (Tier1)
-30 (-1.08 % of base) : 35066.dasm - Sigil.Impl.VerifiableTracker:CollapseAndVerify():Sigil.Impl.VerificationResult:this (Tier0-FullOpts)
-28 (-1.24 % of base) : 91434.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier0-FullOpts)
-28 (-2.46 % of base) : 79268.dasm - System.Net.Sockets.SocketAsyncContext:ReceiveFromAsync(System.Memory`1[ubyte],int,System.Memory`1[ubyte],byref,byref,byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
-28 (-2.47 % of base) : 112559.dasm - System.Net.Sockets.SocketAsyncContext:ReceiveFromAsync(System.Memory`1[ubyte],int,System.Memory`1[ubyte],byref,byref,byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
-28 (-2.47 % of base) : 87530.dasm - System.Net.Sockets.SocketAsyncContext:ReceiveFromAsync(System.Memory`1[ubyte],int,System.Memory`1[ubyte],byref,byref,byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
-26 (-2.78 % of base) : 161586.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetGenericMethodBaseDefinition(System.Reflection.MethodBase):System.Reflection.MethodBase (Tier1)
-24 (-1.45 % of base) : 141534.dasm - System.Net.Sockets.SocketAsyncEventArgs:DoOperationReceiveFrom(System.Net.Sockets.SafeSocketHandle,System.Threading.CancellationToken):int:this (Tier1)
-24 (-32.43 % of base) : 13211.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-24 (-32.43 % of base) : 19845.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-22 (-30.56 % of base) : 105361.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-22 (-30.56 % of base) : 117585.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-22 (-30.56 % of base) : 84209.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-22 (-30.56 % of base) : 56029.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-22 (-30.56 % of base) : 57661.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
Top method regressions (percentages):
12 (7.59 % of base) : 100544.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
18 (5.59 % of base) : 36262.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToLowerConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
18 (5.59 % of base) : 46254.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToLowerConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
18 (5.59 % of base) : 53679.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToLowerConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
18 (5.59 % of base) : 78378.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToLowerConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
18 (5.59 % of base) : 118034.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToLowerConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
18 (5.59 % of base) : 140534.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToLowerConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
18 (5.59 % of base) : 132334.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
18 (5.59 % of base) : 25390.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
18 (5.59 % of base) : 40904.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
66 (5.24 % of base) : 81989.dasm - System.DateTimeFormat:TryFormat[ushort](System.DateTime,System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.TimeSpan):ubyte (Tier1)
8 (4.88 % of base) : 98175.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
52 (4.62 % of base) : 79316.dasm - System.Net.Sockets.SocketAsyncContext:SendToAsync(System.Memory`1[ubyte],int,int,int,System.Memory`1[ubyte],byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
52 (4.62 % of base) : 87556.dasm - System.Net.Sockets.SocketAsyncContext:SendToAsync(System.Memory`1[ubyte],int,int,int,System.Memory`1[ubyte],byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
52 (4.61 % of base) : 112575.dasm - System.Net.Sockets.SocketAsyncContext:SendToAsync(System.Memory`1[ubyte],int,int,int,System.Memory`1[ubyte],byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
54 (4.31 % of base) : 139413.dasm - BenchmarksGame.pidigits:compose_l(int,int,int,int):this (Tier1)
8 (4.30 % of base) : 100545.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyAlgorithmIdAttributeSetting():System.Nullable`1[int]:this (Tier1)
8 (4.30 % of base) : 100543.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_HashAlgorithm():int:this (Tier1)
48 (3.82 % of base) : 139431.dasm - BenchmarksGame.pidigits:compose_r(int,int,int,int):this (Tier1)
36 (3.53 % of base) : 40986.dasm - System.Net.Sockets.SocketAsyncContext:SendToAsync(System.Memory`1[ubyte],int,int,int,System.Memory`1[ubyte],byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
Top method improvements (percentages):
-24 (-32.43 % of base) : 13211.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-24 (-32.43 % of base) : 19845.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-22 (-30.56 % of base) : 105361.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-22 (-30.56 % of base) : 117585.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-22 (-30.56 % of base) : 84209.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-22 (-30.56 % of base) : 56029.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-22 (-30.56 % of base) : 57661.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-22 (-30.56 % of base) : 67729.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-22 (-30.56 % of base) : 129333.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-22 (-30.56 % of base) : 24246.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-22 (-30.56 % of base) : 46973.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-22 (-30.56 % of base) : 49482.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-22 (-30.56 % of base) : 7922.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-22 (-30.56 % of base) : 161681.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-22 (-30.56 % of base) : 24101.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-22 (-30.56 % of base) : 28049.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-22 (-30.56 % of base) : 40577.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-22 (-30.56 % of base) : 41334.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-22 (-30.56 % of base) : 58330.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-22 (-30.56 % of base) : 59125.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
benchmarks.run_tiered.linux.arm.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 21546378 (overridden on cmd)
Total bytes of diff: 21546030 (overridden on cmd)
Total bytes of delta: -348 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
24 : 4426.dasm (0.41 % of base)
22 : 9874.dasm (2.71 % of base)
20 : 23226.dasm (2.87 % of base)
20 : 13516.dasm (1.40 % of base)
16 : 52223.dasm (0.62 % of base)
12 : 3414.dasm (0.28 % of base)
10 : 20604.dasm (2.84 % of base)
8 : 51273.dasm (0.62 % of base)
8 : 54158.dasm (0.17 % of base)
8 : 37304.dasm (0.10 % of base)
6 : 23250.dasm (0.18 % of base)
4 : 16849.dasm (0.83 % of base)
4 : 8557.dasm (0.50 % of base)
2 : 14889.dasm (0.43 % of base)
2 : 37865.dasm (0.12 % of base)
Top file improvements (bytes):
-34 : 26254.dasm (-0.34 % of base)
-30 : 24618.dasm (-1.08 % of base)
-28 : 48343.dasm (-1.24 % of base)
-22 : 45946.dasm (-5.21 % of base)
-22 : 29825.dasm (-30.56 % of base)
-22 : 4278.dasm (-30.56 % of base)
-18 : 64324.dasm (-13.85 % of base)
-18 : 21931.dasm (-0.49 % of base)
-16 : 54626.dasm (-1.70 % of base)
-16 : 62633.dasm (-8.42 % of base)
-14 : 80096.dasm (-5.00 % of base)
-12 : 27064.dasm (-0.56 % of base)
-12 : 49878.dasm (-0.47 % of base)
-12 : 31836.dasm (-6.12 % of base)
-12 : 2572.dasm (-4.80 % of base)
-12 : 37009.dasm (-4.23 % of base)
-10 : 57825.dasm (-1.06 % of base)
-10 : 14581.dasm (-4.59 % of base)
-8 : 41667.dasm (-4.08 % of base)
-8 : 47505.dasm (-0.93 % of base)
47 total files with Code Size differences (32 improved, 15 regressed), 8 unchanged.
Top method regressions (bytes):
24 (0.41 % of base) : 4426.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (Tier0-FullOpts)
22 (2.71 % of base) : 9874.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (Tier0-FullOpts)
20 (2.87 % of base) : 23226.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (Tier0-FullOpts)
20 (1.40 % of base) : 13516.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (Tier0-FullOpts)
16 (0.62 % of base) : 52223.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitArgumentsAndCaptureReceiverIfNeeded(byref,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (Tier0-FullOpts)
12 (0.28 % of base) : 3414.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)
10 (2.84 % of base) : 20604.dasm - System.IO.Path:TryJoin(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (Tier1)
8 (0.62 % of base) : 51273.dasm - Microsoft.CodeAnalysis.ConstantValue:Create(System.Object,ubyte):Microsoft.CodeAnalysis.ConstantValue (Tier1)
8 (0.17 % of base) : 54158.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
8 (0.10 % of base) : 37304.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (Tier0-FullOpts)
6 (0.18 % of base) : 23250.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (Tier0-FullOpts)
4 (0.50 % of base) : 8557.dasm - System.Net.Sockets.SocketPal:TryCompleteSendTo(System.Net.Sockets.SafeSocketHandle,System.ReadOnlySpan`1[ubyte],System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],byref,byref,byref,int,System.ReadOnlySpan`1[ubyte],byref,byref):ubyte (Tier0-FullOpts)
4 (0.83 % of base) : 16849.dasm - System.Text.RegularExpressions.RegexCharClass:AddCategoryFromName(System.String,ubyte,ubyte,System.String,int):this (Tier0-FullOpts)
2 (0.43 % of base) : 14889.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier0-FullOpts)
2 (0.12 % of base) : 37865.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (Tier0-FullOpts)
Top method improvements (bytes):
-34 (-0.34 % of base) : 26254.dasm - MessagePack.Internal.ObjectSerializationInfo:CreateOrNull(System.Type,ubyte,ubyte,ubyte):MessagePack.Internal.ObjectSerializationInfo (Tier0-FullOpts)
-30 (-1.08 % of base) : 24618.dasm - Sigil.Impl.VerifiableTracker:CollapseAndVerify():Sigil.Impl.VerificationResult:this (Tier0-FullOpts)
-28 (-1.24 % of base) : 48343.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier0-FullOpts)
-22 (-30.56 % of base) : 29825.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-22 (-30.56 % of base) : 4278.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-22 (-5.21 % of base) : 45946.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (Tier0-FullOpts)
-18 (-13.85 % of base) : 64324.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier0-FullOpts)
-18 (-0.49 % of base) : 21931.dasm - Utf8Json.Internal.Emit.MetaType:.ctor(System.Type,System.Func`2[System.String,System.String],ubyte):this (Tier0-FullOpts)
-16 (-8.42 % of base) : 62633.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (Tier0-FullOpts)
-16 (-1.70 % of base) : 54626.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (Tier1)
-14 (-5.00 % of base) : 80096.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier0-FullOpts)
-12 (-0.47 % of base) : 49878.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (Tier0-FullOpts)
-12 (-6.12 % of base) : 31836.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier0-FullOpts)
-12 (-4.23 % of base) : 37009.dasm - System.Net.Sockets.SocketAsyncContext:Accept(System.Memory`1[ubyte],byref,byref):int:this (Tier1)
-12 (-4.80 % of base) : 2572.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier0-FullOpts)
-12 (-0.56 % of base) : 27064.dasm - System.Runtime.Serialization.Json.JsonFormatWriterGenerator+CriticalHelper:WriteMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder,System.Runtime.Serialization.DataContracts.ClassDataContract):int:this (Tier0-FullOpts)
-10 (-1.06 % of base) : 57825.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:CreateInstance(System.IServiceProvider,System.Type,System.Object[]):System.Object (Tier0-FullOpts)
-10 (-4.59 % of base) : 14581.dasm - System.Xml.Serialization.CodeGenerator:StoreMember(System.Reflection.MemberInfo):this (Tier1)
-8 (-0.93 % of base) : 47505.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (Tier0-FullOpts)
-8 (-4.08 % of base) : 41667.dasm - System.Xml.XmlElement:WriteElementTo(System.Xml.XmlWriter,System.Xml.XmlElement) (Tier0-FullOpts)
Top method regressions (percentages):
20 (2.87 % of base) : 23226.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (Tier0-FullOpts)
10 (2.84 % of base) : 20604.dasm - System.IO.Path:TryJoin(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (Tier1)
22 (2.71 % of base) : 9874.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (Tier0-FullOpts)
20 (1.40 % of base) : 13516.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (Tier0-FullOpts)
4 (0.83 % of base) : 16849.dasm - System.Text.RegularExpressions.RegexCharClass:AddCategoryFromName(System.String,ubyte,ubyte,System.String,int):this (Tier0-FullOpts)
8 (0.62 % of base) : 51273.dasm - Microsoft.CodeAnalysis.ConstantValue:Create(System.Object,ubyte):Microsoft.CodeAnalysis.ConstantValue (Tier1)
16 (0.62 % of base) : 52223.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitArgumentsAndCaptureReceiverIfNeeded(byref,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (Tier0-FullOpts)
4 (0.50 % of base) : 8557.dasm - System.Net.Sockets.SocketPal:TryCompleteSendTo(System.Net.Sockets.SafeSocketHandle,System.ReadOnlySpan`1[ubyte],System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],byref,byref,byref,int,System.ReadOnlySpan`1[ubyte],byref,byref):ubyte (Tier0-FullOpts)
2 (0.43 % of base) : 14889.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier0-FullOpts)
24 (0.41 % of base) : 4426.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (Tier0-FullOpts)
12 (0.28 % of base) : 3414.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)
6 (0.18 % of base) : 23250.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (Tier0-FullOpts)
8 (0.17 % of base) : 54158.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
2 (0.12 % of base) : 37865.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (Tier0-FullOpts)
8 (0.10 % of base) : 37304.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (Tier0-FullOpts)
Top method improvements (percentages):
-22 (-30.56 % of base) : 29825.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-22 (-30.56 % of base) : 4278.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-18 (-13.85 % of base) : 64324.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier0-FullOpts)
-16 (-8.42 % of base) : 62633.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (Tier0-FullOpts)
-12 (-6.12 % of base) : 31836.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier0-FullOpts)
-22 (-5.21 % of base) : 45946.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (Tier0-FullOpts)
-14 (-5.00 % of base) : 80096.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier0-FullOpts)
-12 (-4.80 % of base) : 2572.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier0-FullOpts)
-10 (-4.59 % of base) : 14581.dasm - System.Xml.Serialization.CodeGenerator:StoreMember(System.Reflection.MemberInfo):this (Tier1)
-12 (-4.23 % of base) : 37009.dasm - System.Net.Sockets.SocketAsyncContext:Accept(System.Memory`1[ubyte],byref,byref):int:this (Tier1)
-8 (-4.08 % of base) : 41667.dasm - System.Xml.XmlElement:WriteElementTo(System.Xml.XmlWriter,System.Xml.XmlElement) (Tier0-FullOpts)
-6 (-4.05 % of base) : 34106.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Tier0-FullOpts)
-4 (-3.57 % of base) : 20529.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection+Enumerator:MoveNext():ubyte:this (Tier0-FullOpts)
-4 (-3.28 % of base) : 15192.dasm - System.Buffers.ReadOnlySequence`1[ubyte]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment`1[ubyte],System.Object,int,long,int):System.SequencePosition (Tier0-FullOpts)
-6 (-2.97 % of base) : 4361.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier0-FullOpts)
-4 (-2.74 % of base) : 9855.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (Tier0-FullOpts)
-4 (-2.41 % of base) : 2647.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier0-FullOpts)
-4 (-1.89 % of base) : 16125.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (Tier0-FullOpts)
-4 (-1.82 % of base) : 12906.dasm - System.Text.Json.Tests.Perf_Reader:ReadMultiSpanSequenceEmptyLoop():this (Tier0-FullOpts)
-4 (-1.82 % of base) : 16865.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequence():this (Tier0-FullOpts)
coreclr_tests.run.linux.arm.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 321751292 (overridden on cmd)
Total bytes of diff: 321747726 (overridden on cmd)
Total bytes of delta: -3566 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
82 : 167990.dasm (1.57 % of base)
46 : 311687.dasm (3.89 % of base)
44 : 178040.dasm (0.93 % of base)
44 : 200828.dasm (0.93 % of base)
44 : 192068.dasm (0.93 % of base)
40 : 305690.dasm (3.36 % of base)
32 : 307823.dasm (1.07 % of base)
32 : 312220.dasm (1.07 % of base)
32 : 312239.dasm (3.04 % of base)
26 : 306659.dasm (1.83 % of base)
26 : 311953.dasm (1.84 % of base)
24 : 1090.dasm (0.41 % of base)
24 : 305664.dasm (0.84 % of base)
24 : 38074.dasm (0.51 % of base)
24 : 116701.dasm (0.51 % of base)
24 : 204941.dasm (0.51 % of base)
24 : 315530.dasm (0.41 % of base)
20 : 35000.dasm (3.09 % of base)
20 : 40712.dasm (3.09 % of base)
18 : 198699.dasm (0.44 % of base)
Top file improvements (bytes):
-238 : 399036.dasm (-30.67 % of base)
-154 : 333592.dasm (-18.78 % of base)
-58 : 333590.dasm (-11.98 % of base)
-40 : 202017.dasm (-3.49 % of base)
-38 : 333591.dasm (-11.66 % of base)
-36 : 299651.dasm (-3.71 % of base)
-34 : 462403.dasm (-3.76 % of base)
-34 : 474696.dasm (-3.55 % of base)
-34 : 465079.dasm (-18.89 % of base)
-32 : 302047.dasm (-0.68 % of base)
-32 : 294838.dasm (-2.88 % of base)
-32 : 304946.dasm (-2.83 % of base)
-32 : 110762.dasm (-2.92 % of base)
-32 : 121725.dasm (-2.92 % of base)
-32 : 181696.dasm (-2.92 % of base)
-32 : 194123.dasm (-2.92 % of base)
-32 : 300635.dasm (-0.68 % of base)
-30 : 155809.dasm (-2.74 % of base)
-30 : 167814.dasm (-2.69 % of base)
-28 : 378105.dasm (-1.24 % of base)
77 total files with Code Size differences (42 improved, 35 regressed), 20 unchanged.
Top method regressions (bytes):
82 (1.57 % of base) : 167990.dasm - System.Diagnostics.Tracing.EventPipePayloadDecoder:DecodePayload(byref,System.ReadOnlySpan`1[ubyte]):System.Object[] (Tier1)
46 (3.89 % of base) : 311687.dasm - ILCompiler.Compilation:CanInline(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.MethodDesc):ubyte:this (Tier1)
44 (0.93 % of base) : 178040.dasm - System.Reflection.PortableExecutable.PEHeaders:.ctor(System.IO.Stream,int,ubyte):this (Tier1)
44 (0.93 % of base) : 200828.dasm - System.Reflection.PortableExecutable.PEHeaders:.ctor(System.IO.Stream,int,ubyte):this (Tier1)
44 (0.93 % of base) : 192068.dasm - System.Reflection.PortableExecutable.PEHeaders:.ctor(System.IO.Stream,int,ubyte):this (Tier1)
40 (3.36 % of base) : 305690.dasm - ILCompiler.Compilation:CanInline(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.MethodDesc):ubyte:this (Tier1)
32 (1.07 % of base) : 307823.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ArgIterator:GetArgLoc(int):System.Nullable`1[ILCompiler.DependencyAnalysis.ReadyToRun.ArgLocDesc]:this (Tier1)
32 (1.07 % of base) : 312220.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ArgIterator:GetArgLoc(int):System.Nullable`1[ILCompiler.DependencyAnalysis.ReadyToRun.ArgLocDesc]:this (Tier1)
32 (3.04 % of base) : 312239.dasm - Internal.NativeFormat.VertexArray:ExpandBlock(int,int,ubyte,byref):Internal.NativeFormat.Vertex:this (Tier1)
26 (1.83 % of base) : 306659.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+GenericLookupKey,System.__Canon]:GetOrAdd(ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+GenericLookupKey,System.Func`2[ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+GenericLookupKey,System.__Canon]):System.__Canon:this (Tier1)
26 (1.84 % of base) : 311953.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+GenericLookupKey,System.__Canon]:GetOrAdd(ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+GenericLookupKey,System.Func`2[ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+GenericLookupKey,System.__Canon]):System.__Canon:this (Tier1)
24 (0.84 % of base) : 305664.dasm - Internal.JitInterface.CorInfoImpl:getMethodAttribsInternal(Internal.TypeSystem.MethodDesc):uint:this (Tier1)
24 (0.51 % of base) : 38074.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
24 (0.51 % of base) : 116701.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
24 (0.51 % of base) : 204941.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
24 (0.41 % of base) : 315530.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (FullOpts)
24 (0.41 % of base) : 1090.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (Tier0-FullOpts)
20 (3.09 % of base) : 35000.dasm - System.Reflection.Emit.DynamicResolver:ResolveToken(int,byref,byref,byref):this (Tier1)
20 (3.09 % of base) : 40712.dasm - System.Reflection.Emit.DynamicResolver:ResolveToken(int,byref,byref,byref):this (Tier1)
18 (0.44 % of base) : 198699.dasm - IlasmPortablePdbTests.IlasmPortablePdbTester:TestPortablePdbLocalScope(System.String):this (Tier0-FullOpts)
Top method improvements (bytes):
-238 (-30.67 % of base) : 399036.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
-154 (-18.78 % of base) : 333592.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (FullOpts)
-58 (-11.98 % of base) : 333590.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:toFormattedString(System.String,System.Object):System.String (FullOpts)
-40 (-3.49 % of base) : 202017.dasm - Runtime_52864.test:check(System.Numerics.Vector2,System.Numerics.Vector2,System.Numerics.Vector2) (Tier1)
-38 (-11.66 % of base) : 333591.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:isNumber(System.Object):ubyte (FullOpts)
-36 (-3.71 % of base) : 299651.dasm - Internal.TypeSystem.Ecma.EcmaMethod:GetImportAttributesFromBestFitMappingAttribute(System.Reflection.Metadata.CustomAttributeHandleCollection):short:this (Tier0-FullOpts)
-34 (-3.76 % of base) : 462403.dasm - ILCompiler.AssemblyExtensions:HasOptimizationsDisabled(Internal.TypeSystem.Ecma.EcmaAssembly):ubyte (FullOpts)
-34 (-18.89 % of base) : 465079.dasm - Internal.IL.StackValue:Equals(System.Object):ubyte:this (FullOpts)
-34 (-3.55 % of base) : 474696.dasm - Internal.TypeSystem.Ecma.EcmaMethod:GetImportAttributesFromBestFitMappingAttribute(System.Reflection.Metadata.CustomAttributeHandleCollection):short:this (FullOpts)
-32 (-2.83 % of base) : 304946.dasm - Internal.JitInterface.CorInfoImpl:ShouldSkipCompilation(ILCompiler.InstructionSetSupport,Internal.TypeSystem.MethodDesc):ubyte (Tier1)
-32 (-2.88 % of base) : 294838.dasm - System.Net.Sockets.SocketAsyncContext:ReceiveFromAsync(System.Memory`1[ubyte],int,System.Memory`1[ubyte],byref,byref,byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
-32 (-2.92 % of base) : 110762.dasm - System.Net.Sockets.SocketAsyncContext:ReceiveFromAsync(System.Memory`1[ubyte],int,System.Memory`1[ubyte],byref,byref,byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
-32 (-2.92 % of base) : 121725.dasm - System.Net.Sockets.SocketAsyncContext:ReceiveFromAsync(System.Memory`1[ubyte],int,System.Memory`1[ubyte],byref,byref,byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
-32 (-2.92 % of base) : 181696.dasm - System.Net.Sockets.SocketAsyncContext:ReceiveFromAsync(System.Memory`1[ubyte],int,System.Memory`1[ubyte],byref,byref,byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
-32 (-2.92 % of base) : 194123.dasm - System.Net.Sockets.SocketAsyncContext:ReceiveFromAsync(System.Memory`1[ubyte],int,System.Memory`1[ubyte],byref,byref,byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
-32 (-0.68 % of base) : 302047.dasm - System.Reflection.PortableExecutable.PEHeaders:.ctor(System.IO.Stream,int,ubyte):this (Tier1)
-32 (-0.68 % of base) : 300635.dasm - System.Reflection.PortableExecutable.PEHeaders:.ctor(System.IO.Stream,int,ubyte):this (Tier1)
-30 (-2.74 % of base) : 155809.dasm - System.Net.Sockets.SocketAsyncContext:ReceiveFromAsync(System.Memory`1[ubyte],int,System.Memory`1[ubyte],byref,byref,byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
-30 (-2.69 % of base) : 167814.dasm - System.Net.Sockets.SocketAsyncContext:ReceiveFromAsync(System.Memory`1[ubyte],int,System.Memory`1[ubyte],byref,byref,byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
-28 (-1.24 % of base) : 378105.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
Top method regressions (percentages):
46 (3.89 % of base) : 311687.dasm - ILCompiler.Compilation:CanInline(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.MethodDesc):ubyte:this (Tier1)
40 (3.36 % of base) : 305690.dasm - ILCompiler.Compilation:CanInline(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.MethodDesc):ubyte:this (Tier1)
16 (3.15 % of base) : 134945.dasm - Program:Compare_UInt32(uint,uint) (Tier1)
20 (3.09 % of base) : 35000.dasm - System.Reflection.Emit.DynamicResolver:ResolveToken(int,byref,byref,byref):this (Tier1)
20 (3.09 % of base) : 40712.dasm - System.Reflection.Emit.DynamicResolver:ResolveToken(int,byref,byref,byref):this (Tier1)
32 (3.04 % of base) : 312239.dasm - Internal.NativeFormat.VertexArray:ExpandBlock(int,int,ubyte,byref):Internal.NativeFormat.Vertex:this (Tier1)
4 (3.03 % of base) : 181125.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature):System.Reflection.ParameterInfo[] (Tier1)
14 (2.93 % of base) : 136807.dasm - System.Reflection.RuntimeAssembly:GetType(System.String,ubyte,ubyte):System.Type:this (Instrumented Tier1)
2 (2.86 % of base) : 117171.dasm - System.String:Equals(System.Object):ubyte:this (Tier1)
2 (2.86 % of base) : 144246.dasm - System.String:Equals(System.Object):ubyte:this (Tier1)
18 (2.82 % of base) : 137465.dasm - System.Reflection.Emit.DynamicResolver:ResolveToken(int,byref,byref,byref):this (Tier1)
8 (2.56 % of base) : 305644.dasm - Internal.JitInterface.CorInfoImpl:isIntrinsic(uint):ubyte:this (Tier1)
6 (2.36 % of base) : 300636.dasm - System.Reflection.Internal.StreamExtensions:GetAndValidateSize(System.IO.Stream,int,System.String):int (Tier1)
2 (2.13 % of base) : 153566.dasm - System.Text.RegularExpressions.RegexNode:Child(int):System.Text.RegularExpressions.RegexNode:this (Tier1)
8 (2.09 % of base) : 369913.dasm - MyCounter[System.__Canon]:Increment[System.__Canon](int):this (FullOpts)
10 (2.08 % of base) : 116831.dasm - System.Type:GetType(System.String):System.Type (Tier1)
10 (1.99 % of base) : 136822.dasm - System.Reflection.TypeNameParser:GetType(System.String,ubyte,ubyte,System.Reflection.Assembly):System.Type (Instrumented Tier1)
4 (1.98 % of base) : 463518.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DelayLoadMethodImport:CompareToImpl(ILCompiler.DependencyAnalysis.ISortableNode,ILCompiler.DependencyAnalysis.CompilerComparer):int:this (FullOpts)
4 (1.98 % of base) : 476281.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.PrecodeMethodImport:CompareToImpl(ILCompiler.DependencyAnalysis.ISortableNode,ILCompiler.DependencyAnalysis.CompilerComparer):int:this (FullOpts)
2 (1.92 % of base) : 272920.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
Top method improvements (percentages):
-26 (-34.21 % of base) : 23616.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-26 (-34.21 % of base) : 127085.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-24 (-32.43 % of base) : 122945.dasm - System.Byte:Equals(System.Object):ubyte:this (Tier1)
-24 (-32.43 % of base) : 201887.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-24 (-32.43 % of base) : 122935.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-24 (-32.43 % of base) : 134601.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-24 (-32.43 % of base) : 122940.dasm - System.UInt16:Equals(System.Object):ubyte:this (Tier1)
-24 (-32.43 % of base) : 122957.dasm - System.UInt32:Equals(System.Object):ubyte:this (Tier1)
-24 (-30.77 % of base) : 122946.dasm - System.Int16:Equals(System.Object):ubyte:this (Tier1)
-24 (-30.77 % of base) : 122952.dasm - System.SByte:Equals(System.Object):ubyte:this (Tier1)
-238 (-30.67 % of base) : 399036.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
-22 (-30.56 % of base) : 30990.dasm - System.Byte:Equals(System.Object):ubyte:this (Tier1)
-22 (-30.56 % of base) : 6150.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-24 (-28.57 % of base) : 122936.dasm - System.Int64:Equals(System.Object):ubyte:this (Tier1)
-24 (-28.57 % of base) : 122919.dasm - System.UInt64:Equals(System.Object):ubyte:this (Tier1)
-24 (-21.05 % of base) : 122934.dasm - System.Single:Equals(System.Object):ubyte:this (Tier1)
-22 (-19.64 % of base) : 121272.dasm - System.Double:Equals(System.Object):ubyte:this (Tier1)
-24 (-19.05 % of base) : 116575.dasm - System.Int64:Equals(System.Object):ubyte:this (Instrumented Tier1)
-34 (-18.89 % of base) : 465079.dasm - Internal.IL.StackValue:Equals(System.Object):ubyte:this (FullOpts)
-154 (-18.78 % of base) : 333592.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (FullOpts)
libraries.crossgen2.linux.arm.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 34522594 (overridden on cmd)
Total bytes of diff: 34521656 (overridden on cmd)
Total bytes of delta: -938 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
24 : 145468.dasm (3.33 % of base)
22 : 6974.dasm (1.02 % of base)
16 : 159122.dasm (0.85 % of base)
14 : 156298.dasm (2.95 % of base)
12 : 120703.dasm (0.24 % of base)
12 : 156020.dasm (2.14 % of base)
10 : 108298.dasm (0.73 % of base)
10 : 67006.dasm (0.23 % of base)
8 : 157061.dasm (0.55 % of base)
6 : 80104.dasm (0.65 % of base)
6 : 80458.dasm (0.88 % of base)
6 : 116014.dasm (1.00 % of base)
6 : 120771.dasm (0.13 % of base)
6 : 171.dasm (0.54 % of base)
4 : 115657.dasm (0.42 % of base)
4 : 75360.dasm (0.35 % of base)
4 : 80460.dasm (0.94 % of base)
4 : 157037.dasm (0.26 % of base)
4 : 158054.dasm (0.75 % of base)
4 : 178115.dasm (1.54 % of base)
Top file improvements (bytes):
-74 : 124271.dasm (-11.31 % of base)
-40 : 72075.dasm (-2.82 % of base)
-40 : 126624.dasm (-3.72 % of base)
-40 : 72815.dasm (-1.34 % of base)
-40 : 72857.dasm (-1.34 % of base)
-34 : 134539.dasm (-1.67 % of base)
-34 : 142285.dasm (-1.27 % of base)
-32 : 133759.dasm (-5.95 % of base)
-32 : 197.dasm (-25.81 % of base)
-28 : 101204.dasm (-6.97 % of base)
-28 : 142371.dasm (-6.97 % of base)
-24 : 75350.dasm (-6.78 % of base)
-24 : 101048.dasm (-3.97 % of base)
-24 : 123582.dasm (-3.68 % of base)
-20 : 97652.dasm (-0.52 % of base)
-20 : 165120.dasm (-0.94 % of base)
-20 : 72601.dasm (-10.31 % of base)
-18 : 125168.dasm (-2.89 % of base)
-18 : 170939.dasm (-13.43 % of base)
-14 : 34232.dasm (-2.33 % of base)
60 total files with Code Size differences (38 improved, 22 regressed), 20 unchanged.
Top method regressions (bytes):
24 (3.33 % of base) : 145468.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (FullOpts)
22 (1.02 % of base) : 6974.dasm - System.Text.StringBuilder:Replace(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,int):System.Text.StringBuilder:this (FullOpts)
16 (0.85 % of base) : 159122.dasm - Microsoft.VisualBasic.CompilerServices.StringType:StrLikeBinary(System.String,System.String):ubyte (FullOpts)
14 (2.95 % of base) : 156298.dasm - System.ComponentModel.TypeDescriptor+AttributeProvider+AttributeTypeDescriptor:GetAttributes():System.ComponentModel.AttributeCollection:this (FullOpts)
12 (2.14 % of base) : 156020.dasm - System.ComponentModel.AttributeCollection:FromExisting(System.ComponentModel.AttributeCollection,System.Attribute[]):System.ComponentModel.AttributeCollection (FullOpts)
12 (0.24 % of base) : 120703.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.__Canon]:MoveNext():this (FullOpts)
10 (0.23 % of base) : 67006.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
10 (0.73 % of base) : 108298.dasm - System.IO.FileSystemWatcher+RunningInstance:ProcessEvent(System.IO.FileSystemWatcher+RunningInstance+NotifyEvent,byref,byref,byref):ubyte:this (FullOpts)
8 (0.55 % of base) : 157061.dasm - System.ComponentModel.TypeDescriptor:PipelineMerge(int,System.Collections.ICollection,System.Collections.ICollection,System.Collections.IDictionary):System.Collections.ICollection (FullOpts)
6 (0.65 % of base) : 80104.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitBinaryArithOperatorInstructionAndDowncast(Microsoft.CodeAnalysis.VisualBasic.BoundBinaryOperator):this (FullOpts)
6 (0.88 % of base) : 80458.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation:CheckBinaryBuiltInOperator(System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+OperatorInfo) (FullOpts)
6 (0.13 % of base) : 120771.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)
6 (0.54 % of base) : 171.dasm - System.Text.ISO2022Encoding:GetBytesCP52936(uint,int,uint,int,System.Text.ISO2022Encoding+ISO2022Encoder):int:this (FullOpts)
6 (1.00 % of base) : 116014.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
4 (0.35 % of base) : 75360.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
4 (0.94 % of base) : 80460.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation:CheckUnaryBuiltInOperator(System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+OperatorInfo) (FullOpts)
4 (0.26 % of base) : 157037.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:GetExtenders(System.Collections.ICollection,System.Object,System.Collections.IDictionary):System.ComponentModel.IExtenderProvider[] (FullOpts)
4 (1.54 % of base) : 178115.dasm - System.Net.Http.Headers.BaseHeaderParser:TryParseValue(System.String,System.Object,byref,byref):ubyte:this (FullOpts)
4 (0.42 % of base) : 115657.dasm - System.Net.Sockets.SocketPal:TryCompleteSendTo(System.Net.Sockets.SafeSocketHandle,System.ReadOnlySpan`1[ubyte],System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],byref,byref,byref,int,System.ReadOnlySpan`1[ubyte],byref,byref):ubyte (FullOpts)
4 (0.75 % of base) : 158054.dasm - System.Xml.Linq.Extensions+<GetDescendantNodes>d__22`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
Top method improvements (bytes):
-74 (-11.31 % of base) : 124271.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
-40 (-3.72 % of base) : 126624.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
-40 (-1.34 % of base) : 72857.dasm - System.Data.RBTree`1[int]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-40 (-1.34 % of base) : 72815.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-40 (-2.82 % of base) : 72075.dasm - System.Data.Select:AnalyzeExpression(System.Data.BinaryNode):this (FullOpts)
-34 (-1.67 % of base) : 134539.dasm - Microsoft.CodeAnalysis.Diagnostics.SuppressMessageAttributeState+TargetSymbolResolver:Resolve(byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISymbol]:this (FullOpts)
-34 (-1.27 % of base) : 142285.dasm - System.Net.Cookie:VerifySetDefaults(int,System.Uri,ubyte,System.String,ubyte,ubyte):ubyte:this (FullOpts)
-32 (-5.95 % of base) : 133759.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
-32 (-25.81 % of base) : 197.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
-28 (-6.97 % of base) : 101204.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-28 (-6.97 % of base) : 142371.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-24 (-6.78 % of base) : 75350.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)
-24 (-3.68 % of base) : 123582.dasm - System.IO.Compression.ZipArchiveEntry:WriteLocalFileHeaderAndDataIfNeeded():this (FullOpts)
-24 (-3.97 % of base) : 101048.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
-20 (-0.52 % of base) : 97652.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol+ComClassData:PerformComClassAnalysis(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol):this (FullOpts)
-20 (-10.31 % of base) : 72601.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
-20 (-0.94 % of base) : 165120.dasm - System.Runtime.Serialization.Json.JsonFormatWriterGenerator+CriticalHelper:WriteMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder,System.Runtime.Serialization.DataContracts.ClassDataContract):int:this (FullOpts)
-18 (-2.89 % of base) : 125168.dasm - Roslyn.Utilities.CommandLineUtilities:SplitCommandLineIntoArguments(System.ReadOnlySpan`1[ushort],ubyte,System.Text.StringBuilder,System.Collections.Generic.List`1[System.String],byref) (FullOpts)
-18 (-13.43 % of base) : 170939.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-14 (-2.33 % of base) : 34232.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
Top method regressions (percentages):
24 (3.33 % of base) : 145468.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (FullOpts)
14 (2.95 % of base) : 156298.dasm - System.ComponentModel.TypeDescriptor+AttributeProvider+AttributeTypeDescriptor:GetAttributes():System.ComponentModel.AttributeCollection:this (FullOpts)
12 (2.14 % of base) : 156020.dasm - System.ComponentModel.AttributeCollection:FromExisting(System.ComponentModel.AttributeCollection,System.Attribute[]):System.ComponentModel.AttributeCollection (FullOpts)
4 (1.54 % of base) : 178115.dasm - System.Net.Http.Headers.BaseHeaderParser:TryParseValue(System.String,System.Object,byref,byref):ubyte:this (FullOpts)
22 (1.02 % of base) : 6974.dasm - System.Text.StringBuilder:Replace(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,int):System.Text.StringBuilder:this (FullOpts)
6 (1.00 % of base) : 116014.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
4 (0.94 % of base) : 80460.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation:CheckUnaryBuiltInOperator(System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+OperatorInfo) (FullOpts)
6 (0.88 % of base) : 80458.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation:CheckBinaryBuiltInOperator(System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+OperatorInfo) (FullOpts)
16 (0.85 % of base) : 159122.dasm - Microsoft.VisualBasic.CompilerServices.StringType:StrLikeBinary(System.String,System.String):ubyte (FullOpts)
4 (0.75 % of base) : 158054.dasm - System.Xml.Linq.Extensions+<GetDescendantNodes>d__22`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
10 (0.73 % of base) : 108298.dasm - System.IO.FileSystemWatcher+RunningInstance:ProcessEvent(System.IO.FileSystemWatcher+RunningInstance+NotifyEvent,byref,byref,byref):ubyte:this (FullOpts)
6 (0.65 % of base) : 80104.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitBinaryArithOperatorInstructionAndDowncast(Microsoft.CodeAnalysis.VisualBasic.BoundBinaryOperator):this (FullOpts)
8 (0.55 % of base) : 157061.dasm - System.ComponentModel.TypeDescriptor:PipelineMerge(int,System.Collections.ICollection,System.Collections.ICollection,System.Collections.IDictionary):System.Collections.ICollection (FullOpts)
6 (0.54 % of base) : 171.dasm - System.Text.ISO2022Encoding:GetBytesCP52936(uint,int,uint,int,System.Text.ISO2022Encoding+ISO2022Encoder):int:this (FullOpts)
4 (0.42 % of base) : 115657.dasm - System.Net.Sockets.SocketPal:TryCompleteSendTo(System.Net.Sockets.SafeSocketHandle,System.ReadOnlySpan`1[ubyte],System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],byref,byref,byref,int,System.ReadOnlySpan`1[ubyte],byref,byref):ubyte (FullOpts)
2 (0.38 % of base) : 73006.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:SetSlotUnassigned(int,byref):this (FullOpts)
4 (0.35 % of base) : 75360.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
2 (0.32 % of base) : 158059.dasm - System.Xml.Linq.Extensions+<GetDescendants>d__23`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
4 (0.26 % of base) : 157037.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:GetExtenders(System.Collections.ICollection,System.Object,System.Collections.IDictionary):System.ComponentModel.IExtenderProvider[] (FullOpts)
12 (0.24 % of base) : 120703.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.__Canon]:MoveNext():this (FullOpts)
Top method improvements (percentages):
-32 (-25.81 % of base) : 197.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
-18 (-13.43 % of base) : 170939.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-74 (-11.31 % of base) : 124271.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
-20 (-10.31 % of base) : 72601.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
-28 (-6.97 % of base) : 101204.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-28 (-6.97 % of base) : 142371.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-24 (-6.78 % of base) : 75350.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)
-12 (-6.59 % of base) : 126413.dasm - Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__processSlashes|43_0(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],byref) (FullOpts)
-6 (-6.00 % of base) : 158200.dasm - System.Xml.Linq.XObject:NotifyChanged(System.Object,System.Xml.Linq.XObjectChangeEventArgs):ubyte:this (FullOpts)
-6 (-6.00 % of base) : 158201.dasm - System.Xml.Linq.XObject:NotifyChanging(System.Object,System.Xml.Linq.XObjectChangeEventArgs):ubyte:this (FullOpts)
-32 (-5.95 % of base) : 133759.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
-4 (-5.56 % of base) : 158202.dasm - System.Xml.Linq.XObject:SkipNotify():ubyte:this (FullOpts)
-8 (-5.41 % of base) : 121379.dasm - System.Transactions.CheapUnfairReaderWriterLock:EnterWriteLock():this (FullOpts)
-4 (-4.76 % of base) : 157984.dasm - System.Xml.Linq.XObject:get_BaseUri():System.String:this (FullOpts)
-6 (-4.23 % of base) : 171305.dasm - System.Globalization.FormatProvider+Number:RoundNumber(byref,int) (FullOpts)
-10 (-4.07 % of base) : 124724.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
-8 (-4.00 % of base) : 167517.dasm - System.Configuration.Internal.WriteFileContext:ReplaceFile(System.String,System.String) (FullOpts)
-24 (-3.97 % of base) : 101048.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
-8 (-3.85 % of base) : 170167.dasm - System.Configuration.Internal.WriteFileContext:ReplaceFile(System.String,System.String):this (FullOpts)
-40 (-3.72 % of base) : 126624.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
libraries.pmi.linux.arm.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 49852844 (overridden on cmd)
Total bytes of diff: 49850788 (overridden on cmd)
Total bytes of delta: -2056 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
42 : 263951.dasm (1.20 % of base)
42 : 175535.dasm (1.20 % of base)
40 : 115882.dasm (2.64 % of base)
24 : 70.dasm (0.41 % of base)
20 : 240421.dasm (2.45 % of base)
20 : 79591.dasm (0.67 % of base)
20 : 100102.dasm (1.40 % of base)
18 : 181260.dasm (3.41 % of base)
18 : 269624.dasm (1.42 % of base)
18 : 55277.dasm (2.03 % of base)
16 : 56835.dasm (0.58 % of base)
14 : 249075.dasm (0.16 % of base)
14 : 242265.dasm (2.12 % of base)
14 : 253836.dasm (0.69 % of base)
12 : 100289.dasm (3.37 % of base)
12 : 181536.dasm (0.76 % of base)
12 : 189280.dasm (1.72 % of base)
10 : 229979.dasm (0.82 % of base)
10 : 167808.dasm (0.82 % of base)
8 : 249916.dasm (0.41 % of base)
Top file improvements (bytes):
-272 : 235993.dasm (-30.98 % of base)
-154 : 8320.dasm (-18.78 % of base)
-86 : 245988.dasm (-3.20 % of base)
-70 : 195478.dasm (-6.97 % of base)
-58 : 8268.dasm (-11.98 % of base)
-42 : 89261.dasm (-1.45 % of base)
-42 : 89200.dasm (-1.45 % of base)
-38 : 8269.dasm (-11.66 % of base)
-38 : 178395.dasm (-4.19 % of base)
-36 : 8270.dasm (-6.67 % of base)
-36 : 236673.dasm (-20.45 % of base)
-34 : 184046.dasm (-3.76 % of base)
-32 : 646.dasm (-26.67 % of base)
-28 : 250253.dasm (-1.84 % of base)
-28 : 146551.dasm (-6.64 % of base)
-28 : 179413.dasm (-6.64 % of base)
-28 : 218077.dasm (-1.24 % of base)
-26 : 682.dasm (-1.50 % of base)
-26 : 216977.dasm (-2.88 % of base)
-26 : 48791.dasm (-1.62 % of base)
71 total files with Code Size differences (42 improved, 29 regressed), 20 unchanged.
Top method regressions (bytes):
42 (1.20 % of base) : 263951.dasm - System.Configuration.ConfigurationElement:Unmerge(System.Configuration.ConfigurationElement,System.Configuration.ConfigurationElement,int):this (FullOpts)
42 (1.20 % of base) : 175535.dasm - System.Configuration.ConfigurationElement:Unmerge(System.Configuration.ConfigurationElement,System.Configuration.ConfigurationElement,int):this (FullOpts)
40 (2.64 % of base) : 115882.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
24 (0.41 % of base) : 70.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (FullOpts)
20 (0.67 % of base) : 79591.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:ComputeImplementationForInterfaceMember(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,byref):Microsoft.CodeAnalysis.CSharp.Symbol (FullOpts)
20 (2.45 % of base) : 240421.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (FullOpts)
20 (1.40 % of base) : 100102.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
18 (2.03 % of base) : 55277.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitObjectElementInitializer>g__visitMemberInitializer|169_0(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator,ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
18 (3.41 % of base) : 181260.dasm - System.ComponentModel.AttributeCollection:FromExisting(System.ComponentModel.AttributeCollection,System.Attribute[]):System.ComponentModel.AttributeCollection (FullOpts)
18 (1.42 % of base) : 269624.dasm - System.IO.FileSystemWatcher+RunningInstance:ProcessEvent(System.IO.FileSystemWatcher+RunningInstance+NotifyEvent,byref,byref,byref):ubyte:this (FullOpts)
16 (0.58 % of base) : 56835.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitArgumentsAndCaptureReceiverIfNeeded(byref,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (FullOpts)
14 (0.69 % of base) : 253836.dasm - Microsoft.VisualBasic.VBCodeGenerator:GenerateProperty(System.CodeDom.CodeMemberProperty,System.CodeDom.CodeTypeDeclaration):this (FullOpts)
14 (2.12 % of base) : 242265.dasm - System.Net.Sockets.SocketAsyncContext:ReceiveFromAsync(System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],int,System.Memory`1[ubyte],byref,byref,byref,System.Action`4[int,System.Memory`1[ubyte],int,int]):int:this (FullOpts)
14 (0.16 % of base) : 249075.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.__Canon]:MoveNext():this (FullOpts)
12 (0.76 % of base) : 181536.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:GetExtenders(System.Collections.ICollection,System.Object,System.Collections.IDictionary):System.ComponentModel.IExtenderProvider[] (FullOpts)
12 (1.72 % of base) : 189280.dasm - System.Runtime.Serialization.SchemaHelper:AddSchemaImport(System.String,System.Xml.Schema.XmlSchema) (FullOpts)
12 (3.37 % of base) : 100289.dasm - System.Xml.Ucs4Decoder:Convert(ubyte[],int,int,ushort[],int,int,ubyte,byref,byref,byref):this (FullOpts)
10 (0.82 % of base) : 229979.dasm - System.Reflection.TypeLoading.Assignability:CanCastTo(System.Type,System.Type,System.Reflection.TypeLoading.CoreTypes):ubyte (FullOpts)
10 (0.82 % of base) : 167808.dasm - System.Reflection.TypeLoading.Assignability:CanCastTo(System.Type,System.Type,System.Reflection.TypeLoading.CoreTypes):ubyte (FullOpts)
8 (1.97 % of base) : 54923.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
Top method improvements (bytes):
-272 (-30.98 % of base) : 235993.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
-154 (-18.78 % of base) : 8320.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (FullOpts)
-86 (-3.20 % of base) : 245988.dasm - System.Net.Http.HttpConnectionPool+<HandleHttp11Downgrade>d__82:MoveNext():this (FullOpts)
-70 (-6.97 % of base) : 195478.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
-58 (-11.98 % of base) : 8268.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:toFormattedString(System.String,System.Object):System.String (FullOpts)
-42 (-1.45 % of base) : 89200.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-42 (-1.45 % of base) : 89261.dasm - System.Data.RBTree`1[ubyte]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-38 (-4.19 % of base) : 178395.dasm - Internal.TypeSystem.Ecma.EcmaMethod:GetImportAttributesFromBestFitMappingAttribute(System.Reflection.Metadata.CustomAttributeHandleCollection):short:this (FullOpts)
-38 (-11.66 % of base) : 8269.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:isNumber(System.Object):ubyte (FullOpts)
-36 (-20.45 % of base) : 236673.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.TypeTable+KeyPair`2[System.__Canon,System.Nullable`1[int]]:Equals(System.Object):ubyte:this (FullOpts)
-36 (-6.67 % of base) : 8270.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:isInteger(System.Object):ubyte (FullOpts)
-34 (-3.76 % of base) : 184046.dasm - ILCompiler.AssemblyExtensions:HasOptimizationsDisabled(Internal.TypeSystem.Ecma.EcmaAssembly):ubyte (FullOpts)
-32 (-26.67 % of base) : 646.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
-28 (-1.24 % of base) : 218077.dasm - Microsoft.CodeAnalysis.Diagnostics.SuppressMessageAttributeState+TargetSymbolResolver:Resolve(byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISymbol]:this (FullOpts)
-28 (-1.84 % of base) : 250253.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindingScore(System.Reflection.ParameterInfo[],int[],System.Type[],ubyte,int):int:this (FullOpts)
-28 (-6.64 % of base) : 146551.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-28 (-6.64 % of base) : 179413.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-26 (-1.62 % of base) : 48791.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
-26 (-2.88 % of base) : 216977.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
-26 (-1.50 % of base) : 682.dasm - System.Text.ISO2022Encoding:GetBytesCP52936(uint,int,uint,int,System.Text.ISO2022Encoding+ISO2022Encoder):int:this (FullOpts)
Top method regressions (percentages):
18 (3.41 % of base) : 181260.dasm - System.ComponentModel.AttributeCollection:FromExisting(System.ComponentModel.AttributeCollection,System.Attribute[]):System.ComponentModel.AttributeCollection (FullOpts)
12 (3.37 % of base) : 100289.dasm - System.Xml.Ucs4Decoder:Convert(ubyte[],int,int,ushort[],int,int,ubyte,byref,byref,byref):this (FullOpts)
2 (2.70 % of base) : 149077.dasm - Microsoft.Build.Internal.ProjectXmlUtilities:GetAttributeValue(Microsoft.Build.Construction.XmlElementWithLocation,System.String):System.String (FullOpts)
40 (2.64 % of base) : 115882.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
2 (2.63 % of base) : 103061.dasm - System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
20 (2.45 % of base) : 240421.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (FullOpts)
14 (2.12 % of base) : 242265.dasm - System.Net.Sockets.SocketAsyncContext:ReceiveFromAsync(System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],int,System.Memory`1[ubyte],byref,byref,byref,System.Action`4[int,System.Memory`1[ubyte],int,int]):int:this (FullOpts)
18 (2.03 % of base) : 55277.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitObjectElementInitializer>g__visitMemberInitializer|169_0(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator,ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
4 (1.98 % of base) : 185142.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DelayLoadMethodImport:CompareToImpl(ILCompiler.DependencyAnalysis.ISortableNode,ILCompiler.DependencyAnalysis.CompilerComparer):int:this (FullOpts)
4 (1.98 % of base) : 185134.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.PrecodeMethodImport:CompareToImpl(ILCompiler.DependencyAnalysis.ISortableNode,ILCompiler.DependencyAnalysis.CompilerComparer):int:this (FullOpts)
8 (1.97 % of base) : 54923.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
4 (1.80 % of base) : 246909.dasm - System.Net.Http.Headers.ObjectCollection`1[System.__Canon]:Contains(System.__Canon):ubyte:this (FullOpts)
4 (1.79 % of base) : 86558.dasm - System.Xml.XmlBoundElement:CloneNode(ubyte):System.Xml.XmlNode:this (FullOpts)
12 (1.72 % of base) : 189280.dasm - System.Runtime.Serialization.SchemaHelper:AddSchemaImport(System.String,System.Xml.Schema.XmlSchema) (FullOpts)
18 (1.42 % of base) : 269624.dasm - System.IO.FileSystemWatcher+RunningInstance:ProcessEvent(System.IO.FileSystemWatcher+RunningInstance+NotifyEvent,byref,byref,byref):ubyte:this (FullOpts)
20 (1.40 % of base) : 100102.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
42 (1.20 % of base) : 263951.dasm - System.Configuration.ConfigurationElement:Unmerge(System.Configuration.ConfigurationElement,System.Configuration.ConfigurationElement,int):this (FullOpts)
42 (1.20 % of base) : 175535.dasm - System.Configuration.ConfigurationElement:Unmerge(System.Configuration.ConfigurationElement,System.Configuration.ConfigurationElement,int):this (FullOpts)
4 (0.94 % of base) : 181721.dasm - System.ComponentModel.TypeDescriptor+AttributeProvider+AttributeTypeDescriptor:GetAttributes():System.ComponentModel.AttributeCollection:this (FullOpts)
2 (0.85 % of base) : 181852.dasm - System.ComponentModel.BindingList`1[System.__Canon]:AddNewCore():System.Object:this (FullOpts)
Top method improvements (percentages):
-272 (-30.98 % of base) : 235993.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
-24 (-27.91 % of base) : 185919.dasm - ILCompiler.IBC.IBCProfileParser+IBCBlobKey:Equals(System.Object):ubyte:this (FullOpts)
-32 (-26.67 % of base) : 646.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
-20 (-20.83 % of base) : 111327.dasm - System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
-36 (-20.45 % of base) : 236673.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.TypeTable+KeyPair`2[System.__Canon,System.Nullable`1[int]]:Equals(System.Object):ubyte:this (FullOpts)
-22 (-20.00 % of base) : 236678.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.TypeTable+KeyPair`2[ubyte,System.Nullable`1[int]]:Equals(System.Object):ubyte:this (FullOpts)
-154 (-18.78 % of base) : 8320.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (FullOpts)
-18 (-16.36 % of base) : 47403.dasm - Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+IdOfIncompleteAction:Equals(System.Object):ubyte:this (FullOpts)
-18 (-14.29 % of base) : 197024.dasm - System.Data.Odbc.OdbcParameter:GetParameterScale(System.Object):ubyte:this (FullOpts)
-18 (-13.85 % of base) : 179742.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-18 (-12.68 % of base) : 8284.dasm - Microsoft.FSharp.Core.PrintfImpl+Integer:eliminateNative(System.Object):System.Object (FullOpts)
-58 (-11.98 % of base) : 8268.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:toFormattedString(System.String,System.Object):System.String (FullOpts)
-20 (-11.76 % of base) : 89712.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
-38 (-11.66 % of base) : 8269.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:isNumber(System.Object):ubyte (FullOpts)
-22 (-10.48 % of base) : 47396.dasm - Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+EventUID:Equals(System.Object):ubyte:this (FullOpts)
-16 (-10.39 % of base) : 236804.dasm - R2RDump.Disassembler:TryParseAbsoluteAddress(System.String,byref,byref,byref):ubyte:this (FullOpts)
-14 (-7.37 % of base) : 81043.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
-14 (-7.37 % of base) : 86663.dasm - System.Xml.XmlDataDocument:ReplaceInitialChildText(System.Xml.XmlNode,System.String):this (FullOpts)
-70 (-6.97 % of base) : 195478.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
-18 (-6.87 % of base) : 170450.dasm - System.ComponentModel.Composition.Hosting.ScopingExtensions:ContainsPartMetadata[ubyte](System.ComponentModel.Composition.Primitives.ComposablePartDefinition,System.String,ubyte):ubyte (FullOpts)
libraries_tests.run.linux.arm.Release.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 243535854 (overridden on cmd)
Total bytes of diff: 243522006 (overridden on cmd)
Total bytes of delta: -13848 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
776 : 42526.dasm (22.57 % of base)
106 : 230459.dasm (9.76 % of base)
70 : 111041.dasm (1.77 % of base)
70 : 667023.dasm (2.48 % of base)
68 : 676091.dasm (1.63 % of base)
66 : 698560.dasm (1.70 % of base)
60 : 660981.dasm (1.01 % of base)
58 : 557163.dasm (3.12 % of base)
58 : 403565.dasm (3.12 % of base)
58 : 90096.dasm (3.74 % of base)
46 : 182827.dasm (0.98 % of base)
46 : 665948.dasm (1.20 % of base)
46 : 182100.dasm (0.98 % of base)
46 : 140264.dasm (2.31 % of base)
46 : 153770.dasm (2.31 % of base)
46 : 183654.dasm (0.98 % of base)
42 : 122756.dasm (1.48 % of base)
40 : 431279.dasm (3.46 % of base)
40 : 90357.dasm (2.33 % of base)
36 : 176800.dasm (3.65 % of base)
Top file improvements (bytes):
-202 : 188144.dasm (-0.89 % of base)
-150 : 76347.dasm (-2.37 % of base)
-112 : 673813.dasm (-5.88 % of base)
-110 : 63131.dasm (-3.03 % of base)
-102 : 91544.dasm (-2.87 % of base)
-90 : 77178.dasm (-3.16 % of base)
-88 : 179379.dasm (-4.68 % of base)
-80 : 178150.dasm (-2.05 % of base)
-80 : 361615.dasm (-4.03 % of base)
-72 : 470955.dasm (-1.47 % of base)
-70 : 102039.dasm (-6.85 % of base)
-68 : 672069.dasm (-1.89 % of base)
-64 : 76327.dasm (-1.69 % of base)
-58 : 305080.dasm (-1.50 % of base)
-52 : 173106.dasm (-4.38 % of base)
-52 : 519565.dasm (-3.72 % of base)
-52 : 172961.dasm (-1.51 % of base)
-48 : 530570.dasm (-6.90 % of base)
-46 : 56086.dasm (-3.90 % of base)
-44 : 550990.dasm (-2.82 % of base)
86 total files with Code Size differences (48 improved, 38 regressed), 20 unchanged.
Top method regressions (bytes):
776 (22.57 % of base) : 42526.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:ClassifyExplicitBuiltInOnlyConversion(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,byref,ubyte):Microsoft.CodeAnalysis.CSharp.Conversion:this (Tier1)
106 (9.76 % of base) : 230459.dasm - System.Text.RegularExpressions.RegexNode:ComputeMaxLength():System.Nullable`1[int]:this (Tier0-FullOpts)
70 (1.77 % of base) : 111041.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)
70 (2.48 % of base) : 667023.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:AreParameterAnnotationsCompatible(ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int,ubyte):ubyte (Tier1)
68 (1.63 % of base) : 676091.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 (Tier1)
66 (1.70 % of base) : 698560.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbolBase:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.String,uint,ubyte,ubyte,ubyte,ubyte,ubyte,System.String,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax],Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
60 (1.01 % of base) : 660981.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetAttribute(Microsoft.CodeAnalysis.CSharp.BoundAttribute,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:this (Tier1)
58 (3.74 % of base) : 90096.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbolBase:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.String,uint,ubyte,ubyte,ubyte,ubyte,ubyte,System.String,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax],Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
58 (3.12 % of base) : 557163.dasm - System.Net.Http.HttpConnectionPool:CheckForHttp11ConnectionInjection():this (Tier1)
58 (3.12 % of base) : 403565.dasm - System.Net.Http.HttpConnectionPool:CheckForHttp11ConnectionInjection():this (Tier1)
46 (2.31 % of base) : 140264.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier0-FullOpts)
46 (2.31 % of base) : 153770.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier0-FullOpts)
46 (0.98 % of base) : 182827.dasm - System.Reflection.PortableExecutable.PEHeaders:.ctor(System.IO.Stream,int,ubyte):this (Tier1)
46 (0.98 % of base) : 182100.dasm - System.Reflection.PortableExecutable.PEHeaders:.ctor(System.IO.Stream,int,ubyte):this (Tier1)
46 (0.98 % of base) : 183654.dasm - System.Reflection.PortableExecutable.PEHeaders:.ctor(System.IO.Stream,int,ubyte):this (Tier1)
46 (1.20 % of base) : 665948.dasm - System.Text.RegularExpressions.Tests.GetGroupNamesTests:GroupNamesAndNumbers(System.String,System.String,System.String[],int[],System.String[],int):this (Tier0-FullOpts)
42 (1.48 % of base) : 122756.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:CreateFactory(System.Type,System.Type[]):Microsoft.Extensions.DependencyInjection.ObjectFactory (Tier1)
40 (2.33 % of base) : 90357.dasm - Microsoft.Interop.StatelessMarshallerShapeHelper+<>c__DisplayClass3_0:<GetStatelessGetPinnableReference>b__0(Microsoft.CodeAnalysis.IMethodSymbol):ubyte:this (Tier1)
40 (3.46 % of base) : 431279.dasm - System.Runtime.Loader.AssemblyLoadContext:GetFirstResolvedAssemblyFromResolvingEvent(System.Reflection.AssemblyName):System.Reflection.Assembly:this (Tier1)
36 (3.65 % of base) : 176800.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:<EmitInstanceCallExpression>g__determineEmitReceiverStrategy|152_0(Microsoft.CodeAnalysis.CSharp.BoundCall,byref,byref):int:this (Tier1)
Top method improvements (bytes):
-202 (-0.89 % of base) : 188144.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier0-FullOpts)
-150 (-2.37 % of base) : 76347.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetAttribute(Microsoft.CodeAnalysis.CSharp.BoundAttribute,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:this (Tier1)
-112 (-5.88 % of base) : 673813.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (Tier1)
-110 (-3.03 % of base) : 63131.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseForStatement(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AttributeListSyntax]):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ForStatementSyntax:this (Tier1)
-102 (-2.87 % of base) : 91544.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseForStatement(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AttributeListSyntax]):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ForStatementSyntax:this (Tier1)
-90 (-3.16 % of base) : 77178.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:ClassifyExplicitBuiltInOnlyConversion(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,byref,ubyte):Microsoft.CodeAnalysis.CSharp.Conversion:this (Tier1)
-88 (-4.68 % of base) : 179379.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (Tier1)
-80 (-2.05 % of base) : 178150.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:DefineLocal(Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol,Microsoft.CodeAnalysis.SyntaxNode):Microsoft.CodeAnalysis.CodeGen.LocalDefinition:this (Tier1)
-80 (-4.03 % of base) : 361615.dasm - System.SpanTests.ReadOnlySpanTests:TestMatchMany_Char() (Tier0-FullOpts)
-72 (-1.47 % of base) : 470955.dasm - System.Reflection.Metadata.Decoding.Tests.CustomAttributeDecoderTests:TestCustomAttributeDecoderUsingReflection():this (Tier0-FullOpts)
-70 (-6.85 % of base) : 102039.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (Tier1)
-68 (-1.89 % of base) : 672069.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseForStatement(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AttributeListSyntax]):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ForStatementSyntax:this (Tier1)
-64 (-1.69 % of base) : 76327.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)
-58 (-1.50 % of base) : 305080.dasm - System.Globalization.Tests.GraphemeBreakTest:RunStringInfoTestCase(System.String,System.Range[]) (Tier0-FullOpts)
-52 (-1.51 % of base) : 172961.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindFieldAccess(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
-52 (-4.38 % of base) : 173106.dasm - Microsoft.CodeAnalysis.CSharp.Binder:FoldConstantNumericConversion(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.ConstantValue:this (Tier1)
-52 (-3.72 % of base) : 519565.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetTypeTokenWorkerNoLock(System.Type,ubyte):int:this (Tier1)
-48 (-6.90 % of base) : 530570.dasm - System.Reflection.NullabilityInfoContext:TryUpdateGenericParameterNullability(System.Reflection.NullabilityInfo,System.Type,System.Type):ubyte:this (Tier1)
-46 (-3.90 % of base) : 56086.dasm - Microsoft.CodeAnalysis.CSharp.Binder:FoldConstantNumericConversion(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.ConstantValue:this (Tier1)
-44 (-2.82 % of base) : 550990.dasm - System.Reflection.Emit.SignatureHelper:AddOneArgTypeHelperWorker(System.Type,ubyte):this (Tier1)
Top method regressions (percentages):
776 (22.57 % of base) : 42526.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:ClassifyExplicitBuiltInOnlyConversion(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,byref,ubyte):Microsoft.CodeAnalysis.CSharp.Conversion:this (Tier1)
106 (9.76 % of base) : 230459.dasm - System.Text.RegularExpressions.RegexNode:ComputeMaxLength():System.Nullable`1[int]:this (Tier0-FullOpts)
24 (7.95 % of base) : 432766.dasm - System.Xml.Serialization.StructModel:CheckPropertyRead(System.Reflection.PropertyInfo):ubyte (Tier1)
6 (6.38 % of base) : 67468.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:ShouldCheckRequiredMembers(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):ubyte (Tier1)
20 (5.75 % of base) : 14822.dasm - System.Text.RegularExpressions.RegexNode:TryGetJoinableLengthCheckChildRange(int,byref,byref):ubyte:this (Tier0-FullOpts)
24 (5.48 % of base) : 673833.dasm - Microsoft.CodeAnalysis.Compilation:get_HasStrongName():ubyte:this (Tier1)
24 (5.24 % of base) : 530651.dasm - System.Reflection.NullabilityInfoContext:TryPopulateNullabilityInfo(System.Reflection.NullabilityInfo,System.Reflection.NullabilityInfoContext+NullableAttributeStateParser,byref):ubyte (Tier1)
8 (5.06 % of base) : 55692.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
8 (5.06 % of base) : 671986.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
8 (5.06 % of base) : 88126.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
8 (5.00 % of base) : 674939.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyVersionAttributeSetting():System.Version:this (Tier1)
8 (5.00 % of base) : 55689.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyVersionAttributeSetting():System.Version:this (Tier1)
8 (5.00 % of base) : 88123.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyVersionAttributeSetting():System.Version:this (Tier1)
14 (4.96 % of base) : 122701.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitExpressionAsType(System.Linq.Expressions.Expression,System.Type,int):this (Tier1)
8 (4.88 % of base) : 53177.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
8 (4.88 % of base) : 665264.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
8 (4.88 % of base) : 87947.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
10 (4.46 % of base) : 381065.dasm - System.Net.NameResolutionTelemetry:GetHostnameFromStateObject(System.Object):System.String (Tier1)
26 (4.39 % of base) : 396691.dasm - System.Net.Sockets.SocketAsyncContext:ReceiveFrom(System.Span`1[ubyte],byref,System.Memory`1[ubyte],byref,int,byref):int:this (Tier1)
4 (4.35 % of base) : 578212.dasm - System.Collections.Generic.List`1+Enumerator[ubyte]:MoveNext():ubyte:this (Tier1)
Top method improvements (percentages):
-24 (-32.43 % of base) : 215412.dasm - System.Byte:Equals(System.Object):ubyte:this (Tier1)
-24 (-32.43 % of base) : 286856.dasm - System.Char:Equals(System.Object):ubyte:this (Tier1)
-24 (-32.43 % of base) : 459840.dasm - System.UInt16:Equals(System.Object):ubyte:this (Tier1)
-24 (-32.43 % of base) : 213559.dasm - System.UInt32:Equals(System.Object):ubyte:this (Tier1)
-24 (-30.77 % of base) : 644200.dasm - System.Int16:Equals(System.Object):ubyte:this (Tier1)
-24 (-30.77 % of base) : 644205.dasm - System.SByte:Equals(System.Object):ubyte:this (Tier1)
-22 (-30.56 % of base) : 493338.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)
-22 (-30.56 % of base) : 507470.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)
-22 (-30.56 % of base) : 284925.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)
-22 (-30.56 % of base) : 30558.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)
-22 (-30.56 % of base) : 634066.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)
-22 (-30.56 % of base) : 663686.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)
-22 (-30.56 % of base) : 460317.dasm - System.Byte:Equals(System.Object):ubyte:this (Tier1)
-22 (-30.56 % of base) : 493344.dasm - System.Char:Equals(System.Object):ubyte:this (Tier1)
-22 (-30.56 % of base) : 201367.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-22 (-30.56 % of base) : 435989.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-22 (-30.56 % of base) : 508334.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-22 (-30.56 % of base) : 517706.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-22 (-30.56 % of base) : 224031.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-22 (-30.56 % of base) : 575730.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
librariestestsnotieredcompilation.run.linux.arm.Release.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 94520720 (overridden on cmd)
Total bytes of diff: 94517554 (overridden on cmd)
Total bytes of delta: -3166 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
46 : 49186.dasm (2.31 % of base)
46 : 43492.dasm (2.31 % of base)
44 : 23733.dasm (3.46 % of base)
32 : 88706.dasm (0.95 % of base)
30 : 214538.dasm (0.45 % of base)
30 : 24411.dasm (0.48 % of base)
24 : 221.dasm (0.41 % of base)
22 : 302621.dasm (0.83 % of base)
20 : 184561.dasm (0.57 % of base)
20 : 30996.dasm (0.74 % of base)
20 : 89379.dasm (1.40 % of base)
20 : 4136.dasm (2.87 % of base)
18 : 78112.dasm (3.56 % of base)
18 : 18075.dasm (0.17 % of base)
18 : 33380.dasm (1.42 % of base)
16 : 54983.dasm (0.67 % of base)
14 : 149680.dasm (0.16 % of base)
14 : 23737.dasm (1.53 % of base)
14 : 5207.dasm (0.37 % of base)
14 : 63808.dasm (0.71 % of base)
Top file improvements (bytes):
-224 : 24936.dasm (-29.40 % of base)
-138 : 116843.dasm (-17.16 % of base)
-82 : 201913.dasm (-8.58 % of base)
-42 : 213377.dasm (-5.22 % of base)
-42 : 90644.dasm (-1.45 % of base)
-42 : 91053.dasm (-1.45 % of base)
-36 : 201272.dasm (-5.06 % of base)
-36 : 208778.dasm (-4.63 % of base)
-36 : 208949.dasm (-4.68 % of base)
-32 : 94842.dasm (-26.67 % of base)
-28 : 59999.dasm (-1.84 % of base)
-28 : 152437.dasm (-6.64 % of base)
-28 : 149450.dasm (-6.64 % of base)
-28 : 152603.dasm (-6.64 % of base)
-26 : 183355.dasm (-0.44 % of base)
-26 : 230812.dasm (-1.50 % of base)
-26 : 31555.dasm (-2.98 % of base)
-24 : 194419.dasm (-31.58 % of base)
-24 : 90960.dasm (-1.63 % of base)
-24 : 264884.dasm (-0.41 % of base)
71 total files with Code Size differences (38 improved, 33 regressed), 20 unchanged.
Top method regressions (bytes):
46 (2.31 % of base) : 49186.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
46 (2.31 % of base) : 43492.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
44 (3.46 % of base) : 23733.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)
32 (0.95 % of base) : 88706.dasm - System.Configuration.ConfigurationElement:Unmerge(System.Configuration.ConfigurationElement,System.Configuration.ConfigurationElement,int):this (FullOpts)
30 (0.45 % of base) : 214538.dasm - Tests.System.TimeProviderTests+<RunWaitAsyncTests>d__14:MoveNext():this (FullOpts)
30 (0.48 % of base) : 24411.dasm - Tests.System.TimeProviderTests+<RunWaitAsyncTests>d__14:MoveNext():this (FullOpts)
24 (0.41 % of base) : 221.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (FullOpts)
22 (0.83 % of base) : 302621.dasm - TaskCoverage.Coverage+<Task_WhenAny_TwoTasks_WakesOnFirstCompletion>d__8:MoveNext():this (FullOpts)
20 (0.74 % of base) : 30996.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:VisitIsPatternExpression(Microsoft.CodeAnalysis.CSharp.BoundIsPatternExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
20 (0.57 % of base) : 184561.dasm - System.Reflection.Tests.TypeTests:TestArrayGetMethodsResultEqualsFilteredGetMethod() (FullOpts)
20 (2.87 % of base) : 4136.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (FullOpts)
20 (1.40 % of base) : 89379.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
18 (3.56 % of base) : 78112.dasm - System.ComponentModel.AttributeCollection:FromExisting(System.ComponentModel.AttributeCollection,System.Attribute[]):System.ComponentModel.AttributeCollection (FullOpts)
18 (0.17 % of base) : 18075.dasm - System.Globalization.Tests.InvariantModeTests:TestCultureData(System.String):this (FullOpts)
18 (1.42 % of base) : 33380.dasm - System.IO.FileSystemWatcher+RunningInstance:ProcessEvent(System.IO.FileSystemWatcher+RunningInstance+NotifyEvent,byref,byref,byref):ubyte:this (FullOpts)
16 (0.67 % of base) : 54983.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitArgumentsAndCaptureReceiverIfNeeded(byref,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref,Microsoft.CodeAnalysis.CSharp.BoundExpression):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (FullOpts)
14 (0.37 % of base) : 5207.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
14 (1.53 % of base) : 23737.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getFormatAndCloseBrace|433_1(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)
14 (0.71 % of base) : 63808.dasm - Microsoft.VisualBasic.VBCodeGenerator:GenerateProperty(System.CodeDom.CodeMemberProperty,System.CodeDom.CodeTypeDeclaration):this (FullOpts)
14 (0.16 % of base) : 149680.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.__Canon]:MoveNext():this (FullOpts)
Top method improvements (bytes):
-224 (-29.40 % of base) : 24936.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
-138 (-17.16 % of base) : 116843.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (FullOpts)
-82 (-8.58 % of base) : 201913.dasm - System.Tests.UInt16Tests:EqualsTest(ushort,System.Object,ubyte) (FullOpts)
-42 (-1.45 % of base) : 91053.dasm - System.Data.RBTree`1[int]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-42 (-1.45 % of base) : 90644.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-42 (-5.22 % of base) : 213377.dasm - System.Tests.CharTests:EqualsTest(ushort,System.Object,ubyte) (FullOpts)
-36 (-5.06 % of base) : 201272.dasm - System.Tests.Int16Tests:EqualsTest(short,System.Object,ubyte) (FullOpts)
-36 (-4.68 % of base) : 208949.dasm - System.Tests.Int32Tests:EqualsTest(int,System.Object,ubyte) (FullOpts)
-36 (-4.63 % of base) : 208778.dasm - System.Tests.SByteTests:EqualsTest(byte,System.Object,ubyte) (FullOpts)
-32 (-26.67 % of base) : 94842.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
-28 (-1.84 % of base) : 59999.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindingScore(System.Reflection.ParameterInfo[],int[],System.Type[],ubyte,int):int:this (FullOpts)
-28 (-6.64 % of base) : 152437.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-28 (-6.64 % of base) : 149450.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-28 (-6.64 % of base) : 152603.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-26 (-2.98 % of base) : 31555.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
-26 (-0.44 % of base) : 183355.dasm - System.Reflection.Metadata.Decoding.Tests.SignatureDecoderTests:SimpleSignatureProviderCoverage():this (FullOpts)
-26 (-1.50 % of base) : 230812.dasm - System.Text.ISO2022Encoding:GetBytesCP52936(uint,int,uint,int,System.Text.ISO2022Encoding+ISO2022Encoder):int:this (FullOpts)
-24 (-1.63 % of base) : 90960.dasm - System.Data.Select:AnalyzeExpression(System.Data.BinaryNode):this (FullOpts)
-24 (-31.58 % of base) : 194419.dasm - System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs:Equals(System.Object):ubyte:this (FullOpts)
-24 (-0.41 % of base) : 264884.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:TestTrySkipPartial(System.String,ubyte) (FullOpts)
Top method regressions (percentages):
8 (5.13 % of base) : 35998.dasm - Stashbox.Registration.SelectionRules.NameRule:IsValidForCurrentRequest(Stashbox.Resolution.TypeInformation,Stashbox.Registration.ServiceRegistrations.ServiceRegistration,Stashbox.Resolution.ResolutionContext,byref):ubyte:this (FullOpts)
18 (3.56 % of base) : 78112.dasm - System.ComponentModel.AttributeCollection:FromExisting(System.ComponentModel.AttributeCollection,System.Attribute[]):System.ComponentModel.AttributeCollection (FullOpts)
44 (3.46 % of base) : 23733.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)
12 (3.37 % of base) : 20855.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
12 (3.37 % of base) : 94864.dasm - System.Xml.Ucs4Decoder:Convert(ubyte[],int,int,ushort[],int,int,ubyte,byref,byref,byref):this (FullOpts)
20 (2.87 % of base) : 4136.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (FullOpts)
2 (2.63 % of base) : 168127.dasm - System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
46 (2.31 % of base) : 49186.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
46 (2.31 % of base) : 43492.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
8 (1.97 % of base) : 50521.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
8 (1.97 % of base) : 44640.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
8 (1.97 % of base) : 54365.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
4 (1.80 % of base) : 148625.dasm - System.Net.Http.Headers.ObjectCollection`1[System.__Canon]:Contains(System.__Canon):ubyte:this (FullOpts)
2 (1.75 % of base) : 96752.dasm - System.Data.EnumerableRowCollectionExtensionsTests+<>c:<Where_SuccessfullyFindRow>b__3_0(System.Data.DataRow):ubyte:this (FullOpts)
12 (1.72 % of base) : 196669.dasm - System.Runtime.Serialization.SchemaHelper:AddSchemaImport(System.String,System.Xml.Schema.XmlSchema) (FullOpts)
8 (1.57 % of base) : 187497.dasm - System.Tests.ConvertToStringTests:FromUInt32Array() (FullOpts)
14 (1.53 % of base) : 23737.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getFormatAndCloseBrace|433_1(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)
4 (1.50 % of base) : 188609.dasm - System.Tests.BitConverterSpan:ToInt32(int,ubyte[]):this (FullOpts)
18 (1.42 % of base) : 33380.dasm - System.IO.FileSystemWatcher+RunningInstance:ProcessEvent(System.IO.FileSystemWatcher+RunningInstance+NotifyEvent,byref,byref,byref):ubyte:this (FullOpts)
12 (1.41 % of base) : 159301.dasm - System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[short]:<CopySign_AllLengths>b__25_0(int):this (FullOpts)
Top method improvements (percentages):
-24 (-31.58 % of base) : 194419.dasm - System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs:Equals(System.Object):ubyte:this (FullOpts)
-224 (-29.40 % of base) : 24936.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
-32 (-26.67 % of base) : 94842.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
-22 (-18.64 % of base) : 90744.dasm - System.Data.Tests.DataRowTest2+Address:Equals(System.Object):ubyte:this (FullOpts)
-138 (-17.16 % of base) : 116843.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (FullOpts)
-18 (-13.85 % of base) : 31632.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-20 (-11.76 % of base) : 92166.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
-82 (-8.58 % of base) : 201913.dasm - System.Tests.UInt16Tests:EqualsTest(ushort,System.Object,ubyte) (FullOpts)
-14 (-7.37 % of base) : 45297.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
-28 (-6.64 % of base) : 152437.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-28 (-6.64 % of base) : 149450.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-28 (-6.64 % of base) : 152603.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-12 (-6.32 % of base) : 9876.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
-12 (-6.32 % of base) : 51131.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
-6 (-6.12 % of base) : 7312.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetSymbol[System.__Canon](Microsoft.CodeAnalysis.ISymbol):System.__Canon (FullOpts)
-6 (-6.12 % of base) : 46212.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetSymbol[System.__Canon](Microsoft.CodeAnalysis.ISymbol):System.__Canon (FullOpts)
-6 (-6.12 % of base) : 52526.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetSymbol[System.__Canon](Microsoft.CodeAnalysis.ISymbol):System.__Canon (FullOpts)
-4 (-6.06 % of base) : 798.dasm - System.Xml.Linq.XObject:SkipNotify():ubyte:this (FullOpts)
-4 (-5.56 % of base) : 165404.dasm - System.Xml.Linq.XObject:get_BaseUri():System.String:this (FullOpts)
-42 (-5.22 % of base) : 213377.dasm - System.Tests.CharTests:EqualsTest(ushort,System.Object,ubyte) (FullOpts)
realworld.run.linux.arm.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 13606688 (overridden on cmd)
Total bytes of diff: 13606582 (overridden on cmd)
Total bytes of delta: -106 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
24 : 10238.dasm (1.62 % of base)
24 : 34551.dasm (0.41 % of base)
20 : 2743.dasm (2.45 % of base)
20 : 29468.dasm (0.74 % of base)
18 : 30756.dasm (0.67 % of base)
18 : 28765.dasm (2.06 % of base)
16 : 31144.dasm (0.63 % of base)
16 : 22082.dasm (1.49 % of base)
14 : 35382.dasm (1.62 % of base)
12 : 18520.dasm (3.35 % of base)
12 : 20614.dasm (0.47 % of base)
12 : 1213.dasm (0.28 % of base)
10 : 17379.dasm (0.72 % of base)
10 : 27166.dasm (0.24 % of base)
10 : 16505.dasm (0.90 % of base)
8 : 22061.dasm (0.61 % of base)
8 : 24056.dasm (0.49 % of base)
8 : 23890.dasm (0.57 % of base)
8 : 24342.dasm (1.97 % of base)
6 : 27025.dasm (0.53 % of base)
Top file improvements (bytes):
-28 : 23059.dasm (-1.24 % of base)
-26 : 22279.dasm (-2.91 % of base)
-24 : 23903.dasm (-1.55 % of base)
-24 : 13322.dasm (-28.57 % of base)
-24 : 7045.dasm (-32.43 % of base)
-24 : 7363.dasm (-32.43 % of base)
-24 : 8710.dasm (-32.43 % of base)
-16 : 31107.dasm (-1.70 % of base)
-16 : 25813.dasm (-0.55 % of base)
-14 : 26225.dasm (-0.88 % of base)
-14 : 24656.dasm (-7.37 % of base)
-12 : 935.dasm (-4.80 % of base)
-12 : 24847.dasm (-0.47 % of base)
-10 : 20697.dasm (-1.31 % of base)
-8 : 21330.dasm (-0.93 % of base)
-8 : 25791.dasm (-0.38 % of base)
-6 : 23348.dasm (-2.97 % of base)
-6 : 27426.dasm (-6.12 % of base)
-6 : 4135.dasm (-4.05 % of base)
-6 : 35595.dasm (-0.48 % of base)
50 total files with Code Size differences (27 improved, 23 regressed), 17 unchanged.
Top method regressions (bytes):
24 (1.62 % of base) : 10238.dasm - FSharp.Compiler.TypeRelations:TypesFeasiblyEquivalent[System.__Canon](ubyte,int,FSharp.Compiler.TcGlobals+TcGlobals,System.__Canon,FSharp.Compiler.Text.Range,FSharp.Compiler.TypedTree+TType,FSharp.Compiler.TypedTree+TType):ubyte (FullOpts)
24 (0.41 % of base) : 34551.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (FullOpts)
20 (0.74 % of base) : 29468.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:VisitIsPatternExpression(Microsoft.CodeAnalysis.CSharp.BoundIsPatternExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
20 (2.45 % of base) : 2743.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (FullOpts)
18 (2.06 % of base) : 28765.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitObjectElementInitializer>g__visitMemberInitializer|169_0(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator,ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
18 (0.67 % of base) : 30756.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:BestTypeForLambdaReturns(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte]],Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Conversions,byref):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations (FullOpts)
16 (0.63 % of base) : 31144.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitArgumentsAndCaptureReceiverIfNeeded(byref,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (FullOpts)
16 (1.49 % of base) : 22082.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getFormatAndCloseBrace|434_1(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)
14 (1.62 % of base) : 35382.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
12 (0.47 % of base) : 20614.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:ApplyInto[float,float,float](byref,byref,byref,System.Func`4[int,float,float,float]) (FullOpts)
12 (3.35 % of base) : 18520.dasm - System.IO.Path:TryJoin(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (FullOpts)
12 (0.28 % of base) : 1213.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
10 (0.24 % of base) : 27166.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
10 (0.72 % of base) : 17379.dasm - SixLabors.ImageSharp.Processing.Processors.Dithering.PaletteDitherProcessor`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:.ctor(SixLabors.ImageSharp.Configuration,SixLabors.ImageSharp.Processing.Processors.Dithering.PaletteDitherProcessor,SixLabors.ImageSharp.Image`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.Rectangle):this (FullOpts)
10 (0.90 % of base) : 16505.dasm - SixLabors.ImageSharp.Processing.Processors.Quantization.PaletteQuantizer:CreatePixelSpecificQuantizer[SixLabors.ImageSharp.PixelFormats.Rgba32](SixLabors.ImageSharp.Configuration,SixLabors.ImageSharp.Processing.Processors.Quantization.QuantizerOptions):SixLabors.ImageSharp.Processing.Processors.Quantization.IQuantizer`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:this (FullOpts)
8 (0.57 % of base) : 23890.dasm - Microsoft.CodeAnalysis.ConstantValue:Create(System.Object,ubyte):Microsoft.CodeAnalysis.ConstantValue (FullOpts)
8 (0.49 % of base) : 24056.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 (FullOpts)
8 (1.97 % of base) : 24342.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
8 (0.61 % of base) : 22061.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)
6 (0.53 % of base) : 27025.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ResolveDefaultMethodGroup(Microsoft.CodeAnalysis.CSharp.BoundMethodGroup,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,byref,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,byref):Microsoft.CodeAnalysis.CSharp.MethodGroupResolution:this (FullOpts)
Top method improvements (bytes):
-28 (-1.24 % of base) : 23059.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
-26 (-2.91 % of base) : 22279.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
-24 (-1.55 % of base) : 23903.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
-24 (-32.43 % of base) : 7363.dasm - System.Boolean:Equals(System.Object):ubyte:this (FullOpts)
-24 (-32.43 % of base) : 7045.dasm - System.Byte:Equals(System.Object):ubyte:this (FullOpts)
-24 (-32.43 % of base) : 8710.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
-24 (-28.57 % of base) : 13322.dasm - System.Int64:Equals(System.Object):ubyte:this (FullOpts)
-16 (-1.70 % of base) : 31107.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
-16 (-0.55 % of base) : 25813.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:ComputeImplementationForInterfaceMember(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,byref):Microsoft.CodeAnalysis.CSharp.Symbol (FullOpts)
-14 (-0.88 % of base) : 26225.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterOperator(Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature,Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,byref):int:this (FullOpts)
-14 (-7.37 % of base) : 24656.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
-12 (-0.47 % of base) : 24847.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-12 (-4.80 % of base) : 935.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-10 (-1.31 % of base) : 20697.dasm - Roslyn.Utilities.CommandLineUtilities:SplitCommandLineIntoArguments(System.ReadOnlySpan`1[ushort],ubyte,System.Text.StringBuilder,System.Collections.Generic.List`1[System.String],byref) (FullOpts)
-8 (-0.38 % of base) : 25791.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbolBase:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-8 (-0.93 % of base) : 21330.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
-6 (-6.12 % of base) : 27426.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetSymbol[System.__Canon](Microsoft.CodeAnalysis.ISymbol):System.__Canon (FullOpts)
-6 (-1.74 % of base) : 29486.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:ResetStack():this (FullOpts)
-6 (-4.05 % of base) : 4135.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (FullOpts)
-6 (-0.48 % of base) : 35595.dasm - System.Management.Automation.PowerShell:CoreInvoke[System.__Canon,System.__Canon](System.Management.Automation.PSDataCollection`1[System.__Canon],System.Management.Automation.PSDataCollection`1[System.__Canon],System.Management.Automation.PSInvocationSettings):this (FullOpts)
Top method regressions (percentages):
12 (3.35 % of base) : 18520.dasm - System.IO.Path:TryJoin(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (FullOpts)
20 (2.45 % of base) : 2743.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (FullOpts)
18 (2.06 % of base) : 28765.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitObjectElementInitializer>g__visitMemberInitializer|169_0(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator,ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
8 (1.97 % of base) : 24342.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
14 (1.62 % of base) : 35382.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
24 (1.62 % of base) : 10238.dasm - FSharp.Compiler.TypeRelations:TypesFeasiblyEquivalent[System.__Canon](ubyte,int,FSharp.Compiler.TcGlobals+TcGlobals,System.__Canon,FSharp.Compiler.Text.Range,FSharp.Compiler.TypedTree+TType,FSharp.Compiler.TypedTree+TType):ubyte (FullOpts)
16 (1.49 % of base) : 22082.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getFormatAndCloseBrace|434_1(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)
10 (0.90 % of base) : 16505.dasm - SixLabors.ImageSharp.Processing.Processors.Quantization.PaletteQuantizer:CreatePixelSpecificQuantizer[SixLabors.ImageSharp.PixelFormats.Rgba32](SixLabors.ImageSharp.Configuration,SixLabors.ImageSharp.Processing.Processors.Quantization.QuantizerOptions):SixLabors.ImageSharp.Processing.Processors.Quantization.IQuantizer`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:this (FullOpts)
4 (0.77 % of base) : 22020.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getOpenQuote|428_1(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
20 (0.74 % of base) : 29468.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:VisitIsPatternExpression(Microsoft.CodeAnalysis.CSharp.BoundIsPatternExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
10 (0.72 % of base) : 17379.dasm - SixLabors.ImageSharp.Processing.Processors.Dithering.PaletteDitherProcessor`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:.ctor(SixLabors.ImageSharp.Configuration,SixLabors.ImageSharp.Processing.Processors.Dithering.PaletteDitherProcessor,SixLabors.ImageSharp.Image`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.Rectangle):this (FullOpts)
18 (0.67 % of base) : 30756.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:BestTypeForLambdaReturns(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte]],Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Conversions,byref):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations (FullOpts)
16 (0.63 % of base) : 31144.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitArgumentsAndCaptureReceiverIfNeeded(byref,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (FullOpts)
8 (0.61 % of base) : 22061.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)
8 (0.57 % of base) : 23890.dasm - Microsoft.CodeAnalysis.ConstantValue:Create(System.Object,ubyte):Microsoft.CodeAnalysis.ConstantValue (FullOpts)
2 (0.56 % of base) : 29726.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,ubyte]:AddNode(Microsoft.CodeAnalysis.SmallDictionary`2+AvlNode[System.__Canon,ubyte],Microsoft.CodeAnalysis.SmallDictionary`2+AvlNode[System.__Canon,ubyte],System.__Canon,ubyte):this (FullOpts)
6 (0.53 % of base) : 27025.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ResolveDefaultMethodGroup(Microsoft.CodeAnalysis.CSharp.BoundMethodGroup,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,byref,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,byref):Microsoft.CodeAnalysis.CSharp.MethodGroupResolution:this (FullOpts)
8 (0.49 % of base) : 24056.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 (FullOpts)
12 (0.47 % of base) : 20614.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:ApplyInto[float,float,float](byref,byref,byref,System.Func`4[int,float,float,float]) (FullOpts)
2 (0.46 % of base) : 5798.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
Top method improvements (percentages):
-24 (-32.43 % of base) : 7363.dasm - System.Boolean:Equals(System.Object):ubyte:this (FullOpts)
-24 (-32.43 % of base) : 7045.dasm - System.Byte:Equals(System.Object):ubyte:this (FullOpts)
-24 (-32.43 % of base) : 8710.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
-24 (-28.57 % of base) : 13322.dasm - System.Int64:Equals(System.Object):ubyte:this (FullOpts)
-14 (-7.37 % of base) : 24656.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
-6 (-6.12 % of base) : 27426.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetSymbol[System.__Canon](Microsoft.CodeAnalysis.ISymbol):System.__Canon (FullOpts)
-12 (-4.80 % of base) : 935.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-6 (-4.05 % of base) : 4135.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (FullOpts)
-6 (-2.97 % of base) : 23348.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-26 (-2.91 % of base) : 22279.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
-4 (-2.74 % of base) : 18973.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
-4 (-2.41 % of base) : 947.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
-4 (-2.22 % of base) : 29840.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:IsFixedStatementExpression(Microsoft.CodeAnalysis.SyntaxNode):ubyte (FullOpts)
-6 (-1.74 % of base) : 29486.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:ResetStack():this (FullOpts)
-4 (-1.74 % of base) : 494.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiByte_Vector(uint,uint):uint (FullOpts)
-16 (-1.70 % of base) : 31107.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
-24 (-1.55 % of base) : 23903.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
-4 (-1.55 % of base) : 12071.dasm - Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
-10 (-1.31 % of base) : 20697.dasm - Roslyn.Utilities.CommandLineUtilities:SplitCommandLineIntoArguments(System.ReadOnlySpan`1[ushort],ubyte,System.Text.StringBuilder,System.Collections.Generic.List`1[System.String],byref) (FullOpts)
-28 (-1.24 % of base) : 23059.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
windows x86
Diffs are based on 2,292,076 contexts (839,658 MinOpts, 1,452,418 FullOpts).
MISSED contexts: base: 1 (0.00%), diff: 1,420 (0.06%)
Overall (-7,570 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.windows.x86.checked.mch |
7,120,956 |
-237 |
benchmarks.run_pgo.windows.x86.checked.mch |
44,953,073 |
-523 |
benchmarks.run_tiered.windows.x86.checked.mch |
9,468,479 |
-359 |
coreclr_tests.run.windows.x86.checked.mch |
309,197,550 |
-1,795 |
libraries.crossgen2.windows.x86.checked.mch |
31,713,985 |
-762 |
libraries.pmi.windows.x86.checked.mch |
49,253,151 |
-1,180 |
libraries_tests.run.windows.x86.Release.mch |
185,471,045 |
-3,289 |
librariestestsnotieredcompilation.run.windows.x86.Release.mch |
103,778,092 |
-98 |
realworld.run.windows.x86.checked.mch |
11,345,019 |
+673 |
FullOpts (-7,570 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.windows.x86.checked.mch |
7,120,675 |
-237 |
benchmarks.run_pgo.windows.x86.checked.mch |
38,364,442 |
-523 |
benchmarks.run_tiered.windows.x86.checked.mch |
5,198,658 |
-359 |
coreclr_tests.run.windows.x86.checked.mch |
107,409,416 |
-1,795 |
libraries.crossgen2.windows.x86.checked.mch |
31,712,925 |
-762 |
libraries.pmi.windows.x86.checked.mch |
49,157,918 |
-1,180 |
libraries_tests.run.windows.x86.Release.mch |
87,197,345 |
-3,289 |
librariestestsnotieredcompilation.run.windows.x86.Release.mch |
95,098,028 |
-98 |
realworld.run.windows.x86.checked.mch |
11,049,305 |
+673 |
Example diffs
benchmarks.run.windows.x86.checked.mch
-30 (-46.88%) : 9846.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
@@ -8,71 +8,50 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 2.50) byref -> ecx this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> esi class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> edx class-hnd single-def <System.Object>
; V02 tmp0 [V02,T01] ( 3, 4.50) ref -> eax class-hnd "spilling QMark2" <System.Int32>
-; V03 tmp1 [V03,T03] ( 2, 2 ) int -> edi "impAppendStmt"
-; V04 cse0 [V04,T04] ( 3, 1 ) int -> edx "CSE - moderate"
+; V03 tmp1 [V03,T03] ( 2, 2 ) int -> eax "impAppendStmt"
;
; Lcl frame size = 0
-G_M40448_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
+G_M40448_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
- push edi
- push esi
- mov esi, edx
- ; gcrRegs +[esi]
- ;; size=7 bbWeight=1 PerfScore 3.50
-G_M40448_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref, isz
+ ;; size=3 bbWeight=1 PerfScore 1.25
+G_M40448_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref, isz
+ ; gcrRegs +[edx]
; byrRegs +[ecx]
- mov eax, esi
+ mov eax, edx
; gcrRegs +[eax]
test eax, eax
je SHORT G_M40448_IG04
;; size=6 bbWeight=1 PerfScore 1.50
-G_M40448_IG03: ; bbWeight=0.25, gcrefRegs=00000041 {eax esi}, byrefRegs=00000002 {ecx}, byref, isz
- mov edx, dword ptr [eax]
- cmp edx, 0xD1FFAB1E
+G_M40448_IG03: ; bbWeight=0.25, gcrefRegs=00000005 {eax edx}, byrefRegs=00000002 {ecx}, byref, isz
+ cmp dword ptr [eax], 0xD1FFAB1E
je SHORT G_M40448_IG06
- ;; size=10 bbWeight=0.25 PerfScore 0.81
+ ;; size=8 bbWeight=0.25 PerfScore 1.00
G_M40448_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax esi]
+ ; gcrRegs -[eax edx]
; byrRegs -[ecx]
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M40448_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop esi
- pop edi
pop ebp
ret
- ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M40448_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, gcvars, byref, isz
- ; gcrRegs +[esi]
- ; byrRegs +[ecx]
- mov edi, dword ptr [ecx]
- cmp edx, 0xD1FFAB1E
- je SHORT G_M40448_IG08
- ;; size=10 bbWeight=0.50 PerfScore 1.62
-G_M40448_IG07: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- ; byrRegs -[ecx]
- mov edx, esi
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M40448_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, gcvars, byref
; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; System.Int32
- call [CORINFO_HELP_UNBOX]
- ; gcrRegs -[edx]
- ;; size=13 bbWeight=0.25 PerfScore 0.88
-G_M40448_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- xor eax, eax
- cmp edi, dword ptr [esi+0x04]
+ ; byrRegs +[ecx]
+ mov eax, dword ptr [ecx]
+ cmp eax, dword ptr [edx+0x04]
sete al
- ;; size=8 bbWeight=0.50 PerfScore 2.12
-G_M40448_IG09: ; bbWeight=0.50, epilog, nogc, extend
- pop esi
- pop edi
+ movzx eax, al
+ ;; size=11 bbWeight=0.50 PerfScore 3.12
+G_M40448_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret
- ;; size=4 bbWeight=0.50 PerfScore 1.25
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 64, prolog size 5, PerfScore 13.06, instruction count 29, allocated bytes for code 64 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 34, prolog size 3, PerfScore 8.50, instruction count 16, allocated bytes for code 34 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================
-20 (-15.87%) : 7648.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (FullOpts)
@@ -7,14 +7,16 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T06] ( 2, 2 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V01 arg1 [V01,T07] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V02 loc0 [V02,T00] ( 8, 28.50) int -> registers
-; V03 tmp0 [V03,T01] ( 7, 21 ) int -> eax "dup spill"
-; V04 tmp1 [V04,T04] ( 3, 5.50) byref -> [ebp-0x10] spill-single-def "V00.[000..004)"
-; V05 tmp2 [V05,T03] ( 5, 7 ) int -> ecx "V00.[004..008)"
-; V06 tmp3 [V06,T05] ( 3, 5.50) byref -> esi single-def "V01.[000..004)"
-; V07 tmp4 [V07,T02] ( 6, 7.50) int -> edi "V01.[004..008)"
+; V00 arg0 [V00,T08] ( 2, 2 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
+; V01 arg1 [V01,T09] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
+; V02 loc0 [V02,T00] ( 8, 28.50) int -> edi
+; V03 tmp0 [V03,T01] ( 2, 16 ) int -> edi "dup spill"
+; V04 tmp1 [V04,T06] ( 2, 5 ) byref -> [ebp-0x10] spill-single-def "V00.[000..004)"
+; V05 tmp2 [V05,T05] ( 4, 6.50) int -> edx "V00.[004..008)"
+; V06 tmp3 [V06,T07] ( 2, 5 ) byref -> ecx single-def "V01.[000..004)"
+; V07 tmp4 [V07,T04] ( 5, 7 ) int -> esi "V01.[004..008)"
+; V08 cse0 [V08,T02] ( 3, 8.50) int -> ebx "CSE - aggressive"
+; V09 cse1 [V09,T03] ( 3, 8.50) int -> eax "CSE - aggressive"
;
; Lcl frame size = 4
@@ -27,51 +29,52 @@ G_M264_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
push eax
;; size=7 bbWeight=1 PerfScore 5.25
G_M264_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov edx, bword ptr [ebp+0x10]
- ; byrRegs +[edx]
- mov bword ptr [ebp-0x10], edx
+ mov eax, bword ptr [ebp+0x10]
+ ; byrRegs +[eax]
+ mov bword ptr [ebp-0x10], eax
; GC ptr vars +{V04}
- mov ecx, dword ptr [ebp+0x14]
- mov esi, bword ptr [ebp+0x08]
- ; byrRegs +[esi]
- mov edi, dword ptr [ebp+0x0C]
- cmp ecx, edi
+ mov edx, dword ptr [ebp+0x14]
+ mov ecx, bword ptr [ebp+0x08]
+ ; byrRegs +[ecx]
+ mov esi, dword ptr [ebp+0x0C]
+ cmp edx, esi
je SHORT G_M264_IG04
;; size=19 bbWeight=1 PerfScore 6.25
G_M264_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- ; byrRegs -[edx esi]
+ ; byrRegs -[eax ecx]
; GC ptr vars -{V04}
- cmp ecx, edi
+ cmp edx, esi
jl SHORT G_M264_IG12
- jmp SHORT G_M264_IG10
+ jmp SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.62
-G_M264_IG04: ; bbWeight=0.50, gcVars=00000010 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, gcvars, byref
- ; byrRegs +[edx esi]
- ; GC ptr vars +{V04}
- mov eax, edi
+G_M264_IG04: ; bbWeight=0.50, gcVars=00000040 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000003 {eax ecx}, gcvars, byref
+ ; byrRegs +[eax ecx]
+ ; GC ptr vars +{V04 V06}
+ mov edi, esi
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M264_IG05: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, byref, isz
- dec eax
- mov ebx, eax
- test ebx, ebx
- jl SHORT G_M264_IG06
- cmp ebx, ecx
+G_M264_IG05: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000003 {eax ecx}, byref, isz
+ dec edi
+ js SHORT G_M264_IG10
+ cmp edi, edx
jae SHORT G_M264_IG14
- mov edx, dword ptr [edx+4*ebx]
- ; byrRegs -[edx]
- cmp ebx, edi
+ mov ebx, dword ptr [eax+4*edi]
+ cmp edi, esi
jae SHORT G_M264_IG14
- cmp edx, dword ptr [esi+4*ebx]
- mov edx, bword ptr [ebp-0x10]
- ; byrRegs +[edx]
- je SHORT G_M264_IG08
- ;; size=26 bbWeight=4 PerfScore 45.00
-G_M264_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, byref, isz
- test eax, eax
- jge SHORT G_M264_IG09
- xor eax, eax
- ;; size=6 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ mov eax, dword ptr [ecx+4*edi]
+ ; byrRegs -[eax]
+ cmp ebx, eax
+ je SHORT G_M264_IG09
+ ;; size=21 bbWeight=4 PerfScore 36.00
+G_M264_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; byrRegs -[ecx]
+ ; GC ptr vars -{V04 V06}
+ cmp eax, ebx
+ ja SHORT G_M264_IG12
+ ;; size=4 bbWeight=0.50 PerfScore 0.62
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ mov eax, 1
+ ;; size=5 bbWeight=0.50 PerfScore 0.12
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop ecx
pop ebx
pop esi
@@ -79,25 +82,18 @@ G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret 16
;; size=8 bbWeight=0.50 PerfScore 2.25
-G_M264_IG08: ; bbWeight=2, gcVars=00000010 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, gcvars, byref, isz
- mov eax, ebx
+G_M264_IG09: ; bbWeight=2, gcVars=00000040 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, gcvars, byref, isz
+ ; byrRegs +[ecx]
+ ; GC ptr vars +{V04 V06}
+ mov eax, bword ptr [ebp-0x10]
+ ; byrRegs +[eax]
jmp SHORT G_M264_IG05
- ;; size=4 bbWeight=2 PerfScore 4.50
-G_M264_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, byref, isz
- cmp eax, ecx
- jae SHORT G_M264_IG14
- mov edx, dword ptr [edx+4*eax]
- ; byrRegs -[edx]
- cmp eax, edi
- jae SHORT G_M264_IG14
- cmp edx, dword ptr [esi+4*eax]
- jb SHORT G_M264_IG12
- ;; size=16 bbWeight=0.50 PerfScore 4.25
+ ;; size=5 bbWeight=2 PerfScore 6.00
G_M264_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; byrRegs -[esi]
- ; GC ptr vars -{V04}
- mov eax, 1
- ;; size=5 bbWeight=0.50 PerfScore 0.12
+ ; byrRegs -[eax ecx]
+ ; GC ptr vars -{V04 V06}
+ xor eax, eax
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M264_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop ecx
pop ebx
@@ -122,6 +118,6 @@ G_M264_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byr
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 126, prolog size 7, PerfScore 74.75, instruction count 63, allocated bytes for code 126 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 106, prolog size 7, PerfScore 63.00, instruction count 54, allocated bytes for code 106 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================
-22 (-10.58%) : 1247.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
@@ -14,8 +14,8 @@
; V03 loc2 [V03,T00] ( 10, 33 ) int -> ebx
; V04 loc3 [V04,T01] ( 8, 25 ) int -> eax
;* V05 loc4 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
-; V06 tmp0 [V06,T06] ( 2, 16 ) int -> eax "dup spill"
-; V07 tmp1 [V07,T03] ( 3, 17 ) int -> ecx "dup spill"
+; V06 tmp0 [V06,T05] ( 2, 16 ) int -> eax "dup spill"
+; V07 tmp1 [V07,T06] ( 2, 16 ) int -> eax "dup spill"
; V08 tmp2 [V08,T07] ( 2, 16 ) int -> ebx "dup spill"
; V09 tmp3 [V09,T08] ( 2, 16 ) int -> esi "dup spill"
; V10 tmp4 [V10,T09] ( 2, 16 ) int -> ebx "dup spill"
@@ -27,12 +27,12 @@
;* V16 tmp10 [V16 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP
;* V17 tmp11 [V17 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x4)" P-INDEP
; V18 tmp12 [V18,T14] ( 3, 6 ) ref -> esi single-def "arr expr"
-; V19 tmp13 [V19,T04] ( 2, 16 ) ref -> ecx "arr expr"
-; V20 tmp14 [V20,T05] ( 2, 16 ) ref -> esi "arr expr"
+; V19 tmp13 [V19,T03] ( 2, 16 ) ref -> ecx "arr expr"
+; V20 tmp14 [V20,T04] ( 2, 16 ) ref -> ecx "arr expr"
; V21 cse0 [V21,T11] ( 5, 10.50) ref -> edx "CSE - moderate"
-; V22 cse1 [V22,T12] ( 4, 10 ) int -> [ebp-0x14] spill-single-def "CSE - moderate"
+; V22 cse1 [V22,T12] ( 4, 10 ) int -> edi "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 4
G_M61853_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -40,8 +40,8 @@ G_M61853_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 8
- ;; size=9 bbWeight=1 PerfScore 4.50
+ push eax
+ ;; size=7 bbWeight=1 PerfScore 5.25
G_M61853_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, byref, isz
; byrRegs +[ecx]
mov eax, dword ptr [ecx+0x2C]
@@ -51,14 +51,13 @@ G_M61853_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000002 {e
mov esi, edx
; gcrRegs +[esi]
mov edi, dword ptr [esi+0x04]
- mov dword ptr [ebp-0x14], edi
cmp eax, edi
jae G_M61853_IG15
movzx esi, word ptr [esi+2*eax+0x08]
; gcrRegs -[esi]
cmp esi, 123
je SHORT G_M61853_IG04
- ;; size=35 bbWeight=1 PerfScore 12.75
+ ;; size=32 bbWeight=1 PerfScore 11.75
G_M61853_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edx]
; byrRegs -[ecx]
@@ -104,69 +103,65 @@ G_M61853_IG06: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000
mov eax, 1
;; size=24 bbWeight=0.50 PerfScore 3.12
G_M61853_IG07: ; bbWeight=0.50, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+ pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret
- ;; size=8 bbWeight=0.50 PerfScore 1.75
+ ;; size=6 bbWeight=0.50 PerfScore 1.75
G_M61853_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
cmp esi, 44
jne SHORT G_M61853_IG13
;; size=5 bbWeight=0.50 PerfScore 0.62
G_M61853_IG09: ; bbWeight=4, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
- lea ecx, [eax-0x01]
- mov eax, ecx
+ dec eax
test eax, eax
- jle SHORT G_M61853_IG10
+ jle SHORT G_M61853_IG13
inc ebx
- mov esi, edx
- ; gcrRegs +[esi]
+ mov ecx, edx
+ ; gcrRegs +[ecx]
cmp ebx, edi
jae SHORT G_M61853_IG15
- movzx esi, word ptr [esi+2*ebx+0x08]
- ; gcrRegs -[esi]
- lea edi, [esi-0x30]
- cmp edi, 9
- mov edi, dword ptr [ebp-0x14]
+ movzx esi, word ptr [ecx+2*ebx+0x08]
+ lea ecx, [esi-0x30]
+ ; gcrRegs -[ecx]
+ cmp ecx, 9
jbe SHORT G_M61853_IG09
- ;; size=32 bbWeight=4 PerfScore 34.00
-G_M61853_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ;; size=25 bbWeight=4 PerfScore 28.00
+G_M61853_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[edx]
- test ecx, ecx
- jle SHORT G_M61853_IG13
xor ebx, ebx
cmp esi, 125
sete bl
- ;; size=12 bbWeight=0.50 PerfScore 1.38
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
G_M61853_IG11: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
movzx eax, bl
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M61853_IG12: ; bbWeight=0.50, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+ pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret
- ;; size=8 bbWeight=0.50 PerfScore 1.75
+ ;; size=6 bbWeight=0.50 PerfScore 1.75
G_M61853_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M61853_IG14: ; bbWeight=0.50, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+ pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret
- ;; size=8 bbWeight=0.50 PerfScore 1.75
+ ;; size=6 bbWeight=0.50 PerfScore 1.75
G_M61853_IG15: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 208, prolog size 9, PerfScore 96.25, instruction count 88, allocated bytes for code 208 (MethodHash=38980e62) for method System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
+; Total bytes of code 186, prolog size 7, PerfScore 89.38, instruction count 83, allocated bytes for code 186 (MethodHash=38980e62) for method System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
; ============================================================
+3 (+3.61%) : 15220.dasm - System.Runtime.Serialization.Json.JsonEncodingStreamWrapper:ReadEncoding(ubyte,ubyte):int (FullOpts)
@@ -9,9 +9,10 @@
;
; V00 arg0 [V00,T01] ( 3, 3 ) ubyte -> ecx single-def
; V01 arg1 [V01,T00] ( 4, 3 ) ubyte -> edx single-def
-; V02 tmp0 [V02,T03] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V03 tmp1 [V03,T04] ( 2, 0 ) ref -> edx single-def "argument with side effect"
-; V04 cse0 [V04,T02] ( 5, 2.50) int -> ecx multi-def "CSE - aggressive"
+; V02 tmp0 [V02,T04] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V03 tmp1 [V03,T05] ( 2, 0 ) ref -> edx single-def "argument with side effect"
+; V04 cse0 [V04,T03] ( 2, 2 ) int -> eax "CSE - aggressive"
+; V05 cse1 [V05,T02] ( 5, 2.50) int -> ecx multi-def "CSE - aggressive"
;
; Lcl frame size = 0
@@ -21,9 +22,10 @@ G_M61710_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push esi
;; size=4 bbWeight=1 PerfScore 2.25
G_M61710_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- test cl, cl
+ movzx eax, cl
+ test eax, eax
jne SHORT G_M61710_IG05
- ;; size=4 bbWeight=1 PerfScore 1.25
+ ;; size=7 bbWeight=1 PerfScore 1.50
G_M61710_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
movzx ecx, dl
test ecx, ecx
@@ -78,6 +80,6 @@ G_M61710_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, b
int3
;; size=36 bbWeight=0 PerfScore 0.00
-; Total bytes of code 83, prolog size 4, PerfScore 9.00, instruction count 35, allocated bytes for code 83 (MethodHash=f5570ef1) for method System.Runtime.Serialization.Json.JsonEncodingStreamWrapper:ReadEncoding(ubyte,ubyte):int (FullOpts)
+; Total bytes of code 86, prolog size 4, PerfScore 9.25, instruction count 36, allocated bytes for code 86 (MethodHash=f5570ef1) for method System.Runtime.Serialization.Json.JsonEncodingStreamWrapper:ReadEncoding(ubyte,ubyte):int (FullOpts)
; ============================================================
+2 (+4.44%) : 5692.dasm - System.Net.Http.HttpConnectionPool:GetSslOptionsForRequest(System.Net.Http.HttpRequestMessage):System.Net.Security.SslClientAuthenticationOptions:this (FullOpts)
@@ -12,6 +12,7 @@
; V01 arg1 [V01,T01] ( 5, 3.50) ref -> edx class-hnd single-def <System.Net.Http.HttpRequestMessage>
;* V02 tmp0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Version>
;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Version>
+; V04 cse0 [V04,T02] ( 2, 1 ) int -> eax "CSE - moderate"
;
; Lcl frame size = 0
@@ -27,12 +28,15 @@ G_M47920_IG02: ; bbWeight=1, gcrefRegs=00000006 {ecx edx}, byrefRegs=0000
G_M47920_IG03: ; bbWeight=0.50, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz
mov eax, gword ptr [edx+0x10]
; gcrRegs +[eax]
- cmp dword ptr [eax+0x04], 2
+ mov eax, dword ptr [eax+0x04]
+ ; gcrRegs -[eax]
+ cmp eax, 2
jl SHORT G_M47920_IG05
cmp dword ptr [edx+0x20], 0
je SHORT G_M47920_IG06
mov eax, gword ptr [ecx+0x4C]
- ;; size=18 bbWeight=0.50 PerfScore 6.00
+ ; gcrRegs +[eax]
+ ;; size=20 bbWeight=0.50 PerfScore 5.62
G_M47920_IG04: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret
@@ -61,6 +65,6 @@ G_M47920_IG09: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 45, prolog size 3, PerfScore 17.50, instruction count 20, allocated bytes for code 45 (MethodHash=a75444cf) for method System.Net.Http.HttpConnectionPool:GetSslOptionsForRequest(System.Net.Http.HttpRequestMessage):System.Net.Security.SslClientAuthenticationOptions:this (FullOpts)
+; Total bytes of code 47, prolog size 3, PerfScore 17.12, instruction count 21, allocated bytes for code 47 (MethodHash=a75444cf) for method System.Net.Http.HttpConnectionPool:GetSslOptionsForRequest(System.Net.Http.HttpRequestMessage):System.Net.Security.SslClientAuthenticationOptions:this (FullOpts)
; ============================================================
+14 (+7.37%) : 3588.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
@@ -8,25 +8,26 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T09] ( 5, 15 ) ref -> edi class-hnd single-def <System.Reflection.ParameterInfo[]>
-; V01 arg1 [V01,T10] ( 5, 11 ) ref -> [ebp-0x18] class-hnd single-def <System.Type[]>
+; V00 arg0 [V00,T09] ( 4, 11 ) ref -> edi class-hnd single-def <System.Reflection.ParameterInfo[]>
+; V01 arg1 [V01,T11] ( 4, 7 ) ref -> [ebp-0x20] class-hnd single-def <System.Type[]>
; V02 arg2 [V02,T08] ( 3, 21 ) byref -> esi single-def
; V03 loc0 [V03,T07] ( 6, 21 ) int -> [ebp-0x10]
;* V04 loc1 [V04,T12] ( 0, 0 ) ubyte -> zero-ref
-; V05 loc2 [V05,T11] ( 2, 12 ) ref -> [ebp-0x1C] class-hnd spill-single-def <System.Type>
+; V05 loc2 [V05,T10] ( 2, 12 ) ref -> [ebp-0x24] class-hnd spill-single-def <System.Type>
; V06 loc3 [V06,T00] ( 9,100 ) int -> [ebp-0x14]
;* V07 tmp0 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
-; V08 tmp1 [V08,T05] ( 3, 24 ) ref -> edx class-hnd "impAppendStmt" <<unknown class>>
+; V08 tmp1 [V08,T04] ( 3, 24 ) ref -> ecx class-hnd "impAppendStmt" <<unknown class>>
;* V09 tmp2 [V09 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V10 tmp3 [V10,T14] ( 0, 0 ) ubyte -> zero-ref "field V07.hasValue (fldOffset=0x0)" P-INDEP
+;* V10 tmp3 [V10,T15] ( 0, 0 ) ubyte -> zero-ref "field V07.hasValue (fldOffset=0x0)" P-INDEP
; V11 tmp4 [V11,T13] ( 2, 8 ) int -> ebx "field V07.value (fldOffset=0x4)" P-INDEP
-; V12 tmp5 [V12,T01] ( 3, 96 ) ref -> edx "arr expr"
-; V13 tmp6 [V13,T02] ( 3, 48 ) ref -> edx "argument with side effect"
+; V12 tmp5 [V12,T01] ( 3, 96 ) ref -> ebx "arr expr"
+; V13 tmp6 [V13,T02] ( 3, 48 ) ref -> ebx "argument with side effect"
; V14 tmp7 [V14,T03] ( 3, 48 ) ref -> eax "argument with side effect"
-; V15 tmp8 [V15,T06] ( 3, 24 ) byref -> edx "BlockOp address local"
-; V16 cse0 [V16,T04] ( 5, 26 ) int -> registers multi-def "CSE - moderate"
+; V15 tmp8 [V15,T05] ( 3, 24 ) byref -> edx "BlockOp address local"
+; V16 cse0 [V16,T06] ( 4, 22 ) int -> [ebp-0x18] spill-single-def "CSE - moderate"
+; V17 cse1 [V17,T14] ( 3, 6 ) int -> [ebp-0x1C] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 24
G_M59545_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -34,7 +35,7 @@ G_M59545_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 16
+ sub esp, 24
mov edi, ecx
; gcrRegs +[edi]
mov ebx, edx
@@ -44,6 +45,7 @@ G_M59545_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
;; size=16 bbWeight=1 PerfScore 6.00
G_M59545_IG02: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz
mov eax, dword ptr [edi+0x04]
+ mov dword ptr [ebp-0x18], eax
mov edx, eax
mov ecx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWARR_1_VC
@@ -54,47 +56,47 @@ G_M59545_IG02: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=0000
; gcrRegs -[eax]
; byrRegs -[edx]
xor eax, eax
- cmp dword ptr [ebx+0x04], 0
+ mov edx, dword ptr [ebx+0x04]
+ mov dword ptr [ebp-0x1C], edx
+ test edx, edx
jle SHORT G_M59545_IG09
- ;; size=30 bbWeight=1 PerfScore 9.00
+ ;; size=37 bbWeight=1 PerfScore 10.25
G_M59545_IG03: ; bbWeight=4, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz
- mov gword ptr [ebp-0x18], ebx
+ mov gword ptr [ebp-0x20], ebx
; GC ptr vars +{V01}
mov dword ptr [ebp-0x10], eax
- mov edx, gword ptr [ebx+4*eax+0x08]
- ; gcrRegs +[edx]
- mov gword ptr [ebp-0x1C], edx
+ mov ecx, gword ptr [ebx+4*eax+0x08]
+ ; gcrRegs +[ecx]
+ mov gword ptr [ebp-0x24], ecx
; GC ptr vars +{V05}
- xor ecx, ecx
- mov ebx, dword ptr [edi+0x04]
- ; gcrRegs -[ebx]
- test ebx, ebx
- jle SHORT G_M59545_IG11
- ;; size=22 bbWeight=4 PerfScore 34.00
+ xor edx, edx
+ cmp dword ptr [ebp-0x18], 0
+ jle SHORT G_M59545_IG12
+ ;; size=21 bbWeight=4 PerfScore 33.00
G_M59545_IG04: ; bbWeight=16, gcVars=00000C00 {V01 V05}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
- ; gcrRegs -[edx]
- mov edx, gword ptr [esi]
- ; gcrRegs +[edx]
- cmp ecx, dword ptr [edx+0x04]
- jae SHORT G_M59545_IG13
- cmp byte ptr [edx+8*ecx+0x08], 0
+ ; gcrRegs -[ecx ebx]
+ mov ebx, gword ptr [esi]
+ ; gcrRegs +[ebx]
+ cmp edx, dword ptr [ebx+0x04]
+ jae SHORT G_M59545_IG14
+ cmp byte ptr [ebx+8*edx+0x08], 0
jne SHORT G_M59545_IG06
;; size=14 bbWeight=16 PerfScore 160.00
G_M59545_IG05: ; bbWeight=8, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
- ; gcrRegs -[edx]
- mov dword ptr [ebp-0x14], ecx
- mov edx, gword ptr [edi+4*ecx+0x08]
- ; gcrRegs +[edx]
- mov ecx, edx
+ ; gcrRegs -[ebx]
+ mov dword ptr [ebp-0x14], edx
+ mov ebx, gword ptr [edi+4*edx+0x08]
+ ; gcrRegs +[ebx]
+ mov ecx, ebx
; gcrRegs +[ecx]
- mov edx, dword ptr [edx]
- ; gcrRegs -[edx]
- mov edx, dword ptr [edx+0x2C]
- call [edx+0x1C]<unknown method>
+ mov ebx, dword ptr [ebx]
+ ; gcrRegs -[ebx]
+ mov ebx, dword ptr [ebx+0x2C]
+ call [ebx+0x1C]<unknown method>
; gcrRegs -[ecx] +[eax]
mov ecx, eax
; gcrRegs +[ecx]
- mov edx, gword ptr [ebp-0x1C]
+ mov edx, gword ptr [ebp-0x24]
; gcrRegs +[edx]
mov eax, dword ptr [eax]
; gcrRegs -[eax]
@@ -102,45 +104,43 @@ G_M59545_IG05: ; bbWeight=8, gcrefRegs=00000080 {edi}, byrefRegs=00000040
call [eax+0x10]<unknown method>
; gcrRegs -[ecx edx]
test eax, eax
- mov ecx, dword ptr [ebp-0x14]
+ mov edx, dword ptr [ebp-0x14]
jne SHORT G_M59545_IG08
;; size=37 bbWeight=8 PerfScore 166.00
G_M59545_IG06: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
- inc ecx
- cmp ebx, ecx
+ inc edx
+ cmp dword ptr [ebp-0x18], edx
jg SHORT G_M59545_IG04
- ;; size=5 bbWeight=16 PerfScore 24.00
+ ;; size=6 bbWeight=16 PerfScore 52.00
G_M59545_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[edi]
; byrRegs -[esi]
; GC ptr vars -{V01 V05}
- jmp SHORT G_M59545_IG11
+ jmp SHORT G_M59545_IG12
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M59545_IG08: ; bbWeight=4, gcVars=00000400 {V01}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
+G_M59545_IG08: ; bbWeight=4, gcVars=00000800 {V01}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; gcrRegs +[edi]
; byrRegs +[esi]
- ; GC ptr vars +{V01 V10}
- mov edx, gword ptr [esi]
- ; gcrRegs +[edx]
+ ; GC ptr vars +{V01 V11}
+ mov ecx, gword ptr [esi]
+ ; gcrRegs +[ecx]
mov eax, dword ptr [ebp-0x10]
mov ebx, eax
- cmp ecx, dword ptr [edx+0x04]
- jae SHORT G_M59545_IG13
- lea edx, bword ptr [edx+8*ecx+0x08]
- ; gcrRegs -[edx]
+ cmp edx, dword ptr [ecx+0x04]
+ jae SHORT G_M59545_IG14
+ lea edx, bword ptr [ecx+8*edx+0x08]
; byrRegs +[edx]
mov byte ptr [edx], 1
mov dword ptr [edx+0x04], ebx
inc eax
- mov ebx, gword ptr [ebp-0x18]
- ; gcrRegs +[ebx]
- cmp dword ptr [ebx+0x04], eax
- jg SHORT G_M59545_IG03
- ;; size=31 bbWeight=4 PerfScore 62.00
+ mov ebx, dword ptr [ebp-0x1C]
+ cmp ebx, eax
+ jg SHORT G_M59545_IG11
+ ;; size=30 bbWeight=4 PerfScore 51.00
G_M59545_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[ebx edi]
+ ; gcrRegs -[ecx edi]
; byrRegs -[edx esi]
- ; GC ptr vars -{V01 V10}
+ ; GC ptr vars -{V01 V11}
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
G_M59545_IG10: ; bbWeight=0.50, epilog, nogc, extend
@@ -151,10 +151,21 @@ G_M59545_IG10: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret 4
;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M59545_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M59545_IG11: ; bbWeight=2, gcVars=00000800 {V01}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref
+ ; gcrRegs +[edi]
+ ; byrRegs +[esi]
+ ; GC ptr vars +{V01 V11}
+ mov ebx, gword ptr [ebp-0x20]
+ ; gcrRegs +[ebx]
+ jmp G_M59545_IG03
+ ;; size=8 bbWeight=2 PerfScore 6.00
+G_M59545_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[ebx edi]
+ ; byrRegs -[esi]
+ ; GC ptr vars -{V01 V11}
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M59545_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M59545_IG13: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -162,11 +173,11 @@ G_M59545_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret 4
;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M59545_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M59545_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 190, prolog size 16, PerfScore 466.75, instruction count 77, allocated bytes for code 190 (MethodHash=29c21766) for method Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
+; Total bytes of code 204, prolog size 16, PerfScore 490.00, instruction count 81, allocated bytes for code 204 (MethodHash=29c21766) for method Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
; ============================================================
benchmarks.run_pgo.windows.x86.checked.mch
-34 (-49.28%) : 42186.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
@@ -9,74 +9,54 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 3 ) byref -> edi this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> esi class-hnd single-def <System.Object>
+; V00 this [V00,T02] ( 3, 3 ) byref -> ecx this single-def
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> edx class-hnd single-def <System.Object>
; V02 tmp0 [V02,T01] ( 3, 5 ) ref -> eax class-hnd "spilling QMark2" <System.Reflection.MetadataImport>
;* V03 tmp1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.MetadataImport>
;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref "field V03.m_keepalive (fldOffset=0x0)" P-INDEP
-; V05 tmp3 [V05,T04] ( 2, 2 ) int -> eax "field V03.m_metadataImport2 (fldOffset=0x4)" P-INDEP
-; V06 cse0 [V06,T03] ( 3, 2 ) int -> edx "CSE - aggressive"
+; V05 tmp3 [V05,T03] ( 2, 2 ) int -> eax "field V03.m_metadataImport2 (fldOffset=0x4)" P-INDEP
;
; Lcl frame size = 0
G_M38955_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
- push edi
- push esi
- mov edi, ecx
- ; byrRegs +[edi]
- mov esi, edx
- ; gcrRegs +[esi]
- ;; size=9 bbWeight=1 PerfScore 3.75
-G_M38955_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
- mov eax, esi
+ ;; size=3 bbWeight=1 PerfScore 1.25
+G_M38955_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref, isz
+ ; gcrRegs +[edx]
+ ; byrRegs +[ecx]
+ mov eax, edx
; gcrRegs +[eax]
test eax, eax
- je SHORT G_M38955_IG08
+ jne SHORT G_M38955_IG05
;; size=6 bbWeight=1 PerfScore 1.50
-G_M38955_IG03: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000080 {edi}, byref, isz
- mov edx, dword ptr [eax]
- cmp edx, 0xD1FFAB1E
- jne SHORT G_M38955_IG08
- ;; size=10 bbWeight=0.50 PerfScore 1.62
-G_M38955_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
+G_M38955_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax edx]
+ ; byrRegs -[ecx]
+ xor eax, eax
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M38955_IG04: ; bbWeight=1, epilog, nogc, extend
+ pop ebp
+ ret
+ ;; size=2 bbWeight=1 PerfScore 1.50
+G_M38955_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000005 {eax edx}, byrefRegs=00000002 {ecx}, gcvars, byref, isz
+ ; gcrRegs +[eax edx]
+ ; byrRegs +[ecx]
+ cmp dword ptr [eax], 0xD1FFAB1E
+ jne SHORT G_M38955_IG03
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M38955_IG06: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref
; gcrRegs -[eax]
- cmp edx, 0xD1FFAB1E
- jne SHORT G_M38955_IG07
- ;; size=8 bbWeight=1 PerfScore 1.25
-G_M38955_IG05: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref
- mov eax, dword ptr [esi+0x08]
- cmp eax, dword ptr [edi+0x04]
+ mov eax, dword ptr [edx+0x08]
+ cmp eax, dword ptr [ecx+0x04]
sete al
movzx eax, al
;; size=12 bbWeight=1 PerfScore 6.25
-G_M38955_IG06: ; bbWeight=1, epilog, nogc, extend
- pop esi
- pop edi
+G_M38955_IG07: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret
- ;; size=4 bbWeight=1 PerfScore 2.50
-G_M38955_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz
- mov edx, esi
- ; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; System.Reflection.MetadataImport
- call CORINFO_HELP_UNBOX
- ; gcrRegs -[edx]
- jmp SHORT G_M38955_IG05
- ;; size=14 bbWeight=0.50 PerfScore 1.75
-G_M38955_IG08: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[esi]
- ; byrRegs -[edi]
- xor eax, eax
- ;; size=2 bbWeight=0.25 PerfScore 0.06
-G_M38955_IG09: ; bbWeight=0.25, epilog, nogc, extend
- pop esi
- pop edi
- pop ebp
- ret
- ;; size=4 bbWeight=0.25 PerfScore 0.62
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 69, prolog size 5, PerfScore 19.31, instruction count 31, allocated bytes for code 69 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 35, prolog size 3, PerfScore 14.25, instruction count 16, allocated bytes for code 35 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
; ============================================================
-34 (-49.28%) : 25899.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
@@ -9,74 +9,54 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 3 ) byref -> edi this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> esi class-hnd single-def <System.Object>
+; V00 this [V00,T02] ( 3, 3 ) byref -> ecx this single-def
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> edx class-hnd single-def <System.Object>
; V02 tmp0 [V02,T01] ( 3, 5 ) ref -> eax class-hnd "spilling QMark2" <System.Reflection.MetadataImport>
;* V03 tmp1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.MetadataImport>
;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref "field V03.m_keepalive (fldOffset=0x0)" P-INDEP
-; V05 tmp3 [V05,T04] ( 2, 2 ) int -> eax "field V03.m_metadataImport2 (fldOffset=0x4)" P-INDEP
-; V06 cse0 [V06,T03] ( 3, 2 ) int -> edx "CSE - aggressive"
+; V05 tmp3 [V05,T03] ( 2, 2 ) int -> eax "field V03.m_metadataImport2 (fldOffset=0x4)" P-INDEP
;
; Lcl frame size = 0
G_M38955_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
- push edi
- push esi
- mov edi, ecx
- ; byrRegs +[edi]
- mov esi, edx
- ; gcrRegs +[esi]
- ;; size=9 bbWeight=1 PerfScore 3.75
-G_M38955_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
- mov eax, esi
+ ;; size=3 bbWeight=1 PerfScore 1.25
+G_M38955_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref, isz
+ ; gcrRegs +[edx]
+ ; byrRegs +[ecx]
+ mov eax, edx
; gcrRegs +[eax]
test eax, eax
- je SHORT G_M38955_IG08
+ jne SHORT G_M38955_IG05
;; size=6 bbWeight=1 PerfScore 1.50
-G_M38955_IG03: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000080 {edi}, byref, isz
- mov edx, dword ptr [eax]
- cmp edx, 0xD1FFAB1E
- jne SHORT G_M38955_IG08
- ;; size=10 bbWeight=0.50 PerfScore 1.62
-G_M38955_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
+G_M38955_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax edx]
+ ; byrRegs -[ecx]
+ xor eax, eax
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M38955_IG04: ; bbWeight=1, epilog, nogc, extend
+ pop ebp
+ ret
+ ;; size=2 bbWeight=1 PerfScore 1.50
+G_M38955_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000005 {eax edx}, byrefRegs=00000002 {ecx}, gcvars, byref, isz
+ ; gcrRegs +[eax edx]
+ ; byrRegs +[ecx]
+ cmp dword ptr [eax], 0xD1FFAB1E
+ jne SHORT G_M38955_IG03
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M38955_IG06: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref
; gcrRegs -[eax]
- cmp edx, 0xD1FFAB1E
- jne SHORT G_M38955_IG07
- ;; size=8 bbWeight=1 PerfScore 1.25
-G_M38955_IG05: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref
- mov eax, dword ptr [esi+0x08]
- cmp eax, dword ptr [edi+0x04]
+ mov eax, dword ptr [edx+0x08]
+ cmp eax, dword ptr [ecx+0x04]
sete al
movzx eax, al
;; size=12 bbWeight=1 PerfScore 6.25
-G_M38955_IG06: ; bbWeight=1, epilog, nogc, extend
- pop esi
- pop edi
+G_M38955_IG07: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret
- ;; size=4 bbWeight=1 PerfScore 2.50
-G_M38955_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz
- mov edx, esi
- ; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; System.Reflection.MetadataImport
- call CORINFO_HELP_UNBOX
- ; gcrRegs -[edx]
- jmp SHORT G_M38955_IG05
- ;; size=14 bbWeight=0.50 PerfScore 1.75
-G_M38955_IG08: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[esi]
- ; byrRegs -[edi]
- xor eax, eax
- ;; size=2 bbWeight=0.25 PerfScore 0.06
-G_M38955_IG09: ; bbWeight=0.25, epilog, nogc, extend
- pop esi
- pop edi
- pop ebp
- ret
- ;; size=4 bbWeight=0.25 PerfScore 0.62
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 69, prolog size 5, PerfScore 19.31, instruction count 31, allocated bytes for code 69 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 35, prolog size 3, PerfScore 14.25, instruction count 16, allocated bytes for code 35 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
; ============================================================
-32 (-47.76%) : 11613.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
@@ -9,73 +9,53 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 3 ) byref -> edi this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> esi class-hnd single-def <System.Object>
-; V02 tmp0 [V02,T01] ( 3, 5 ) ref -> edx class-hnd "spilling QMark2" <System.Reflection.MetadataImport>
+; V00 this [V00,T02] ( 3, 3 ) byref -> ecx this single-def
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> edx class-hnd single-def <System.Object>
+; V02 tmp0 [V02,T01] ( 3, 5 ) ref -> eax class-hnd "spilling QMark2" <System.Reflection.MetadataImport>
;* V03 tmp1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.MetadataImport>
;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref "field V03.m_keepalive (fldOffset=0x0)" P-INDEP
-; V05 tmp3 [V05,T04] ( 2, 2 ) int -> eax "field V03.m_metadataImport2 (fldOffset=0x4)" P-INDEP
-; V06 cse0 [V06,T03] ( 3, 2 ) int -> edx "CSE - aggressive"
+; V05 tmp3 [V05,T03] ( 2, 2 ) int -> eax "field V03.m_metadataImport2 (fldOffset=0x4)" P-INDEP
;
; Lcl frame size = 0
G_M38955_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
- push edi
- push esi
- mov edi, ecx
- ; byrRegs +[edi]
- mov esi, edx
- ; gcrRegs +[esi]
- ;; size=9 bbWeight=1 PerfScore 3.75
-G_M38955_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
- mov edx, esi
+ ;; size=3 bbWeight=1 PerfScore 1.25
+G_M38955_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref, isz
; gcrRegs +[edx]
- test edx, edx
- je SHORT G_M38955_IG08
+ ; byrRegs +[ecx]
+ mov eax, edx
+ ; gcrRegs +[eax]
+ test eax, eax
+ je SHORT G_M38955_IG04
;; size=6 bbWeight=1 PerfScore 1.50
-G_M38955_IG03: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000080 {edi}, byref, isz
- mov edx, dword ptr [edx]
- ; gcrRegs -[edx]
- cmp edx, 0xD1FFAB1E
- jne SHORT G_M38955_IG08
- ;; size=10 bbWeight=0.50 PerfScore 1.62
-G_M38955_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
- cmp edx, 0xD1FFAB1E
+G_M38955_IG03: ; bbWeight=0.50, gcrefRegs=00000005 {eax edx}, byrefRegs=00000002 {ecx}, byref, isz
+ cmp dword ptr [eax], 0xD1FFAB1E
je SHORT G_M38955_IG06
- ;; size=8 bbWeight=1 PerfScore 1.25
-G_M38955_IG05: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref
- mov edx, esi
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M38955_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax edx]
+ ; byrRegs -[ecx]
+ xor eax, eax
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M38955_IG05: ; bbWeight=1, epilog, nogc, extend
+ pop ebp
+ ret
+ ;; size=2 bbWeight=1 PerfScore 1.50
+G_M38955_IG06: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, gcvars, byref
; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; System.Reflection.MetadataImport
- call CORINFO_HELP_UNBOX
- ; gcrRegs -[edx]
- ;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M38955_IG06: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref
- mov eax, dword ptr [esi+0x08]
- cmp eax, dword ptr [edi+0x04]
+ ; byrRegs +[ecx]
+ mov eax, dword ptr [edx+0x08]
+ cmp eax, dword ptr [ecx+0x04]
sete al
movzx eax, al
;; size=12 bbWeight=1 PerfScore 6.25
G_M38955_IG07: ; bbWeight=1, epilog, nogc, extend
- pop esi
- pop edi
pop ebp
ret
- ;; size=4 bbWeight=1 PerfScore 2.50
-G_M38955_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[esi]
- ; byrRegs -[edi]
- xor eax, eax
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M38955_IG09: ; bbWeight=0, epilog, nogc, extend
- pop esi
- pop edi
- pop ebp
- ret
- ;; size=4 bbWeight=0 PerfScore 0.00
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 67, prolog size 5, PerfScore 17.62, instruction count 30, allocated bytes for code 67 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 35, prolog size 3, PerfScore 14.25, instruction count 16, allocated bytes for code 35 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
; ============================================================
+42 (+15.61%) : 62415.dasm - System.Text.Ascii:ChangeCaseushort,ushort,System.Text.Ascii+ToLowerConversion:int (Tier1)
@@ -25,14 +25,14 @@
;* V13 tmp3 [V13 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V14 tmp4 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V15 tmp5 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V16 tmp6 [V16,T00] ( 4, 8 ) int -> [ebp-0x18] spill-single-def "Inlining Arg"
+; V16 tmp6 [V16,T01] ( 5, 8 ) int -> [ebp-0x18] spill-single-def "Inlining Arg"
;* V17 tmp7 [V17 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V18 tmp8 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp9 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V20 tmp10 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V21 tmp11 [V21 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V22 tmp12 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V23 tmp13 [V23,T01] ( 4, 8 ) int -> esi "Inlining Arg"
+; V23 tmp13 [V23,T00] ( 6, 8 ) int -> registers "Inlining Arg"
;* V24 tmp14 [V24 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V25 tmp15 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V26 tmp16 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -90,7 +90,7 @@
; V78 tmp68 [V78,T05] ( 4, 4 ) byref -> edi single-def "V00.[000..004)"
; V79 tmp69 [V79,T04] ( 5, 4 ) int -> ebx "V00.[004..008)"
; V80 tmp70 [V80,T06] ( 4, 4 ) byref -> [ebp-0x24] spill-single-def "V01.[000..004)"
-; V81 tmp71 [V81,T11] ( 5, 3 ) int -> [ebp-0x1C] spill-single-def "V01.[004..008)"
+; V81 tmp71 [V81,T11] ( 6, 3 ) int -> [ebp-0x1C] spill-single-def "V01.[004..008)"
; V82 tmp72 [V82,T08] ( 2, 4 ) int -> ecx "Cast away GC"
; V83 tmp73 [V83,T09] ( 2, 4 ) int -> edx "Cast away GC"
; V84 tmp74 [V84,T10] ( 2, 4 ) int -> edx "argument with side effect"
@@ -110,76 +110,63 @@ G_M42491_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov bword ptr [ebp-0x20], ecx
; GC ptr vars +{V02}
;; size=20 bbWeight=1 PerfScore 7.75
-G_M42491_IG02: ; bbWeight=1, gcVars=00000004 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M42491_IG02: ; bbWeight=1, gcVars=00000004 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
mov edi, bword ptr [ebp+0x10]
; byrRegs +[edi]
mov ebx, dword ptr [ebp+0x14]
- mov eax, bword ptr [ebp+0x08]
- ; byrRegs +[eax]
- mov bword ptr [ebp-0x24], eax
+ mov edx, bword ptr [ebp+0x08]
+ ; byrRegs +[edx]
+ mov bword ptr [ebp-0x24], edx
; GC ptr vars +{V80}
mov eax, dword ptr [ebp+0x0C]
- ; byrRegs -[eax]
mov dword ptr [ebp-0x1C], eax
imul ecx, ebx, 2
- jo G_M42491_IG10
+ jo G_M42491_IG11
mov dword ptr [ebp-0x18], ecx
test ecx, ecx
- jl G_M42491_IG11
- ;; size=38 bbWeight=1 PerfScore 11.25
-G_M42491_IG03: ; bbWeight=1, gcVars=00000044 {V02 V80}, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, gcvars, byref, isz
+ jl SHORT G_M42491_IG12
imul esi, eax, 2
- jo G_M42491_IG10
+ jo SHORT G_M42491_IG11
test esi, esi
- jge SHORT G_M42491_IG04
- mov ecx, 0xD1FFAB1E
- ; gcrRegs +[ecx]
- mov edx, 0xD1FFAB1E
- ; gcrRegs +[edx]
- call [<unknown method>]
- ; gcrRegs -[ecx edx]
- mov ecx, 0xD1FFAB1E
- ; gcrRegs +[ecx]
- mov edx, 0xD1FFAB1E
- ; gcrRegs +[edx]
- call [<unknown method>]
- ; gcrRegs -[ecx edx]
- ;; size=45 bbWeight=1 PerfScore 11.25
-G_M42491_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz
- mov ecx, dword ptr [ebp-0x18]
+ jl SHORT G_M42491_IG05
+ ;; size=43 bbWeight=1 PerfScore 15.50
+G_M42491_IG03: ; bbWeight=1, gcVars=00000044 {V02 V80}, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, gcvars, byref
test ecx, ecx
- je SHORT G_M42491_IG12
+ je G_M42491_IG14
+ ;; size=8 bbWeight=1 PerfScore 1.25
+G_M42491_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, byref, isz
test esi, esi
- je SHORT G_M42491_IG12
- mov edx, bword ptr [ebp-0x24]
- ; byrRegs +[edx]
+ je G_M42491_IG14
mov eax, edx
; byrRegs +[eax]
sub eax, edi
; byrRegs -[eax]
cmp eax, ecx
- jb SHORT G_M42491_IG05
+ jb SHORT G_M42491_IG06
mov ecx, esi
neg ecx
cmp ecx, eax
- jb SHORT G_M42491_IG05
+ jb SHORT G_M42491_IG06
cmp ebx, dword ptr [ebp-0x1C]
- jg SHORT G_M42491_IG13
- jmp SHORT G_M42491_IG06
- ;; size=37 bbWeight=1 PerfScore 13.00
-G_M42491_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ jg G_M42491_IG15
+ jmp SHORT G_M42491_IG07
+ ;; size=35 bbWeight=1 PerfScore 9.75
+G_M42491_IG05: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, byref, isz
+ jmp SHORT G_M42491_IG13
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
+G_M42491_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; byrRegs -[edx edi]
; GC ptr vars -{V02 V80}
mov ecx, 72
call [System.ThrowHelper:ThrowInvalidOperationException(int)]
int3
;; size=12 bbWeight=0 PerfScore 0.00
-G_M42491_IG06: ; bbWeight=1, gcVars=00000044 {V02 V80}, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, gcvars, byref
+G_M42491_IG07: ; bbWeight=1, gcVars=00000044 {V02 V80}, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, gcvars, byref
; byrRegs +[edx edi]
; GC ptr vars +{V02 V80}
xor esi, esi
;; size=2 bbWeight=1 PerfScore 0.25
-G_M42491_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, byref, isz
+G_M42491_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, byref
mov bword ptr [ebp-0x10], edi
mov ecx, edi
mov bword ptr [ebp-0x14], edx
@@ -189,9 +176,9 @@ G_M42491_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000084 {e
; byrRegs -[edx edi]
mov edi, eax
cmp edi, ebx
- ja SHORT G_M42491_IG14
- ;; size=21 bbWeight=1 PerfScore 7.75
-G_M42491_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ja G_M42491_IG17
+ ;; size=25 bbWeight=1 PerfScore 7.75
+G_M42491_IG09: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov edx, bword ptr [ebp-0x20]
; byrRegs +[edx]
mov dword ptr [edx], edi
@@ -199,7 +186,7 @@ G_M42491_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
cmp ebx, edi
cmove eax, esi
;; size=15 bbWeight=1 PerfScore 2.75
-G_M42491_IG09: ; bbWeight=1, epilog, nogc, extend
+G_M42491_IG10: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -207,37 +194,66 @@ G_M42491_IG09: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret 16
;; size=10 bbWeight=1 PerfScore 4.50
-G_M42491_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M42491_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; byrRegs -[edx]
; GC ptr vars -{V02}
call CORINFO_HELP_OVERFLOW
;; size=5 bbWeight=0 PerfScore 0.00
-G_M42491_IG11: ; bbWeight=0, gcVars=00000044 {V02 V80}, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, gcvars, byref
- ; byrRegs +[edi]
+G_M42491_IG12: ; bbWeight=0, gcVars=00000044 {V02 V80}, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, gcvars, byref, isz
+ ; byrRegs +[edx edi]
; GC ptr vars +{V02 V80}
+ mov ecx, 0xD1FFAB1E
+ ; gcrRegs +[ecx]
+ mov edx, 0xD1FFAB1E
+ ; gcrRegs +[edx]
+ ; byrRegs -[edx]
+ call [<unknown method>]
+ ; gcrRegs -[ecx edx]
+ imul ecx, dword ptr [ebp-0x1C], 2
+ jo SHORT G_M42491_IG11
+ mov edx, ecx
+ test edx, edx
+ mov esi, edx
+ jge SHORT G_M42491_IG16
+ ;; size=30 bbWeight=0 PerfScore 0.00
+G_M42491_IG13: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref
mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
; gcrRegs +[edx]
call [<unknown method>]
; gcrRegs -[ecx edx]
- mov eax, dword ptr [ebp-0x1C]
- jmp G_M42491_IG03
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M42491_IG12: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz
- mov eax, dword ptr [ebp-0x1C]
- cmp ebx, eax
+ mov ecx, 0xD1FFAB1E
+ ; gcrRegs +[ecx]
+ mov edx, 0xD1FFAB1E
+ ; gcrRegs +[edx]
+ call [<unknown method>]
+ ; gcrRegs -[ecx edx]
+ mov ecx, dword ptr [ebp-0x18]
+ test ecx, ecx
mov edx, bword ptr [ebp-0x24]
; byrRegs +[edx]
- jle SHORT G_M42491_IG06
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M42491_IG13: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, byref, isz
+ jne G_M42491_IG04
+ ;; size=46 bbWeight=0 PerfScore 0.00
+G_M42491_IG14: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, byref
+ mov eax, dword ptr [ebp-0x1C]
+ cmp ebx, eax
+ jle G_M42491_IG07
+ ;; size=11 bbWeight=0 PerfScore 0.00
+G_M42491_IG15: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, byref
mov esi, dword ptr [ebp-0x1C]
mov ebx, esi
mov esi, 1
- jmp SHORT G_M42491_IG07
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M42491_IG14: ; bbWeight=0, gcVars=00000004 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jmp G_M42491_IG08
+ ;; size=15 bbWeight=0 PerfScore 0.00
+G_M42491_IG16: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref
+ ; byrRegs -[edx]
+ mov ecx, dword ptr [ebp-0x18]
+ mov edx, bword ptr [ebp-0x24]
+ ; byrRegs +[edx]
+ jmp G_M42491_IG03
+ ;; size=11 bbWeight=0 PerfScore 0.00
+G_M42491_IG17: ; bbWeight=0, gcVars=00000004 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; byrRegs -[edx edi]
; GC ptr vars -{V80}
mov ecx, 0xD1FFAB1E
@@ -246,9 +262,9 @@ G_M42491_IG14: ; bbWeight=0, gcVars=00000004 {V02}, gcrefRegs=00000000 {}
; gcrRegs +[edx]
call [<unknown method>]
; gcrRegs -[ecx edx]
- jmp SHORT G_M42491_IG08
- ;; size=18 bbWeight=0 PerfScore 0.00
+ jmp G_M42491_IG09
+ ;; size=21 bbWeight=0 PerfScore 0.00
-; Total bytes of code 269, prolog size 17, PerfScore 58.50, instruction count 89, allocated bytes for code 269 (MethodHash=d7945a04) for method System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToLowerConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
+; Total bytes of code 311, prolog size 17, PerfScore 50.50, instruction count 98, allocated bytes for code 311 (MethodHash=d7945a04) for method System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToLowerConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
; ============================================================
+42 (+15.61%) : 18132.dasm - System.Text.Ascii:ChangeCaseushort,ushort,System.Text.Ascii+ToUpperConversion:int (Tier1)
@@ -25,14 +25,14 @@
;* V13 tmp3 [V13 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V14 tmp4 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V15 tmp5 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V16 tmp6 [V16,T00] ( 4, 8 ) int -> [ebp-0x18] spill-single-def "Inlining Arg"
+; V16 tmp6 [V16,T01] ( 5, 8 ) int -> [ebp-0x18] spill-single-def "Inlining Arg"
;* V17 tmp7 [V17 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V18 tmp8 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp9 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V20 tmp10 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V21 tmp11 [V21 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V22 tmp12 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V23 tmp13 [V23,T01] ( 4, 8 ) int -> esi "Inlining Arg"
+; V23 tmp13 [V23,T00] ( 6, 8 ) int -> registers "Inlining Arg"
;* V24 tmp14 [V24 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V25 tmp15 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V26 tmp16 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -90,7 +90,7 @@
; V78 tmp68 [V78,T05] ( 4, 4 ) byref -> edi single-def "V00.[000..004)"
; V79 tmp69 [V79,T04] ( 5, 4 ) int -> ebx "V00.[004..008)"
; V80 tmp70 [V80,T06] ( 4, 4 ) byref -> [ebp-0x24] spill-single-def "V01.[000..004)"
-; V81 tmp71 [V81,T11] ( 5, 3 ) int -> [ebp-0x1C] spill-single-def "V01.[004..008)"
+; V81 tmp71 [V81,T11] ( 6, 3 ) int -> [ebp-0x1C] spill-single-def "V01.[004..008)"
; V82 tmp72 [V82,T08] ( 2, 4 ) int -> ecx "Cast away GC"
; V83 tmp73 [V83,T09] ( 2, 4 ) int -> edx "Cast away GC"
; V84 tmp74 [V84,T10] ( 2, 4 ) int -> edx "argument with side effect"
@@ -110,76 +110,63 @@ G_M47258_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov bword ptr [ebp-0x20], ecx
; GC ptr vars +{V02}
;; size=20 bbWeight=1 PerfScore 7.75
-G_M47258_IG02: ; bbWeight=1, gcVars=00000004 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M47258_IG02: ; bbWeight=1, gcVars=00000004 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
mov edi, bword ptr [ebp+0x10]
; byrRegs +[edi]
mov ebx, dword ptr [ebp+0x14]
- mov eax, bword ptr [ebp+0x08]
- ; byrRegs +[eax]
- mov bword ptr [ebp-0x24], eax
+ mov edx, bword ptr [ebp+0x08]
+ ; byrRegs +[edx]
+ mov bword ptr [ebp-0x24], edx
; GC ptr vars +{V80}
mov eax, dword ptr [ebp+0x0C]
- ; byrRegs -[eax]
mov dword ptr [ebp-0x1C], eax
imul ecx, ebx, 2
- jo G_M47258_IG10
+ jo G_M47258_IG11
mov dword ptr [ebp-0x18], ecx
test ecx, ecx
- jl G_M47258_IG11
- ;; size=38 bbWeight=1 PerfScore 11.25
-G_M47258_IG03: ; bbWeight=1, gcVars=00000044 {V02 V80}, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, gcvars, byref, isz
+ jl SHORT G_M47258_IG12
imul esi, eax, 2
- jo G_M47258_IG10
+ jo SHORT G_M47258_IG11
test esi, esi
- jge SHORT G_M47258_IG04
- mov ecx, 0xD1FFAB1E
- ; gcrRegs +[ecx]
- mov edx, 0xD1FFAB1E
- ; gcrRegs +[edx]
- call [<unknown method>]
- ; gcrRegs -[ecx edx]
- mov ecx, 0xD1FFAB1E
- ; gcrRegs +[ecx]
- mov edx, 0xD1FFAB1E
- ; gcrRegs +[edx]
- call [<unknown method>]
- ; gcrRegs -[ecx edx]
- ;; size=45 bbWeight=1 PerfScore 11.25
-G_M47258_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz
- mov ecx, dword ptr [ebp-0x18]
+ jl SHORT G_M47258_IG05
+ ;; size=43 bbWeight=1 PerfScore 15.50
+G_M47258_IG03: ; bbWeight=1, gcVars=00000044 {V02 V80}, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, gcvars, byref
test ecx, ecx
- je SHORT G_M47258_IG12
+ je G_M47258_IG14
+ ;; size=8 bbWeight=1 PerfScore 1.25
+G_M47258_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, byref, isz
test esi, esi
- je SHORT G_M47258_IG12
- mov edx, bword ptr [ebp-0x24]
- ; byrRegs +[edx]
+ je G_M47258_IG14
mov eax, edx
; byrRegs +[eax]
sub eax, edi
; byrRegs -[eax]
cmp eax, ecx
- jb SHORT G_M47258_IG05
+ jb SHORT G_M47258_IG06
mov ecx, esi
neg ecx
cmp ecx, eax
- jb SHORT G_M47258_IG05
+ jb SHORT G_M47258_IG06
cmp ebx, dword ptr [ebp-0x1C]
- jg SHORT G_M47258_IG13
- jmp SHORT G_M47258_IG06
- ;; size=37 bbWeight=1 PerfScore 13.00
-G_M47258_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ jg G_M47258_IG15
+ jmp SHORT G_M47258_IG07
+ ;; size=35 bbWeight=1 PerfScore 9.75
+G_M47258_IG05: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, byref, isz
+ jmp SHORT G_M47258_IG13
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
+G_M47258_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; byrRegs -[edx edi]
; GC ptr vars -{V02 V80}
mov ecx, 72
call [System.ThrowHelper:ThrowInvalidOperationException(int)]
int3
;; size=12 bbWeight=0 PerfScore 0.00
-G_M47258_IG06: ; bbWeight=1, gcVars=00000044 {V02 V80}, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, gcvars, byref
+G_M47258_IG07: ; bbWeight=1, gcVars=00000044 {V02 V80}, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, gcvars, byref
; byrRegs +[edx edi]
; GC ptr vars +{V02 V80}
xor esi, esi
;; size=2 bbWeight=1 PerfScore 0.25
-G_M47258_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, byref, isz
+G_M47258_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, byref
mov bword ptr [ebp-0x10], edi
mov ecx, edi
mov bword ptr [ebp-0x14], edx
@@ -189,9 +176,9 @@ G_M47258_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000084 {e
; byrRegs -[edx edi]
mov edi, eax
cmp edi, ebx
- ja SHORT G_M47258_IG14
- ;; size=21 bbWeight=1 PerfScore 7.75
-G_M47258_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ja G_M47258_IG17
+ ;; size=25 bbWeight=1 PerfScore 7.75
+G_M47258_IG09: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov edx, bword ptr [ebp-0x20]
; byrRegs +[edx]
mov dword ptr [edx], edi
@@ -199,7 +186,7 @@ G_M47258_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
cmp ebx, edi
cmove eax, esi
;; size=15 bbWeight=1 PerfScore 2.75
-G_M47258_IG09: ; bbWeight=1, epilog, nogc, extend
+G_M47258_IG10: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -207,37 +194,66 @@ G_M47258_IG09: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret 16
;; size=10 bbWeight=1 PerfScore 4.50
-G_M47258_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M47258_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; byrRegs -[edx]
; GC ptr vars -{V02}
call CORINFO_HELP_OVERFLOW
;; size=5 bbWeight=0 PerfScore 0.00
-G_M47258_IG11: ; bbWeight=0, gcVars=00000044 {V02 V80}, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, gcvars, byref
- ; byrRegs +[edi]
+G_M47258_IG12: ; bbWeight=0, gcVars=00000044 {V02 V80}, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, gcvars, byref, isz
+ ; byrRegs +[edx edi]
; GC ptr vars +{V02 V80}
+ mov ecx, 0xD1FFAB1E
+ ; gcrRegs +[ecx]
+ mov edx, 0xD1FFAB1E
+ ; gcrRegs +[edx]
+ ; byrRegs -[edx]
+ call [<unknown method>]
+ ; gcrRegs -[ecx edx]
+ imul ecx, dword ptr [ebp-0x1C], 2
+ jo SHORT G_M47258_IG11
+ mov edx, ecx
+ test edx, edx
+ mov esi, edx
+ jge SHORT G_M47258_IG16
+ ;; size=30 bbWeight=0 PerfScore 0.00
+G_M47258_IG13: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref
mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
; gcrRegs +[edx]
call [<unknown method>]
; gcrRegs -[ecx edx]
- mov eax, dword ptr [ebp-0x1C]
- jmp G_M47258_IG03
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M47258_IG12: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz
- mov eax, dword ptr [ebp-0x1C]
- cmp ebx, eax
+ mov ecx, 0xD1FFAB1E
+ ; gcrRegs +[ecx]
+ mov edx, 0xD1FFAB1E
+ ; gcrRegs +[edx]
+ call [<unknown method>]
+ ; gcrRegs -[ecx edx]
+ mov ecx, dword ptr [ebp-0x18]
+ test ecx, ecx
mov edx, bword ptr [ebp-0x24]
; byrRegs +[edx]
- jle SHORT G_M47258_IG06
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M47258_IG13: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, byref, isz
+ jne G_M47258_IG04
+ ;; size=46 bbWeight=0 PerfScore 0.00
+G_M47258_IG14: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, byref
+ mov eax, dword ptr [ebp-0x1C]
+ cmp ebx, eax
+ jle G_M47258_IG07
+ ;; size=11 bbWeight=0 PerfScore 0.00
+G_M47258_IG15: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, byref
mov esi, dword ptr [ebp-0x1C]
mov ebx, esi
mov esi, 1
- jmp SHORT G_M47258_IG07
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M47258_IG14: ; bbWeight=0, gcVars=00000004 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jmp G_M47258_IG08
+ ;; size=15 bbWeight=0 PerfScore 0.00
+G_M47258_IG16: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref
+ ; byrRegs -[edx]
+ mov ecx, dword ptr [ebp-0x18]
+ mov edx, bword ptr [ebp-0x24]
+ ; byrRegs +[edx]
+ jmp G_M47258_IG03
+ ;; size=11 bbWeight=0 PerfScore 0.00
+G_M47258_IG17: ; bbWeight=0, gcVars=00000004 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; byrRegs -[edx edi]
; GC ptr vars -{V80}
mov ecx, 0xD1FFAB1E
@@ -246,9 +262,9 @@ G_M47258_IG14: ; bbWeight=0, gcVars=00000004 {V02}, gcrefRegs=00000000 {}
; gcrRegs +[edx]
call [<unknown method>]
; gcrRegs -[ecx edx]
- jmp SHORT G_M47258_IG08
- ;; size=18 bbWeight=0 PerfScore 0.00
+ jmp G_M47258_IG09
+ ;; size=21 bbWeight=0 PerfScore 0.00
-; Total bytes of code 269, prolog size 17, PerfScore 58.50, instruction count 89, allocated bytes for code 269 (MethodHash=ad1d4765) for method System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
+; Total bytes of code 311, prolog size 17, PerfScore 50.50, instruction count 98, allocated bytes for code 311 (MethodHash=ad1d4765) for method System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
; ============================================================
+42 (+15.61%) : 39276.dasm - System.Text.Ascii:ChangeCaseushort,ushort,System.Text.Ascii+ToUpperConversion:int (Tier1)
@@ -25,14 +25,14 @@
;* V13 tmp3 [V13 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V14 tmp4 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V15 tmp5 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V16 tmp6 [V16,T00] ( 4, 8 ) int -> [ebp-0x18] spill-single-def "Inlining Arg"
+; V16 tmp6 [V16,T01] ( 5, 8 ) int -> [ebp-0x18] spill-single-def "Inlining Arg"
;* V17 tmp7 [V17 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V18 tmp8 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp9 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V20 tmp10 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V21 tmp11 [V21 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V22 tmp12 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V23 tmp13 [V23,T01] ( 4, 8 ) int -> esi "Inlining Arg"
+; V23 tmp13 [V23,T00] ( 6, 8 ) int -> registers "Inlining Arg"
;* V24 tmp14 [V24 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V25 tmp15 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V26 tmp16 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -90,7 +90,7 @@
; V78 tmp68 [V78,T05] ( 4, 4 ) byref -> edi single-def "V00.[000..004)"
; V79 tmp69 [V79,T04] ( 5, 4 ) int -> ebx "V00.[004..008)"
; V80 tmp70 [V80,T06] ( 4, 4 ) byref -> [ebp-0x24] spill-single-def "V01.[000..004)"
-; V81 tmp71 [V81,T11] ( 5, 3 ) int -> [ebp-0x1C] spill-single-def "V01.[004..008)"
+; V81 tmp71 [V81,T11] ( 6, 3 ) int -> [ebp-0x1C] spill-single-def "V01.[004..008)"
; V82 tmp72 [V82,T08] ( 2, 4 ) int -> ecx "Cast away GC"
; V83 tmp73 [V83,T09] ( 2, 4 ) int -> edx "Cast away GC"
; V84 tmp74 [V84,T10] ( 2, 4 ) int -> edx "argument with side effect"
@@ -110,76 +110,63 @@ G_M47258_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov bword ptr [ebp-0x20], ecx
; GC ptr vars +{V02}
;; size=20 bbWeight=1 PerfScore 7.75
-G_M47258_IG02: ; bbWeight=1, gcVars=00000004 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M47258_IG02: ; bbWeight=1, gcVars=00000004 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
mov edi, bword ptr [ebp+0x10]
; byrRegs +[edi]
mov ebx, dword ptr [ebp+0x14]
- mov eax, bword ptr [ebp+0x08]
- ; byrRegs +[eax]
- mov bword ptr [ebp-0x24], eax
+ mov edx, bword ptr [ebp+0x08]
+ ; byrRegs +[edx]
+ mov bword ptr [ebp-0x24], edx
; GC ptr vars +{V80}
mov eax, dword ptr [ebp+0x0C]
- ; byrRegs -[eax]
mov dword ptr [ebp-0x1C], eax
imul ecx, ebx, 2
- jo G_M47258_IG10
+ jo G_M47258_IG11
mov dword ptr [ebp-0x18], ecx
test ecx, ecx
- jl G_M47258_IG11
- ;; size=38 bbWeight=1 PerfScore 11.25
-G_M47258_IG03: ; bbWeight=1, gcVars=00000044 {V02 V80}, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, gcvars, byref, isz
+ jl SHORT G_M47258_IG12
imul esi, eax, 2
- jo G_M47258_IG10
+ jo SHORT G_M47258_IG11
test esi, esi
- jge SHORT G_M47258_IG04
- mov ecx, 0xD1FFAB1E
- ; gcrRegs +[ecx]
- mov edx, 0xD1FFAB1E
- ; gcrRegs +[edx]
- call [<unknown method>]
- ; gcrRegs -[ecx edx]
- mov ecx, 0xD1FFAB1E
- ; gcrRegs +[ecx]
- mov edx, 0xD1FFAB1E
- ; gcrRegs +[edx]
- call [<unknown method>]
- ; gcrRegs -[ecx edx]
- ;; size=45 bbWeight=1 PerfScore 11.25
-G_M47258_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz
- mov ecx, dword ptr [ebp-0x18]
+ jl SHORT G_M47258_IG05
+ ;; size=43 bbWeight=1 PerfScore 15.50
+G_M47258_IG03: ; bbWeight=1, gcVars=00000044 {V02 V80}, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, gcvars, byref
test ecx, ecx
- je SHORT G_M47258_IG12
+ je G_M47258_IG14
+ ;; size=8 bbWeight=1 PerfScore 1.25
+G_M47258_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, byref, isz
test esi, esi
- je SHORT G_M47258_IG12
- mov edx, bword ptr [ebp-0x24]
- ; byrRegs +[edx]
+ je G_M47258_IG14
mov eax, edx
; byrRegs +[eax]
sub eax, edi
; byrRegs -[eax]
cmp eax, ecx
- jb SHORT G_M47258_IG05
+ jb SHORT G_M47258_IG06
mov ecx, esi
neg ecx
cmp ecx, eax
- jb SHORT G_M47258_IG05
+ jb SHORT G_M47258_IG06
cmp ebx, dword ptr [ebp-0x1C]
- jg SHORT G_M47258_IG13
- jmp SHORT G_M47258_IG06
- ;; size=37 bbWeight=1 PerfScore 13.00
-G_M47258_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ jg G_M47258_IG15
+ jmp SHORT G_M47258_IG07
+ ;; size=35 bbWeight=1 PerfScore 9.75
+G_M47258_IG05: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, byref, isz
+ jmp SHORT G_M47258_IG13
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
+G_M47258_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; byrRegs -[edx edi]
; GC ptr vars -{V02 V80}
mov ecx, 72
call [System.ThrowHelper:ThrowInvalidOperationException(int)]
int3
;; size=12 bbWeight=0 PerfScore 0.00
-G_M47258_IG06: ; bbWeight=1, gcVars=00000044 {V02 V80}, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, gcvars, byref
+G_M47258_IG07: ; bbWeight=1, gcVars=00000044 {V02 V80}, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, gcvars, byref
; byrRegs +[edx edi]
; GC ptr vars +{V02 V80}
xor esi, esi
;; size=2 bbWeight=1 PerfScore 0.25
-G_M47258_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, byref, isz
+G_M47258_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, byref
mov bword ptr [ebp-0x10], edi
mov ecx, edi
mov bword ptr [ebp-0x14], edx
@@ -189,9 +176,9 @@ G_M47258_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000084 {e
; byrRegs -[edx edi]
mov edi, eax
cmp edi, ebx
- ja SHORT G_M47258_IG14
- ;; size=21 bbWeight=1 PerfScore 7.75
-G_M47258_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ja G_M47258_IG17
+ ;; size=25 bbWeight=1 PerfScore 7.75
+G_M47258_IG09: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov edx, bword ptr [ebp-0x20]
; byrRegs +[edx]
mov dword ptr [edx], edi
@@ -199,7 +186,7 @@ G_M47258_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
cmp ebx, edi
cmove eax, esi
;; size=15 bbWeight=1 PerfScore 2.75
-G_M47258_IG09: ; bbWeight=1, epilog, nogc, extend
+G_M47258_IG10: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -207,37 +194,66 @@ G_M47258_IG09: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret 16
;; size=10 bbWeight=1 PerfScore 4.50
-G_M47258_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M47258_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; byrRegs -[edx]
; GC ptr vars -{V02}
call CORINFO_HELP_OVERFLOW
;; size=5 bbWeight=0 PerfScore 0.00
-G_M47258_IG11: ; bbWeight=0, gcVars=00000044 {V02 V80}, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, gcvars, byref
- ; byrRegs +[edi]
+G_M47258_IG12: ; bbWeight=0, gcVars=00000044 {V02 V80}, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, gcvars, byref, isz
+ ; byrRegs +[edx edi]
; GC ptr vars +{V02 V80}
+ mov ecx, 0xD1FFAB1E
+ ; gcrRegs +[ecx]
+ mov edx, 0xD1FFAB1E
+ ; gcrRegs +[edx]
+ ; byrRegs -[edx]
+ call [<unknown method>]
+ ; gcrRegs -[ecx edx]
+ imul ecx, dword ptr [ebp-0x1C], 2
+ jo SHORT G_M47258_IG11
+ mov edx, ecx
+ test edx, edx
+ mov esi, edx
+ jge SHORT G_M47258_IG16
+ ;; size=30 bbWeight=0 PerfScore 0.00
+G_M47258_IG13: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref
mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
; gcrRegs +[edx]
call [<unknown method>]
; gcrRegs -[ecx edx]
- mov eax, dword ptr [ebp-0x1C]
- jmp G_M47258_IG03
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M47258_IG12: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz
- mov eax, dword ptr [ebp-0x1C]
- cmp ebx, eax
+ mov ecx, 0xD1FFAB1E
+ ; gcrRegs +[ecx]
+ mov edx, 0xD1FFAB1E
+ ; gcrRegs +[edx]
+ call [<unknown method>]
+ ; gcrRegs -[ecx edx]
+ mov ecx, dword ptr [ebp-0x18]
+ test ecx, ecx
mov edx, bword ptr [ebp-0x24]
; byrRegs +[edx]
- jle SHORT G_M47258_IG06
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M47258_IG13: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, byref, isz
+ jne G_M47258_IG04
+ ;; size=46 bbWeight=0 PerfScore 0.00
+G_M47258_IG14: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, byref
+ mov eax, dword ptr [ebp-0x1C]
+ cmp ebx, eax
+ jle G_M47258_IG07
+ ;; size=11 bbWeight=0 PerfScore 0.00
+G_M47258_IG15: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, byref
mov esi, dword ptr [ebp-0x1C]
mov ebx, esi
mov esi, 1
- jmp SHORT G_M47258_IG07
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M47258_IG14: ; bbWeight=0, gcVars=00000004 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jmp G_M47258_IG08
+ ;; size=15 bbWeight=0 PerfScore 0.00
+G_M47258_IG16: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref
+ ; byrRegs -[edx]
+ mov ecx, dword ptr [ebp-0x18]
+ mov edx, bword ptr [ebp-0x24]
+ ; byrRegs +[edx]
+ jmp G_M47258_IG03
+ ;; size=11 bbWeight=0 PerfScore 0.00
+G_M47258_IG17: ; bbWeight=0, gcVars=00000004 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; byrRegs -[edx edi]
; GC ptr vars -{V80}
mov ecx, 0xD1FFAB1E
@@ -246,9 +262,9 @@ G_M47258_IG14: ; bbWeight=0, gcVars=00000004 {V02}, gcrefRegs=00000000 {}
; gcrRegs +[edx]
call [<unknown method>]
; gcrRegs -[ecx edx]
- jmp SHORT G_M47258_IG08
- ;; size=18 bbWeight=0 PerfScore 0.00
+ jmp G_M47258_IG09
+ ;; size=21 bbWeight=0 PerfScore 0.00
-; Total bytes of code 269, prolog size 17, PerfScore 58.50, instruction count 89, allocated bytes for code 269 (MethodHash=ad1d4765) for method System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
+; Total bytes of code 311, prolog size 17, PerfScore 50.50, instruction count 98, allocated bytes for code 311 (MethodHash=ad1d4765) for method System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
; ============================================================
benchmarks.run_tiered.windows.x86.checked.mch
-32 (-47.76%) : 3274.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
@@ -8,74 +8,53 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 2.50) byref -> edi this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> esi class-hnd single-def <System.Object>
+; V00 this [V00,T02] ( 3, 2.50) byref -> ecx this single-def
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> edx class-hnd single-def <System.Object>
; V02 tmp0 [V02,T01] ( 3, 4.50) ref -> eax class-hnd "spilling QMark2" <System.Reflection.MetadataImport>
;* V03 tmp1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.MetadataImport>
;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref "field V03.m_keepalive (fldOffset=0x0)" P-INDEP
-; V05 tmp3 [V05,T04] ( 2, 1 ) int -> eax "field V03.m_metadataImport2 (fldOffset=0x4)" P-INDEP
-; V06 cse0 [V06,T03] ( 3, 1 ) int -> edx "CSE - moderate"
+; V05 tmp3 [V05,T03] ( 2, 1 ) int -> eax "field V03.m_metadataImport2 (fldOffset=0x4)" P-INDEP
;
; Lcl frame size = 0
-G_M38955_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
+G_M38955_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
- push edi
- push esi
- mov edi, ecx
- ; byrRegs +[edi]
- mov esi, edx
- ; gcrRegs +[esi]
- ;; size=9 bbWeight=1 PerfScore 3.75
-G_M38955_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
- mov eax, esi
+ ;; size=3 bbWeight=1 PerfScore 1.25
+G_M38955_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref, isz
+ ; gcrRegs +[edx]
+ ; byrRegs +[ecx]
+ mov eax, edx
; gcrRegs +[eax]
test eax, eax
je SHORT G_M38955_IG04
;; size=6 bbWeight=1 PerfScore 1.50
-G_M38955_IG03: ; bbWeight=0.25, gcrefRegs=00000041 {eax esi}, byrefRegs=00000080 {edi}, byref, isz
- mov edx, dword ptr [eax]
- cmp edx, 0xD1FFAB1E
+G_M38955_IG03: ; bbWeight=0.25, gcrefRegs=00000005 {eax edx}, byrefRegs=00000002 {ecx}, byref, isz
+ cmp dword ptr [eax], 0xD1FFAB1E
je SHORT G_M38955_IG06
- ;; size=10 bbWeight=0.25 PerfScore 0.81
+ ;; size=8 bbWeight=0.25 PerfScore 1.00
G_M38955_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax esi]
- ; byrRegs -[edi]
+ ; gcrRegs -[eax edx]
+ ; byrRegs -[ecx]
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M38955_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop esi
- pop edi
pop ebp
ret
- ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M38955_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz
- ; gcrRegs +[esi]
- ; byrRegs +[edi]
- cmp edx, 0xD1FFAB1E
- je SHORT G_M38955_IG08
- ;; size=8 bbWeight=0.50 PerfScore 0.62
-G_M38955_IG07: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref
- mov edx, esi
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M38955_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, gcvars, byref
; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; System.Reflection.MetadataImport
- call CORINFO_HELP_UNBOX
- ; gcrRegs -[edx]
- ;; size=12 bbWeight=0.25 PerfScore 0.38
-G_M38955_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref
- mov eax, dword ptr [esi+0x08]
- cmp eax, dword ptr [edi+0x04]
+ ; byrRegs +[ecx]
+ mov eax, dword ptr [edx+0x08]
+ cmp eax, dword ptr [ecx+0x04]
sete al
movzx eax, al
;; size=12 bbWeight=0.50 PerfScore 3.12
-G_M38955_IG09: ; bbWeight=0.50, epilog, nogc, extend
- pop esi
- pop edi
+G_M38955_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret
- ;; size=4 bbWeight=0.50 PerfScore 1.25
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 67, prolog size 5, PerfScore 12.81, instruction count 30, allocated bytes for code 67 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 35, prolog size 3, PerfScore 8.50, instruction count 16, allocated bytes for code 35 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
; ============================================================
-20 (-15.87%) : 17441.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (Tier0-FullOpts)
@@ -7,14 +7,16 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T06] ( 2, 2 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V01 arg1 [V01,T07] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V02 loc0 [V02,T00] ( 8, 28.50) int -> registers
-; V03 tmp0 [V03,T01] ( 7, 21 ) int -> eax "dup spill"
-; V04 tmp1 [V04,T04] ( 3, 5.50) byref -> [ebp-0x10] spill-single-def "V00.[000..004)"
-; V05 tmp2 [V05,T03] ( 5, 7 ) int -> ecx "V00.[004..008)"
-; V06 tmp3 [V06,T05] ( 3, 5.50) byref -> esi single-def "V01.[000..004)"
-; V07 tmp4 [V07,T02] ( 6, 7.50) int -> edi "V01.[004..008)"
+; V00 arg0 [V00,T08] ( 2, 2 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
+; V01 arg1 [V01,T09] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
+; V02 loc0 [V02,T00] ( 8, 28.50) int -> edi
+; V03 tmp0 [V03,T01] ( 2, 16 ) int -> edi "dup spill"
+; V04 tmp1 [V04,T06] ( 2, 5 ) byref -> [ebp-0x10] spill-single-def "V00.[000..004)"
+; V05 tmp2 [V05,T05] ( 4, 6.50) int -> edx "V00.[004..008)"
+; V06 tmp3 [V06,T07] ( 2, 5 ) byref -> ecx single-def "V01.[000..004)"
+; V07 tmp4 [V07,T04] ( 5, 7 ) int -> esi "V01.[004..008)"
+; V08 cse0 [V08,T02] ( 3, 8.50) int -> ebx "CSE - aggressive"
+; V09 cse1 [V09,T03] ( 3, 8.50) int -> eax "CSE - aggressive"
;
; Lcl frame size = 4
@@ -27,51 +29,52 @@ G_M264_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
push eax
;; size=7 bbWeight=1 PerfScore 5.25
G_M264_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov edx, bword ptr [ebp+0x10]
- ; byrRegs +[edx]
- mov bword ptr [ebp-0x10], edx
+ mov eax, bword ptr [ebp+0x10]
+ ; byrRegs +[eax]
+ mov bword ptr [ebp-0x10], eax
; GC ptr vars +{V04}
- mov ecx, dword ptr [ebp+0x14]
- mov esi, bword ptr [ebp+0x08]
- ; byrRegs +[esi]
- mov edi, dword ptr [ebp+0x0C]
- cmp ecx, edi
+ mov edx, dword ptr [ebp+0x14]
+ mov ecx, bword ptr [ebp+0x08]
+ ; byrRegs +[ecx]
+ mov esi, dword ptr [ebp+0x0C]
+ cmp edx, esi
je SHORT G_M264_IG04
;; size=19 bbWeight=1 PerfScore 6.25
G_M264_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- ; byrRegs -[edx esi]
+ ; byrRegs -[eax ecx]
; GC ptr vars -{V04}
- cmp ecx, edi
+ cmp edx, esi
jl SHORT G_M264_IG12
- jmp SHORT G_M264_IG10
+ jmp SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.62
-G_M264_IG04: ; bbWeight=0.50, gcVars=00000010 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, gcvars, byref
- ; byrRegs +[edx esi]
- ; GC ptr vars +{V04}
- mov eax, edi
+G_M264_IG04: ; bbWeight=0.50, gcVars=00000040 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000003 {eax ecx}, gcvars, byref
+ ; byrRegs +[eax ecx]
+ ; GC ptr vars +{V04 V06}
+ mov edi, esi
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M264_IG05: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, byref, isz
- dec eax
- mov ebx, eax
- test ebx, ebx
- jl SHORT G_M264_IG06
- cmp ebx, ecx
+G_M264_IG05: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000003 {eax ecx}, byref, isz
+ dec edi
+ js SHORT G_M264_IG10
+ cmp edi, edx
jae SHORT G_M264_IG14
- mov edx, dword ptr [edx+4*ebx]
- ; byrRegs -[edx]
- cmp ebx, edi
+ mov ebx, dword ptr [eax+4*edi]
+ cmp edi, esi
jae SHORT G_M264_IG14
- cmp edx, dword ptr [esi+4*ebx]
- mov edx, bword ptr [ebp-0x10]
- ; byrRegs +[edx]
- je SHORT G_M264_IG08
- ;; size=26 bbWeight=4 PerfScore 45.00
-G_M264_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, byref, isz
- test eax, eax
- jge SHORT G_M264_IG09
- xor eax, eax
- ;; size=6 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ mov eax, dword ptr [ecx+4*edi]
+ ; byrRegs -[eax]
+ cmp ebx, eax
+ je SHORT G_M264_IG09
+ ;; size=21 bbWeight=4 PerfScore 36.00
+G_M264_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; byrRegs -[ecx]
+ ; GC ptr vars -{V04 V06}
+ cmp eax, ebx
+ ja SHORT G_M264_IG12
+ ;; size=4 bbWeight=0.50 PerfScore 0.62
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ mov eax, 1
+ ;; size=5 bbWeight=0.50 PerfScore 0.12
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop ecx
pop ebx
pop esi
@@ -79,25 +82,18 @@ G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret 16
;; size=8 bbWeight=0.50 PerfScore 2.25
-G_M264_IG08: ; bbWeight=2, gcVars=00000010 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, gcvars, byref, isz
- mov eax, ebx
+G_M264_IG09: ; bbWeight=2, gcVars=00000040 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, gcvars, byref, isz
+ ; byrRegs +[ecx]
+ ; GC ptr vars +{V04 V06}
+ mov eax, bword ptr [ebp-0x10]
+ ; byrRegs +[eax]
jmp SHORT G_M264_IG05
- ;; size=4 bbWeight=2 PerfScore 4.50
-G_M264_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, byref, isz
- cmp eax, ecx
- jae SHORT G_M264_IG14
- mov edx, dword ptr [edx+4*eax]
- ; byrRegs -[edx]
- cmp eax, edi
- jae SHORT G_M264_IG14
- cmp edx, dword ptr [esi+4*eax]
- jb SHORT G_M264_IG12
- ;; size=16 bbWeight=0.50 PerfScore 4.25
+ ;; size=5 bbWeight=2 PerfScore 6.00
G_M264_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; byrRegs -[esi]
- ; GC ptr vars -{V04}
- mov eax, 1
- ;; size=5 bbWeight=0.50 PerfScore 0.12
+ ; byrRegs -[eax ecx]
+ ; GC ptr vars -{V04 V06}
+ xor eax, eax
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M264_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop ecx
pop ebx
@@ -122,6 +118,6 @@ G_M264_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byr
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 126, prolog size 7, PerfScore 74.75, instruction count 63, allocated bytes for code 126 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier0-FullOpts)
+; Total bytes of code 106, prolog size 7, PerfScore 63.00, instruction count 54, allocated bytes for code 106 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier0-FullOpts)
; ============================================================
-22 (-10.58%) : 3752.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier0-FullOpts)
@@ -14,8 +14,8 @@
; V03 loc2 [V03,T00] ( 10, 33 ) int -> ebx
; V04 loc3 [V04,T01] ( 8, 25 ) int -> eax
;* V05 loc4 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
-; V06 tmp0 [V06,T06] ( 2, 16 ) int -> eax "dup spill"
-; V07 tmp1 [V07,T03] ( 3, 17 ) int -> ecx "dup spill"
+; V06 tmp0 [V06,T05] ( 2, 16 ) int -> eax "dup spill"
+; V07 tmp1 [V07,T06] ( 2, 16 ) int -> eax "dup spill"
; V08 tmp2 [V08,T07] ( 2, 16 ) int -> ebx "dup spill"
; V09 tmp3 [V09,T08] ( 2, 16 ) int -> esi "dup spill"
; V10 tmp4 [V10,T09] ( 2, 16 ) int -> ebx "dup spill"
@@ -27,12 +27,12 @@
;* V16 tmp10 [V16 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP
;* V17 tmp11 [V17 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x4)" P-INDEP
; V18 tmp12 [V18,T14] ( 3, 6 ) ref -> esi single-def "arr expr"
-; V19 tmp13 [V19,T04] ( 2, 16 ) ref -> ecx "arr expr"
-; V20 tmp14 [V20,T05] ( 2, 16 ) ref -> esi "arr expr"
+; V19 tmp13 [V19,T03] ( 2, 16 ) ref -> ecx "arr expr"
+; V20 tmp14 [V20,T04] ( 2, 16 ) ref -> ecx "arr expr"
; V21 cse0 [V21,T11] ( 5, 10.50) ref -> edx "CSE - moderate"
-; V22 cse1 [V22,T12] ( 4, 10 ) int -> [ebp-0x14] spill-single-def "CSE - moderate"
+; V22 cse1 [V22,T12] ( 4, 10 ) int -> edi "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 4
G_M61853_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -40,8 +40,8 @@ G_M61853_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 8
- ;; size=9 bbWeight=1 PerfScore 4.50
+ push eax
+ ;; size=7 bbWeight=1 PerfScore 5.25
G_M61853_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, byref, isz
; byrRegs +[ecx]
mov eax, dword ptr [ecx+0x2C]
@@ -51,14 +51,13 @@ G_M61853_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000002 {e
mov esi, edx
; gcrRegs +[esi]
mov edi, dword ptr [esi+0x04]
- mov dword ptr [ebp-0x14], edi
cmp eax, edi
jae G_M61853_IG15
movzx esi, word ptr [esi+2*eax+0x08]
; gcrRegs -[esi]
cmp esi, 123
je SHORT G_M61853_IG04
- ;; size=35 bbWeight=1 PerfScore 12.75
+ ;; size=32 bbWeight=1 PerfScore 11.75
G_M61853_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edx]
; byrRegs -[ecx]
@@ -104,69 +103,65 @@ G_M61853_IG06: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000
mov eax, 1
;; size=24 bbWeight=0.50 PerfScore 3.12
G_M61853_IG07: ; bbWeight=0.50, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+ pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret
- ;; size=8 bbWeight=0.50 PerfScore 1.75
+ ;; size=6 bbWeight=0.50 PerfScore 1.75
G_M61853_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
cmp esi, 44
jne SHORT G_M61853_IG13
;; size=5 bbWeight=0.50 PerfScore 0.62
G_M61853_IG09: ; bbWeight=4, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
- lea ecx, [eax-0x01]
- mov eax, ecx
+ dec eax
test eax, eax
- jle SHORT G_M61853_IG10
+ jle SHORT G_M61853_IG13
inc ebx
- mov esi, edx
- ; gcrRegs +[esi]
+ mov ecx, edx
+ ; gcrRegs +[ecx]
cmp ebx, edi
jae SHORT G_M61853_IG15
- movzx esi, word ptr [esi+2*ebx+0x08]
- ; gcrRegs -[esi]
- lea edi, [esi-0x30]
- cmp edi, 9
- mov edi, dword ptr [ebp-0x14]
+ movzx esi, word ptr [ecx+2*ebx+0x08]
+ lea ecx, [esi-0x30]
+ ; gcrRegs -[ecx]
+ cmp ecx, 9
jbe SHORT G_M61853_IG09
- ;; size=32 bbWeight=4 PerfScore 34.00
-G_M61853_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ;; size=25 bbWeight=4 PerfScore 28.00
+G_M61853_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[edx]
- test ecx, ecx
- jle SHORT G_M61853_IG13
xor ebx, ebx
cmp esi, 125
sete bl
- ;; size=12 bbWeight=0.50 PerfScore 1.38
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
G_M61853_IG11: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
movzx eax, bl
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M61853_IG12: ; bbWeight=0.50, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+ pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret
- ;; size=8 bbWeight=0.50 PerfScore 1.75
+ ;; size=6 bbWeight=0.50 PerfScore 1.75
G_M61853_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M61853_IG14: ; bbWeight=0.50, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+ pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret
- ;; size=8 bbWeight=0.50 PerfScore 1.75
+ ;; size=6 bbWeight=0.50 PerfScore 1.75
G_M61853_IG15: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 208, prolog size 9, PerfScore 96.25, instruction count 88, allocated bytes for code 208 (MethodHash=38980e62) for method System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier0-FullOpts)
+; Total bytes of code 186, prolog size 7, PerfScore 89.38, instruction count 83, allocated bytes for code 186 (MethodHash=38980e62) for method System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier0-FullOpts)
; ============================================================
+11 (+2.45%) : 24450.dasm - System.Text.RegularExpressions.RegexCompiler:LoadSearchValuesSystem.__Canon:this (Tier1)
@@ -9,9 +9,9 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 10, 9.50) ref -> esi this class-hnd single-def <System.Text.RegularExpressions.RegexCompiler>
-; V01 arg1 [V01,T03] ( 4, 4 ) ref -> edi class-hnd single-def <System.__Canon[]>
-; V02 arg2 [V02,T20] ( 2, 2 ) int -> [ebp+0x0C] single-def
-; V03 TypeCtx [V03,T13] ( 4, 3.20) int -> [ebp+0x08] single-def
+; V01 arg1 [V01,T06] ( 4, 3.12) ref -> [ebp-0x18] class-hnd single-def <System.__Canon[]>
+; V02 arg2 [V02,T19] ( 2, 2 ) int -> [ebp+0x0C] single-def
+; V03 TypeCtx [V03,T13] ( 4, 3.20) int -> ebx single-def
;* V04 loc0 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
; V05 loc1 [V05,T07] ( 5, 5 ) int -> [ebp-0x14] spill-single-def
;* V06 loc2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>>
@@ -19,31 +19,31 @@
; V08 tmp1 [V08,T01] ( 12, 10.50) ref -> [ebp-0x1C]
;* V09 tmp2 [V09 ] ( 0, 0 ) ref -> zero-ref
;* V10 tmp3 [V10 ] ( 0, 0 ) ref -> zero-ref single-def
-; V11 tmp4 [V11,T15] ( 3, 3 ) int -> ebx "fgMakeTemp is creating a new local variable"
-; V12 tmp5 [V12,T02] ( 6, 8.50) ref -> eax class-hnd "spilling QMark2" <<unknown class>>
+; V11 tmp4 [V11,T20] ( 3, 1.25) int -> edi "fgMakeTemp is creating a new local variable"
+; V12 tmp5 [V12,T02] ( 6, 6.75) ref -> eax class-hnd "spilling QMark2" <<unknown class>>
;* V13 tmp6 [V13 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[System.String]>
;* V14 tmp7 [V14 ] ( 0, 0 ) ref -> zero-ref single-def
-; V15 tmp8 [V15,T17] ( 3, 2 ) ref -> eax single-def
-; V16 tmp9 [V16,T09] ( 3, 4 ) int -> [ebp-0x18] "spilling helperCall"
+; V15 tmp8 [V15,T18] ( 3, 2 ) ref -> [ebp-0x20] spill-single-def
+; V16 tmp9 [V16,T09] ( 3, 4 ) int -> ebx "spilling helperCall"
; V17 tmp10 [V17,T22] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V18 tmp11 [V18,T08] ( 4, 4 ) ref -> eax class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V19 tmp12 [V19 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.String]>
;* V20 tmp13 [V20,T21] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
; V21 tmp14 [V21,T23] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V22 tmp15 [V22,T16] ( 3, 2.50) ref -> ecx class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V22 tmp15 [V22,T15] ( 3, 2.50) ref -> ecx class-hnd single-def "Inline stloc first use temp" <<unknown class>>
; V23 tmp16 [V23,T14] ( 4, 3 ) int -> edx "Inline stloc first use temp"
;* V24 tmp17 [V24 ] ( 0, 0 ) byref -> zero-ref single-def "field V13._reference (fldOffset=0x0)" P-INDEP
;* V25 tmp18 [V25 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x4)" P-INDEP
-; V26 tmp19 [V26,T18] ( 3, 2 ) byref -> edi "field V19._reference (fldOffset=0x0)" P-INDEP
-; V27 tmp20 [V27,T19] ( 3, 2 ) int -> eax "field V19._length (fldOffset=0x4)" P-INDEP
-; V28 tmp21 [V28,T04] ( 3, 6 ) ref -> ecx single-def "argument with side effect"
-; V29 tmp22 [V29,T05] ( 3, 6 ) ref -> ecx single-def "arr expr"
+; V26 tmp19 [V26,T16] ( 3, 2.50) byref -> edi "field V19._reference (fldOffset=0x0)" P-INDEP
+; V27 tmp20 [V27,T17] ( 3, 2.50) int -> eax "field V19._length (fldOffset=0x4)" P-INDEP
+; V28 tmp21 [V28,T03] ( 3, 6 ) ref -> ecx single-def "argument with side effect"
+; V29 tmp22 [V29,T04] ( 3, 6 ) ref -> ecx single-def "arr expr"
; V30 tmp23 [V30,T11] ( 2, 4 ) ref -> ecx single-def "argument with side effect"
; V31 tmp24 [V31,T12] ( 2, 4 ) ref -> edx single-def "argument with side effect"
; V32 tmp25 [V32,T24] ( 2, 0 ) ref -> edi single-def "argument with side effect"
-; V33 rat0 [V33,T06] ( 3, 5.60) int -> eax "fgMakeTemp is creating a new local variable"
+; V33 rat0 [V33,T05] ( 3, 5.60) int -> edx "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 16
+; Lcl frame size = 20
G_M20497_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -51,7 +51,7 @@ G_M20497_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 16
+ sub esp, 20
mov eax, dword ptr [ebp+0x08]
mov dword ptr [ebp-0x10], eax
mov esi, ecx
@@ -85,37 +85,39 @@ G_M20497_IG04: ; bbWeight=1, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=
; GC ptr vars +{V08}
mov ecx, dword ptr [edx+0x08]
mov dword ptr [ebp-0x14], ecx
- mov dword ptr [ebp+0x08], ebx
mov eax, dword ptr [ebx+0x20]
cmp dword ptr [eax], 0xD1FFAB1E
jne G_M20497_IG18
+ mov gword ptr [ebp-0x18], edi
+ ; GC ptr vars +{V01}
mov eax, edi
; gcrRegs +[eax]
test eax, eax
je SHORT G_M20497_IG07
;; size=33 bbWeight=1 PerfScore 12.50
-G_M20497_IG05: ; bbWeight=0.25, gcVars=00000002 {V08}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[edx]
- mov ebx, 0xD1FFAB1E ; <unknown class>
- cmp dword ptr [eax], ebx
+G_M20497_IG05: ; bbWeight=0.25, gcVars=00000042 {V01 V08}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[edx edi]
+ mov edi, 0xD1FFAB1E ; <unknown class>
+ cmp dword ptr [eax], edi
je SHORT G_M20497_IG08
;; size=9 bbWeight=0.25 PerfScore 1.06
-G_M20497_IG06: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M20497_IG06: ; bbWeight=0.12, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
- mov ecx, ebx
- mov edx, edi
+ mov ecx, edi
+ mov edx, gword ptr [ebp-0x18]
; gcrRegs +[edx]
+ ; GC ptr vars -{V01}
call CORINFO_HELP_CHKCASTARRAY
- ; gcrRegs -[edx edi] +[eax]
+ ; gcrRegs -[edx] +[eax]
jmp SHORT G_M20497_IG08
- ;; size=11 bbWeight=1 PerfScore 3.50
-G_M20497_IG07: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=12 bbWeight=0.12 PerfScore 0.53
+G_M20497_IG07: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
xor edi, edi
; byrRegs +[edi]
xor eax, eax
jmp SHORT G_M20497_IG09
- ;; size=6 bbWeight=0.50 PerfScore 1.25
+ ;; size=6 bbWeight=1 PerfScore 2.50
G_M20497_IG08: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
; gcrRegs +[eax]
; byrRegs -[edi]
@@ -125,9 +127,9 @@ G_M20497_IG08: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=0
; gcrRegs -[eax]
;; size=6 bbWeight=0.50 PerfScore 1.25
G_M20497_IG09: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
- mov ebx, dword ptr [ebp+0x0C]
- add ebx, -4
- cmp ebx, 1
+ mov ecx, dword ptr [ebp+0x0C]
+ add ecx, -4
+ cmp ecx, 1
ja G_M20497_IG19
push eax
push edi
@@ -137,6 +139,8 @@ G_M20497_IG09: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080
call [<unknown method>]
; gcrRegs +[eax]
; byrRegs -[edi]
+ mov gword ptr [ebp-0x20], eax
+ ; GC ptr vars +{V15}
mov edi, gword ptr [ebp-0x1C]
; gcrRegs +[edi]
inc dword ptr [edi+0x0C]
@@ -145,25 +149,30 @@ G_M20497_IG09: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080
mov edx, dword ptr [edi+0x08]
cmp dword ptr [ecx+0x04], edx
jbe SHORT G_M20497_IG11
- ;; size=49 bbWeight=1 PerfScore 22.75
-G_M20497_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C3 {eax ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ;; size=52 bbWeight=1 PerfScore 23.75
+G_M20497_IG10: ; bbWeight=0.50, gcVars=00040000 {V15}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[eax]
; GC ptr vars -{V08}
- lea ebx, [edx+0x01]
- mov dword ptr [edi+0x08], ebx
- push eax
+ lea eax, [edx+0x01]
+ mov dword ptr [edi+0x08], eax
+ push gword ptr [ebp-0x20]
+ ; GC ptr vars -{V15}
call CORINFO_HELP_ARRADDR_ST
- ; gcrRegs -[eax ecx]
+ ; gcrRegs -[ecx]
jmp SHORT G_M20497_IG12
- ;; size=14 bbWeight=0.50 PerfScore 2.75
-G_M20497_IG11: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref
+ ;; size=16 bbWeight=0.50 PerfScore 2.75
+G_M20497_IG11: ; bbWeight=0.50, gcVars=00040000 {V15}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
+ ; GC ptr vars +{V15 V18}
+ mov eax, gword ptr [ebp-0x20]
; gcrRegs +[eax]
mov ecx, edi
; gcrRegs +[ecx]
mov edx, eax
; gcrRegs +[edx]
+ ; GC ptr vars -{V15 V18}
call [<unknown method>]
; gcrRegs -[eax ecx edx]
- ;; size=10 bbWeight=0.50 PerfScore 1.75
+ ;; size=13 bbWeight=0.50 PerfScore 2.25
G_M20497_IG12: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov edx, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[edx]
@@ -177,8 +186,8 @@ G_M20497_IG12: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[ecx edx]
- mov ebx, dword ptr [ebp-0x14]
- lea edx, [4*ebx]
+ mov eax, dword ptr [ebp-0x14]
+ lea edx, [4*eax]
mov ecx, esi
; gcrRegs +[ecx]
call [<unknown method>]
@@ -196,34 +205,36 @@ G_M20497_IG12: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
mov eax, dword ptr [eax+0x2C]
call [eax+0x10]<unknown method>
; gcrRegs -[ecx]
- cmp ebx, dword ptr [edi+0x08]
+ mov eax, dword ptr [ebp-0x14]
+ cmp eax, dword ptr [edi+0x08]
jae G_M20497_IG20
- mov ecx, dword ptr [ebp+0x08]
- mov edx, dword ptr [ecx+0x20]
- mov eax, dword ptr [edx+0x08]
- test eax, eax
+ mov ecx, dword ptr [ebx+0x20]
+ mov edx, dword ptr [ecx+0x08]
+ test edx, edx
je SHORT G_M20497_IG14
;; size=97 bbWeight=1 PerfScore 42.00
G_M20497_IG13: ; bbWeight=0.80, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x18], eax
+ mov ebx, edx
jmp SHORT G_M20497_IG15
- ;; size=5 bbWeight=0.80 PerfScore 2.40
+ ;; size=4 bbWeight=0.80 PerfScore 1.80
G_M20497_IG14: ; bbWeight=0.20, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ mov ecx, ebx
mov edx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
- mov dword ptr [ebp-0x18], eax
- ;; size=13 bbWeight=0.20 PerfScore 0.45
+ mov ebx, eax
+ ;; size=14 bbWeight=0.20 PerfScore 0.35
G_M20497_IG15: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [edi+0x04]
; gcrRegs +[ecx]
- cmp ebx, dword ptr [ecx+0x04]
+ mov eax, dword ptr [ebp-0x14]
+ cmp eax, dword ptr [ecx+0x04]
jae SHORT G_M20497_IG17
- mov ecx, gword ptr [ecx+4*ebx+0x08]
+ mov ecx, gword ptr [ecx+4*eax+0x08]
call <unknown method>
; gcrRegs -[ecx edi] +[eax]
mov ecx, eax
; gcrRegs +[ecx]
- mov edx, dword ptr [ebp-0x18]
+ mov edx, ebx
call [System.Text.RegularExpressions.RegexCompiler:<LoadSearchValues>g__MakeUnsafeAs|163_0[System.__Canon](System.Type):System.Reflection.MethodInfo]
; gcrRegs -[ecx]
mov edx, eax
@@ -232,7 +243,7 @@ G_M20497_IG15: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[eax ecx edx esi]
- ;; size=38 bbWeight=1 PerfScore 16.75
+ ;; size=40 bbWeight=1 PerfScore 17.00
G_M20497_IG16: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
@@ -288,6 +299,6 @@ G_M20497_IG20: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
int3
...
+3 (+3.49%) : 28201.dasm - System.Net.Http.HttpConnection+HttpContentReadStream:Dispose(ubyte):this (Tier1)
@@ -12,6 +12,7 @@
; V01 arg1 [V01,T01] ( 3, 2.50) ubyte -> edx single-def
; V02 tmp0 [V02,T02] ( 3, 3 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <System.Net.Http.HttpConnection>
; V03 cse0 [V03,T03] ( 3, 1.50) ref -> ecx "CSE - moderate"
+; V04 cse1 [V04,T04] ( 2, 1 ) int -> ecx "CSE - moderate"
;
; Lcl frame size = 0
@@ -44,7 +45,8 @@ G_M41763_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000
;; size=4 bbWeight=0.50 PerfScore 1.25
G_M41763_IG04: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[esi]
- test dl, dl
+ movzx ecx, dl
+ test ecx, ecx
je SHORT G_M41763_IG03
mov ecx, esi
; gcrRegs +[ecx]
@@ -58,7 +60,7 @@ G_M41763_IG04: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {e
; gcrRegs +[ecx]
call [System.Net.Http.HttpConnection+HttpContentReadStream:DrainOnDisposeAsync():System.Threading.Tasks.Task:this]
; gcrRegs -[ecx esi] +[eax]
- ;; size=26 bbWeight=0.50 PerfScore 6.50
+ ;; size=29 bbWeight=0.50 PerfScore 6.62
G_M41763_IG05: ; bbWeight=0.50, epilog, nogc, extend
pop ebx
pop esi
@@ -81,6 +83,6 @@ G_M41763_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {e
jmp SHORT G_M41763_IG03
;; size=27 bbWeight=0.50 PerfScore 6.38
-; Total bytes of code 86, prolog size 5, PerfScore 44.12, instruction count 39, allocated bytes for code 86 (MethodHash=201e5cdc) for method System.Net.Http.HttpConnection+HttpContentReadStream:Dispose(ubyte):this (Tier1)
+; Total bytes of code 89, prolog size 5, PerfScore 44.25, instruction count 40, allocated bytes for code 89 (MethodHash=201e5cdc) for method System.Net.Http.HttpConnection+HttpContentReadStream:Dispose(ubyte):this (Tier1)
; ============================================================
+14 (+7.37%) : 6624.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (Tier0-FullOpts)
@@ -8,25 +8,26 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T09] ( 5, 15 ) ref -> edi class-hnd single-def <System.Reflection.ParameterInfo[]>
-; V01 arg1 [V01,T10] ( 5, 11 ) ref -> [ebp-0x18] class-hnd single-def <System.Type[]>
+; V00 arg0 [V00,T09] ( 4, 11 ) ref -> edi class-hnd single-def <System.Reflection.ParameterInfo[]>
+; V01 arg1 [V01,T11] ( 4, 7 ) ref -> [ebp-0x20] class-hnd single-def <System.Type[]>
; V02 arg2 [V02,T08] ( 3, 21 ) byref -> esi single-def
; V03 loc0 [V03,T07] ( 6, 21 ) int -> [ebp-0x10]
;* V04 loc1 [V04,T12] ( 0, 0 ) ubyte -> zero-ref
-; V05 loc2 [V05,T11] ( 2, 12 ) ref -> [ebp-0x1C] class-hnd spill-single-def <System.Type>
+; V05 loc2 [V05,T10] ( 2, 12 ) ref -> [ebp-0x24] class-hnd spill-single-def <System.Type>
; V06 loc3 [V06,T00] ( 9,100 ) int -> [ebp-0x14]
;* V07 tmp0 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
-; V08 tmp1 [V08,T05] ( 3, 24 ) ref -> edx class-hnd "impAppendStmt" <<unknown class>>
+; V08 tmp1 [V08,T04] ( 3, 24 ) ref -> ecx class-hnd "impAppendStmt" <<unknown class>>
;* V09 tmp2 [V09 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V10 tmp3 [V10,T14] ( 0, 0 ) ubyte -> zero-ref "field V07.hasValue (fldOffset=0x0)" P-INDEP
+;* V10 tmp3 [V10,T15] ( 0, 0 ) ubyte -> zero-ref "field V07.hasValue (fldOffset=0x0)" P-INDEP
; V11 tmp4 [V11,T13] ( 2, 8 ) int -> ebx "field V07.value (fldOffset=0x4)" P-INDEP
-; V12 tmp5 [V12,T01] ( 3, 96 ) ref -> edx "arr expr"
-; V13 tmp6 [V13,T02] ( 3, 48 ) ref -> edx "argument with side effect"
+; V12 tmp5 [V12,T01] ( 3, 96 ) ref -> ebx "arr expr"
+; V13 tmp6 [V13,T02] ( 3, 48 ) ref -> ebx "argument with side effect"
; V14 tmp7 [V14,T03] ( 3, 48 ) ref -> eax "argument with side effect"
-; V15 tmp8 [V15,T06] ( 3, 24 ) byref -> edx "BlockOp address local"
-; V16 cse0 [V16,T04] ( 5, 26 ) int -> registers multi-def "CSE - moderate"
+; V15 tmp8 [V15,T05] ( 3, 24 ) byref -> edx "BlockOp address local"
+; V16 cse0 [V16,T06] ( 4, 22 ) int -> [ebp-0x18] spill-single-def "CSE - moderate"
+; V17 cse1 [V17,T14] ( 3, 6 ) int -> [ebp-0x1C] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 24
G_M59545_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -34,7 +35,7 @@ G_M59545_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 16
+ sub esp, 24
mov edi, ecx
; gcrRegs +[edi]
mov ebx, edx
@@ -44,6 +45,7 @@ G_M59545_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
;; size=16 bbWeight=1 PerfScore 6.00
G_M59545_IG02: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz
mov eax, dword ptr [edi+0x04]
+ mov dword ptr [ebp-0x18], eax
mov edx, eax
mov ecx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWARR_1_VC
@@ -54,47 +56,47 @@ G_M59545_IG02: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=0000
; gcrRegs -[eax]
; byrRegs -[edx]
xor eax, eax
- cmp dword ptr [ebx+0x04], 0
+ mov edx, dword ptr [ebx+0x04]
+ mov dword ptr [ebp-0x1C], edx
+ test edx, edx
jle SHORT G_M59545_IG09
- ;; size=30 bbWeight=1 PerfScore 9.00
+ ;; size=37 bbWeight=1 PerfScore 10.25
G_M59545_IG03: ; bbWeight=4, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz
- mov gword ptr [ebp-0x18], ebx
+ mov gword ptr [ebp-0x20], ebx
; GC ptr vars +{V01}
mov dword ptr [ebp-0x10], eax
- mov edx, gword ptr [ebx+4*eax+0x08]
- ; gcrRegs +[edx]
- mov gword ptr [ebp-0x1C], edx
+ mov ecx, gword ptr [ebx+4*eax+0x08]
+ ; gcrRegs +[ecx]
+ mov gword ptr [ebp-0x24], ecx
; GC ptr vars +{V05}
- xor ecx, ecx
- mov ebx, dword ptr [edi+0x04]
- ; gcrRegs -[ebx]
- test ebx, ebx
- jle SHORT G_M59545_IG11
- ;; size=22 bbWeight=4 PerfScore 34.00
+ xor edx, edx
+ cmp dword ptr [ebp-0x18], 0
+ jle SHORT G_M59545_IG12
+ ;; size=21 bbWeight=4 PerfScore 33.00
G_M59545_IG04: ; bbWeight=16, gcVars=00000C00 {V01 V05}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
- ; gcrRegs -[edx]
- mov edx, gword ptr [esi]
- ; gcrRegs +[edx]
- cmp ecx, dword ptr [edx+0x04]
- jae SHORT G_M59545_IG13
- cmp byte ptr [edx+8*ecx+0x08], 0
+ ; gcrRegs -[ecx ebx]
+ mov ebx, gword ptr [esi]
+ ; gcrRegs +[ebx]
+ cmp edx, dword ptr [ebx+0x04]
+ jae SHORT G_M59545_IG14
+ cmp byte ptr [ebx+8*edx+0x08], 0
jne SHORT G_M59545_IG06
;; size=14 bbWeight=16 PerfScore 160.00
G_M59545_IG05: ; bbWeight=8, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
- ; gcrRegs -[edx]
- mov dword ptr [ebp-0x14], ecx
- mov edx, gword ptr [edi+4*ecx+0x08]
- ; gcrRegs +[edx]
- mov ecx, edx
+ ; gcrRegs -[ebx]
+ mov dword ptr [ebp-0x14], edx
+ mov ebx, gword ptr [edi+4*edx+0x08]
+ ; gcrRegs +[ebx]
+ mov ecx, ebx
; gcrRegs +[ecx]
- mov edx, dword ptr [edx]
- ; gcrRegs -[edx]
- mov edx, dword ptr [edx+0x2C]
- call [edx+0x1C]<unknown method>
+ mov ebx, dword ptr [ebx]
+ ; gcrRegs -[ebx]
+ mov ebx, dword ptr [ebx+0x2C]
+ call [ebx+0x1C]<unknown method>
; gcrRegs -[ecx] +[eax]
mov ecx, eax
; gcrRegs +[ecx]
- mov edx, gword ptr [ebp-0x1C]
+ mov edx, gword ptr [ebp-0x24]
; gcrRegs +[edx]
mov eax, dword ptr [eax]
; gcrRegs -[eax]
@@ -102,45 +104,43 @@ G_M59545_IG05: ; bbWeight=8, gcrefRegs=00000080 {edi}, byrefRegs=00000040
call [eax+0x10]<unknown method>
; gcrRegs -[ecx edx]
test eax, eax
- mov ecx, dword ptr [ebp-0x14]
+ mov edx, dword ptr [ebp-0x14]
jne SHORT G_M59545_IG08
;; size=37 bbWeight=8 PerfScore 166.00
G_M59545_IG06: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
- inc ecx
- cmp ebx, ecx
+ inc edx
+ cmp dword ptr [ebp-0x18], edx
jg SHORT G_M59545_IG04
- ;; size=5 bbWeight=16 PerfScore 24.00
+ ;; size=6 bbWeight=16 PerfScore 52.00
G_M59545_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[edi]
; byrRegs -[esi]
; GC ptr vars -{V01 V05}
- jmp SHORT G_M59545_IG11
+ jmp SHORT G_M59545_IG12
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M59545_IG08: ; bbWeight=4, gcVars=00000400 {V01}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
+G_M59545_IG08: ; bbWeight=4, gcVars=00000800 {V01}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; gcrRegs +[edi]
; byrRegs +[esi]
- ; GC ptr vars +{V01 V10}
- mov edx, gword ptr [esi]
- ; gcrRegs +[edx]
+ ; GC ptr vars +{V01 V11}
+ mov ecx, gword ptr [esi]
+ ; gcrRegs +[ecx]
mov eax, dword ptr [ebp-0x10]
mov ebx, eax
- cmp ecx, dword ptr [edx+0x04]
- jae SHORT G_M59545_IG13
- lea edx, bword ptr [edx+8*ecx+0x08]
- ; gcrRegs -[edx]
+ cmp edx, dword ptr [ecx+0x04]
+ jae SHORT G_M59545_IG14
+ lea edx, bword ptr [ecx+8*edx+0x08]
; byrRegs +[edx]
mov byte ptr [edx], 1
mov dword ptr [edx+0x04], ebx
inc eax
- mov ebx, gword ptr [ebp-0x18]
- ; gcrRegs +[ebx]
- cmp dword ptr [ebx+0x04], eax
- jg SHORT G_M59545_IG03
- ;; size=31 bbWeight=4 PerfScore 62.00
+ mov ebx, dword ptr [ebp-0x1C]
+ cmp ebx, eax
+ jg SHORT G_M59545_IG11
+ ;; size=30 bbWeight=4 PerfScore 51.00
G_M59545_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[ebx edi]
+ ; gcrRegs -[ecx edi]
; byrRegs -[edx esi]
- ; GC ptr vars -{V01 V10}
+ ; GC ptr vars -{V01 V11}
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
G_M59545_IG10: ; bbWeight=0.50, epilog, nogc, extend
@@ -151,10 +151,21 @@ G_M59545_IG10: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret 4
;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M59545_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M59545_IG11: ; bbWeight=2, gcVars=00000800 {V01}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref
+ ; gcrRegs +[edi]
+ ; byrRegs +[esi]
+ ; GC ptr vars +{V01 V11}
+ mov ebx, gword ptr [ebp-0x20]
+ ; gcrRegs +[ebx]
+ jmp G_M59545_IG03
+ ;; size=8 bbWeight=2 PerfScore 6.00
+G_M59545_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[ebx edi]
+ ; byrRegs -[esi]
+ ; GC ptr vars -{V01 V11}
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M59545_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M59545_IG13: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -162,11 +173,11 @@ G_M59545_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret 4
;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M59545_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M59545_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 190, prolog size 16, PerfScore 466.75, instruction count 77, allocated bytes for code 190 (MethodHash=29c21766) for method Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (Tier0-FullOpts)
+; Total bytes of code 204, prolog size 16, PerfScore 490.00, instruction count 81, allocated bytes for code 204 (MethodHash=29c21766) for method Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (Tier0-FullOpts)
; ============================================================
coreclr_tests.run.windows.x86.checked.mch
-32 (-48.48%) : 431532.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
@@ -9,70 +9,51 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 3 ) byref -> ecx this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> esi class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> edx class-hnd single-def <System.Object>
; V02 tmp0 [V02,T01] ( 3, 5 ) ref -> eax class-hnd "spilling QMark2" <System.Int32>
-; V03 tmp1 [V03,T03] ( 2, 4 ) int -> edi "impAppendStmt"
-; V04 cse0 [V04,T04] ( 3, 2 ) int -> edx "CSE - aggressive"
+; V03 tmp1 [V03,T03] ( 2, 4 ) int -> eax "impAppendStmt"
;
; Lcl frame size = 0
G_M40448_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
- push edi
- push esi
- mov esi, edx
- ; gcrRegs +[esi]
- ;; size=7 bbWeight=1 PerfScore 3.50
-G_M40448_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref, isz
+ ;; size=3 bbWeight=1 PerfScore 1.25
+G_M40448_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref, isz
+ ; gcrRegs +[edx]
; byrRegs +[ecx]
- mov eax, esi
+ mov eax, edx
; gcrRegs +[eax]
test eax, eax
- je SHORT G_M40448_IG08
+ jne SHORT G_M40448_IG05
;; size=6 bbWeight=1 PerfScore 1.50
-G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000002 {ecx}, byref, isz
- mov edx, dword ptr [eax]
- cmp edx, 0xD1FFAB1E
- jne SHORT G_M40448_IG08
- ;; size=10 bbWeight=0.50 PerfScore 1.62
-G_M40448_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref, isz
- ; gcrRegs -[eax]
- mov edi, dword ptr [ecx]
- cmp edx, 0xD1FFAB1E
- jne SHORT G_M40448_IG07
- ;; size=10 bbWeight=1 PerfScore 3.25
-G_M40448_IG05: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M40448_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax edx]
; byrRegs -[ecx]
xor eax, eax
- cmp edi, dword ptr [esi+0x04]
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M40448_IG04: ; bbWeight=1, epilog, nogc, extend
+ pop ebp
+ ret
+ ;; size=2 bbWeight=1 PerfScore 1.50
+G_M40448_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000005 {eax edx}, byrefRegs=00000002 {ecx}, gcvars, byref, isz
+ ; gcrRegs +[eax edx]
+ ; byrRegs +[ecx]
+ cmp dword ptr [eax], 0xD1FFAB1E
+ jne SHORT G_M40448_IG03
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M40448_IG06: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref
+ ; gcrRegs -[eax]
+ mov eax, dword ptr [ecx]
+ cmp eax, dword ptr [edx+0x04]
sete al
- ;; size=8 bbWeight=1 PerfScore 4.25
-G_M40448_IG06: ; bbWeight=1, epilog, nogc, extend
- pop esi
- pop edi
+ movzx eax, al
+ ;; size=11 bbWeight=1 PerfScore 6.25
+G_M40448_IG07: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret
- ;; size=4 bbWeight=1 PerfScore 2.50
-G_M40448_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- mov edx, esi
- ; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; System.Int32
- call [CORINFO_HELP_UNBOX]
- ; gcrRegs -[edx]
- jmp SHORT G_M40448_IG05
- ;; size=15 bbWeight=0.50 PerfScore 2.75
-G_M40448_IG08: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[esi]
- xor eax, eax
- ;; size=2 bbWeight=0.25 PerfScore 0.06
-G_M40448_IG09: ; bbWeight=0.25, epilog, nogc, extend
- pop esi
- pop edi
- pop ebp
- ret
- ;; size=4 bbWeight=0.25 PerfScore 0.62
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 66, prolog size 5, PerfScore 20.06, instruction count 30, allocated bytes for code 66 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 34, prolog size 3, PerfScore 14.25, instruction count 16, allocated bytes for code 34 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
; ============================================================
-30 (-46.88%) : 309121.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
@@ -9,69 +9,49 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 3 ) byref -> ecx this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> esi class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> edx class-hnd single-def <System.Object>
; V02 tmp0 [V02,T01] ( 3, 5 ) ref -> eax class-hnd "spilling QMark2" <System.Int32>
-; V03 tmp1 [V03,T03] ( 2, 4 ) int -> edi "impAppendStmt"
-; V04 cse0 [V04,T04] ( 3, 2 ) int -> edx "CSE - aggressive"
+; V03 tmp1 [V03,T03] ( 2, 4 ) int -> eax "impAppendStmt"
;
; Lcl frame size = 0
G_M40448_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
- push edi
- push esi
- mov esi, edx
- ; gcrRegs +[esi]
- ;; size=7 bbWeight=1 PerfScore 3.50
-G_M40448_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref, isz
+ ;; size=3 bbWeight=1 PerfScore 1.25
+G_M40448_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref, isz
+ ; gcrRegs +[edx]
; byrRegs +[ecx]
- mov eax, esi
+ mov eax, edx
; gcrRegs +[eax]
test eax, eax
- je SHORT G_M40448_IG08
- ;; size=6 bbWeight=1 PerfScore 1.50
-G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000002 {ecx}, byref, isz
- mov edx, dword ptr [eax]
- cmp edx, 0xD1FFAB1E
- jne SHORT G_M40448_IG08
- ;; size=10 bbWeight=0.50 PerfScore 1.62
-G_M40448_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref, isz
- ; gcrRegs -[eax]
- mov edi, dword ptr [ecx]
- cmp edx, 0xD1FFAB1E
je SHORT G_M40448_IG06
- ;; size=10 bbWeight=1 PerfScore 3.25
-G_M40448_IG05: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- ; byrRegs -[ecx]
- mov edx, esi
- ; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; System.Int32
- call [CORINFO_HELP_UNBOX]
- ; gcrRegs -[edx]
- ;; size=13 bbWeight=0.50 PerfScore 1.75
-G_M40448_IG06: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- xor eax, eax
- cmp edi, dword ptr [esi+0x04]
+ ;; size=6 bbWeight=1 PerfScore 1.50
+G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=00000005 {eax edx}, byrefRegs=00000002 {ecx}, byref, isz
+ cmp dword ptr [eax], 0xD1FFAB1E
+ jne SHORT G_M40448_IG06
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M40448_IG04: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref
+ ; gcrRegs -[eax]
+ mov eax, dword ptr [ecx]
+ cmp eax, dword ptr [edx+0x04]
sete al
- ;; size=8 bbWeight=1 PerfScore 4.25
-G_M40448_IG07: ; bbWeight=1, epilog, nogc, extend
- pop esi
- pop edi
+ movzx eax, al
+ ;; size=11 bbWeight=1 PerfScore 6.25
+G_M40448_IG05: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret
- ;; size=4 bbWeight=1 PerfScore 2.50
-G_M40448_IG08: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[esi]
+ ;; size=2 bbWeight=1 PerfScore 1.50
+G_M40448_IG06: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[edx]
+ ; byrRegs -[ecx]
xor eax, eax
- ;; size=2 bbWeight=0.25 PerfScore 0.06
-G_M40448_IG09: ; bbWeight=0.25, epilog, nogc, extend
- pop esi
- pop edi
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M40448_IG07: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret
- ;; size=4 bbWeight=0.25 PerfScore 0.62
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 64, prolog size 5, PerfScore 19.06, instruction count 29, allocated bytes for code 64 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 34, prolog size 3, PerfScore 14.25, instruction count 16, allocated bytes for code 34 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
; ============================================================
-30 (-46.88%) : 431398.dasm - System.UInt32:Equals(System.Object):ubyte:this (Tier1)
@@ -9,69 +9,50 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 3 ) byref -> ecx this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> esi class-hnd single-def <System.Object>
-; V02 tmp0 [V02,T01] ( 3, 5 ) ref -> edx class-hnd "spilling QMark2" <System.UInt32>
-; V03 tmp1 [V03,T03] ( 2, 4 ) int -> edi "impAppendStmt"
-; V04 cse0 [V04,T04] ( 3, 2 ) int -> edx "CSE - aggressive"
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> edx class-hnd single-def <System.Object>
+; V02 tmp0 [V02,T01] ( 3, 5 ) ref -> eax class-hnd "spilling QMark2" <System.UInt32>
+; V03 tmp1 [V03,T03] ( 2, 4 ) int -> eax "impAppendStmt"
;
; Lcl frame size = 0
G_M22229_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
- push edi
- push esi
- mov esi, edx
- ; gcrRegs +[esi]
- ;; size=7 bbWeight=1 PerfScore 3.50
-G_M22229_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref, isz
+ ;; size=3 bbWeight=1 PerfScore 1.25
+G_M22229_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref, isz
+ ; gcrRegs +[edx]
; byrRegs +[ecx]
- mov edx, esi
- ; gcrRegs +[edx]
- test edx, edx
- je SHORT G_M22229_IG08
+ mov eax, edx
+ ; gcrRegs +[eax]
+ test eax, eax
+ je SHORT G_M22229_IG04
;; size=6 bbWeight=1 PerfScore 1.50
-G_M22229_IG03: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000002 {ecx}, byref, isz
- mov edx, dword ptr [edx]
- ; gcrRegs -[edx]
- cmp edx, 0xD1FFAB1E
- jne SHORT G_M22229_IG08
- ;; size=10 bbWeight=0.50 PerfScore 1.62
-G_M22229_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref, isz
- mov edi, dword ptr [ecx]
- cmp edx, 0xD1FFAB1E
+G_M22229_IG03: ; bbWeight=0.50, gcrefRegs=00000005 {eax edx}, byrefRegs=00000002 {ecx}, byref, isz
+ cmp dword ptr [eax], 0xD1FFAB1E
je SHORT G_M22229_IG06
- ;; size=10 bbWeight=1 PerfScore 3.25
-G_M22229_IG05: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M22229_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax edx]
; byrRegs -[ecx]
- mov edx, esi
+ xor eax, eax
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M22229_IG05: ; bbWeight=1, epilog, nogc, extend
+ pop ebp
+ ret
+ ;; size=2 bbWeight=1 PerfScore 1.50
+G_M22229_IG06: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, gcvars, byref
; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; System.UInt32
- call [CORINFO_HELP_UNBOX]
- ; gcrRegs -[edx]
- ;; size=13 bbWeight=0.50 PerfScore 1.75
-G_M22229_IG06: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- xor eax, eax
- cmp edi, dword ptr [esi+0x04]
+ ; byrRegs +[ecx]
+ mov eax, dword ptr [ecx]
+ cmp eax, dword ptr [edx+0x04]
sete al
- ;; size=8 bbWeight=1 PerfScore 4.25
+ movzx eax, al
+ ;; size=11 bbWeight=1 PerfScore 6.25
G_M22229_IG07: ; bbWeight=1, epilog, nogc, extend
- pop esi
- pop edi
pop ebp
ret
- ;; size=4 bbWeight=1 PerfScore 2.50
-G_M22229_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[esi]
- xor eax, eax
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M22229_IG09: ; bbWeight=0, epilog, nogc, extend
- pop esi
- pop edi
- pop ebp
- ret
- ;; size=4 bbWeight=0 PerfScore 0.00
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 64, prolog size 5, PerfScore 18.38, instruction count 29, allocated bytes for code 64 (MethodHash=4843a92a) for method System.UInt32:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 34, prolog size 3, PerfScore 14.25, instruction count 16, allocated bytes for code 34 (MethodHash=4843a92a) for method System.UInt32:Equals(System.Object):ubyte:this (Tier1)
; ============================================================
+47 (+4.37%) : 167923.dasm - NetClient.StringTests:Marshal_BStrString():this (FullOpts)
@@ -12,12 +12,12 @@
; V01 loc0 [V01 ] ( 10, 8.00) struct (24) [ebp-0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
; V02 loc1 [V02,T18] ( 7, 10 ) ref -> [ebp-0x54] class-hnd EH-live spill-single-def <<unknown class>>
; V03 loc2 [V03,T11] ( 5, 20 ) ref -> edi class-hnd <<unknown class>>
-; V04 loc3 [V04,T16] ( 6, 14 ) ref -> ebx class-hnd exact <System.String>
-; V05 loc4 [V05,T17] ( 6, 14 ) ref -> eax class-hnd exact <System.String>
+; V04 loc3 [V04,T17] ( 5, 12 ) ref -> ebx class-hnd exact <System.String>
+; V05 loc4 [V05,T16] ( 6, 12 ) ref -> eax class-hnd exact <System.String>
; V06 loc5 [V06,T19] ( 7, 10 ) ref -> [ebp-0x58] class-hnd EH-live spill-single-def <<unknown class>>
-; V07 loc6 [V07,T10] ( 8, 22 ) ref -> edi class-hnd <System.String>
+; V07 loc6 [V07,T10] ( 7, 20 ) ref -> edi class-hnd <System.String>
; V08 loc7 [V08 ] ( 12, 48 ) ref -> [ebp-0x3C] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.String>
-; V09 loc8 [V09,T00] ( 26, 54 ) ref -> ebx class-hnd exact <System.String>
+; V09 loc8 [V09,T00] ( 21, 44 ) ref -> ebx class-hnd exact <System.String>
; V10 loc9 [V10 ] ( 11, 44 ) ref -> [ebp-0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.String>
;* V11 tmp0 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
;* V12 tmp1 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <<unknown class>>
@@ -48,7 +48,7 @@
; V37 tmp26 [V37,T22] ( 2, 8 ) byref -> ebx "Inlining Arg"
;* V38 tmp27 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V39 tmp28 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V40 tmp29 [V40,T02] ( 6, 28 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
+; V40 tmp29 [V40,T02] ( 6, 24 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
;* V41 tmp30 [V41 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V42 tmp31 [V42 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V43 tmp32 [V43 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
@@ -64,7 +64,7 @@
; V53 tmp42 [V53,T24] ( 2, 8 ) byref -> eax "Inlining Arg"
;* V54 tmp43 [V54 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V55 tmp44 [V55 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V56 tmp45 [V56,T03] ( 6, 28 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
+; V56 tmp45 [V56,T03] ( 6, 24 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
;* V57 tmp46 [V57 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V58 tmp47 [V58 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V59 tmp48 [V59 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
@@ -80,7 +80,7 @@
; V69 tmp58 [V69,T26] ( 2, 8 ) byref -> eax "Inlining Arg"
;* V70 tmp59 [V70 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V71 tmp60 [V71 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V72 tmp61 [V72,T04] ( 6, 28 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
+; V72 tmp61 [V72,T04] ( 6, 24 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
;* V73 tmp62 [V73 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V74 tmp63 [V74 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V75 tmp64 [V75 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
@@ -96,7 +96,7 @@
; V85 tmp74 [V85,T28] ( 2, 8 ) byref -> eax "Inlining Arg"
;* V86 tmp75 [V86 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V87 tmp76 [V87 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V88 tmp77 [V88,T05] ( 6, 28 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
+; V88 tmp77 [V88,T05] ( 6, 24 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
;* V89 tmp78 [V89 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V90 tmp79 [V90 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V91 tmp80 [V91 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
@@ -112,7 +112,7 @@
; V101 tmp90 [V101,T30] ( 2, 8 ) byref -> eax "Inlining Arg"
;* V102 tmp91 [V102 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V103 tmp92 [V103 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V104 tmp93 [V104,T06] ( 6, 28 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
+; V104 tmp93 [V104,T06] ( 6, 24 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
;* V105 tmp94 [V105 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V106 tmp95 [V106 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V107 tmp96 [V107 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
@@ -128,7 +128,7 @@
; V117 tmp106 [V117,T32] ( 2, 8 ) byref -> edi "Inlining Arg"
;* V118 tmp107 [V118 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V119 tmp108 [V119 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V120 tmp109 [V120,T07] ( 6, 28 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
+; V120 tmp109 [V120,T07] ( 6, 24 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
;* V121 tmp110 [V121 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V122 tmp111 [V122 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V123 tmp112 [V123 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
@@ -144,8 +144,8 @@
; V133 tmp122 [V133,T34] ( 2, 8 ) byref -> ebx "Inlining Arg"
;* V134 tmp123 [V134 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V135 tmp124 [V135 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V136 tmp125 [V136,T08] ( 6, 28 ) ref -> ecx class-hnd exact "Inlining Arg" <System.String>
-; V137 tmp126 [V137,T09] ( 6, 28 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
+; V136 tmp125 [V136,T09] ( 5, 24 ) ref -> ecx class-hnd exact "Inlining Arg" <System.String>
+; V137 tmp126 [V137,T08] ( 6, 24 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
;* V138 tmp127 [V138 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V139 tmp128 [V139 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V140 tmp129 [V140 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
@@ -307,7 +307,7 @@ G_M13552_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
call [<unknown method>]
mov ecx, dword ptr [ebp-0x30]
cmp ecx, dword ptr [ebp-0x24]
- ja G_M13552_IG46
+ ja G_M13552_IG54
mov edx, bword ptr [ebp-0x28]
; byrRegs +[edx]
lea edi, bword ptr [edx+2*ecx]
@@ -373,7 +373,7 @@ G_M13552_IG08: ; bbWeight=1, gcVars=00000000000000000000000000040000 {V02
call [<unknown method>]
; gcrRegs -[eax ecx]
test eax, eax
- je SHORT G_M13552_IG14
+ je SHORT G_M13552_IG15
;; size=12 bbWeight=1 PerfScore 4.50
G_M13552_IG09: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [ebp-0x54]
@@ -397,15 +397,42 @@ G_M13552_IG09: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
push gword ptr [edi+0x08]
call [<unknown method>]
; gcrRegs -[ecx edx edi]
+ test ebx, ebx
+ jne SHORT G_M13552_IG14
+ ;; size=44 bbWeight=4 PerfScore 87.00
+G_M13552_IG10: ; bbWeight=2, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, byref, isz
+ test eax, eax
+ jne SHORT G_M13552_IG13
+ ;; size=4 bbWeight=2 PerfScore 2.50
+G_M13552_IG11: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax ebx]
+ mov ecx, gword ptr [ebp-0x54]
+ ; gcrRegs +[ecx]
+ call [<unknown method>]
+ ; gcrRegs -[ecx]
+ test eax, eax
+ jne SHORT G_M13552_IG09
+ ;; size=13 bbWeight=4 PerfScore 21.00
+G_M13552_IG12: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M13552_IG15
+ ;; size=2 bbWeight=1 PerfScore 2.00
+G_M13552_IG13: ; bbWeight=0, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[esi] +[eax ebx]
+ push -1
+ push -1
mov ecx, ebx
; gcrRegs +[ecx]
- or ecx, eax
- ; gcrRegs -[ecx]
- je SHORT G_M13552_IG11
- ;; size=46 bbWeight=4 PerfScore 88.00
-G_M13552_IG10: ; bbWeight=2, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, byref, isz
- test ebx, ebx
- je SHORT G_M13552_IG13
+ mov edx, eax
+ ; gcrRegs +[edx]
+ call [<unknown method>]
+ ; gcrRegs -[ecx edx ebx]
+ mov ecx, eax
+ ; gcrRegs +[ecx]
+ call CORINFO_HELP_THROW
+ ; gcrRegs -[eax ecx]
+ ;; size=21 bbWeight=0 PerfScore 0.00
+G_M13552_IG14: ; bbWeight=2, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs +[eax ebx esi]
test eax, eax
je SHORT G_M13552_IG13
lea ecx, bword ptr [ebx+0x08]
@@ -427,59 +454,32 @@ G_M13552_IG10: ; bbWeight=2, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=
xor edx, edx
call [<unknown method>]
; byrRegs -[ebx]
- ;; size=38 bbWeight=2 PerfScore 34.00
-G_M13552_IG11: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, gword ptr [ebp-0x54]
- ; gcrRegs +[ecx]
- call [<unknown method>]
- ; gcrRegs -[ecx]
- test eax, eax
- jne SHORT G_M13552_IG09
- ;; size=13 bbWeight=4 PerfScore 21.00
-G_M13552_IG12: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M13552_IG14
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M13552_IG13: ; bbWeight=0, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[esi] +[eax ebx]
- push -1
- push -1
- mov ecx, ebx
- ; gcrRegs +[ecx]
- mov edx, eax
- ; gcrRegs +[edx]
- call [<unknown method>]
- ; gcrRegs -[ecx edx ebx]
- mov ecx, eax
- ; gcrRegs +[ecx]
- call CORINFO_HELP_THROW
- ; gcrRegs -[eax ecx]
- int3
- ;; size=22 bbWeight=0 PerfScore 0.00
-G_M13552_IG14: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[esi]
+ jmp SHORT G_M13552_IG11
+ ;; size=36 bbWeight=2 PerfScore 35.50
+G_M13552_IG15: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [ebp-0x54]
; gcrRegs +[ecx]
; GC ptr vars -{V02}
call [<unknown method>]
; gcrRegs -[ecx]
- jmp SHORT G_M13552_IG17
+ jmp SHORT G_M13552_IG18
;; size=11 bbWeight=1 PerfScore 6.00
-G_M13552_IG15: ; bbWeight=0, gcVars=00000000000000000000000000040000 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M13552_IG16: ; bbWeight=0, gcVars=00000000000000000000000000040000 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[esi]
; GC ptr vars +{V02 V18}
cmp gword ptr [ebp-0x54], 0
- je SHORT G_M13552_IG16
+ je SHORT G_M13552_IG17
mov ecx, gword ptr [ebp-0x54]
; gcrRegs +[ecx]
; GC ptr vars -{V02 V18}
call [<unknown method>]
; gcrRegs -[ecx]
;; size=15 bbWeight=0 PerfScore 0.00
-G_M13552_IG16: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M13552_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
pop eax
jmp eax
;; size=3 bbWeight=0 PerfScore 0.00
-G_M13552_IG17: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M13552_IG18: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs +[esi]
mov ecx, gword ptr [esi+0x0C]
; gcrRegs +[ecx]
@@ -488,15 +488,15 @@ G_M13552_IG17: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov gword ptr [ebp-0x58], eax
; GC ptr vars +{V06}
;; size=12 bbWeight=1 PerfScore 6.00
-G_M13552_IG18: ; bbWeight=1, gcVars=00000000000000000000000000080000 {V06}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M13552_IG19: ; bbWeight=1, gcVars=00000000000000000000000000080000 {V06}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref
mov ecx, eax
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[eax ecx]
test eax, eax
- je G_M13552_IG42
+ je G_M13552_IG50
;; size=16 bbWeight=1 PerfScore 4.50
-G_M13552_IG19: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M13552_IG20: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, gword ptr [ebp-0x58]
; gcrRegs +[ecx]
call [<unknown method>]
@@ -519,39 +519,16 @@ G_M13552_IG19: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov gword ptr [ebp-0x40], eax
mov edx, gword ptr [ebp-0x40]
; gcrRegs +[edx]
- mov ecx, ebx
- ; gcrRegs +[ecx]
- or ecx, edx
- ; gcrRegs -[ecx]
- je SHORT G_M13552_IG21
- ;; size=49 bbWeight=4 PerfScore 76.00
-G_M13552_IG20: ; bbWeight=2, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
test ebx, ebx
...
+33 (+5.17%) : 454875.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateRtFields(System.RuntimeType+RuntimeTypeCache+Filter,uint,int,System.RuntimeType,byref):this (Tier1)
@@ -13,12 +13,12 @@
; V01 arg1 [V01,T17] ( 4, 2.10) struct (12) [ebp+0x14] do-not-enreg[SF] ld-addr-op single-def <System.RuntimeType+RuntimeTypeCache+Filter>
; V02 arg2 [V02,T05] ( 3, 3.53) int -> edi single-def
; V03 arg3 [V03,T16] ( 2, 2.53) int -> [ebp+0x10] single-def
-; V04 arg4 [V04,T07] ( 7, 4.12) ref -> ebx class-hnd single-def <System.RuntimeType>
+; V04 arg4 [V04,T08] ( 7, 4.12) ref -> ebx class-hnd single-def <System.RuntimeType>
; V05 arg5 [V05,T31] ( 1, 0.12) byref -> [ebp+0x08] single-def
; V06 loc0 [V06,T24] ( 2, 1.12) ubyte -> [ebp-0x10] spill-single-def
; V07 loc1 [V07,T23] ( 3, 1.23) ubyte -> [ebp-0x14] spill-single-def
; V08 loc2 [V08,T01] ( 5, 7.14) int -> [ebp-0x18]
-; V09 loc3 [V09,T08] ( 8, 3.53) int -> [ebp-0x1C] ld-addr-op
+; V09 loc3 [V09,T06] ( 8, 4.86) int -> [ebp-0x1C] ld-addr-op
; V10 loc4 [V10,T26] ( 3, 0.35) int -> eax
; V11 loc5 [V11,T28] ( 3, 0.23) int -> edx
; V12 loc6 [V12,T29] ( 2, 0.23) ubyte -> edx
@@ -47,7 +47,7 @@
;* V35 tmp19 [V35 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.MdUtf8String>
; V36 tmp20 [V36,T00] ( 5, 9.22) int -> [ebp-0x28] "Inlining Arg"
;* V37 tmp21 [V37 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V38 tmp22 [V38,T06] ( 4, 4.33) ubyte -> registers "Inline stloc first use temp"
+; V38 tmp22 [V38,T07] ( 4, 4.33) ubyte -> registers "Inline stloc first use temp"
; V39 tmp23 [V39,T11] ( 2, 2.88) int -> eax
; V40 tmp24 [V40,T13] ( 3, 2.88) ubyte -> eax "Inline return value spill temp"
; V41 tmp25 [V41,T32] ( 4, 0 ) ubyte -> eax "Inline return value spill temp"
@@ -131,10 +131,10 @@ G_M37727_IG06: ; bbWeight=1.00, gcrefRegs=00000048 {ebx esi}, byrefRegs=0
G_M37727_IG07: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
movzx eax, al
test eax, eax
- jne G_M37727_IG39
+ jne G_M37727_IG40
xor eax, eax
;; size=13 bbWeight=1 PerfScore 1.75
-G_M37727_IG08: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+G_M37727_IG08: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
movzx eax, al
mov dword ptr [ebp-0x10], eax
mov eax, gword ptr [esi+0x08]
@@ -146,21 +146,21 @@ G_M37727_IG08: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
mov dword ptr [ebp-0x14], eax
xor eax, eax
cmp dword ptr [ebp+0x10], 0
- jle SHORT G_M37727_IG20
- ;; size=29 bbWeight=1 PerfScore 11.75
-G_M37727_IG09: ; bbWeight=1.53, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ jle G_M37727_IG31
+ ;; size=33 bbWeight=1 PerfScore 11.75
+G_M37727_IG09: ; bbWeight=1.53, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
mov dword ptr [ebp-0x18], eax
mov edx, dword ptr [edi+4*eax]
mov ecx, dword ptr [ebp-0x30]
cmp ecx, 1
- jne SHORT G_M37727_IG21
- ;; size=14 bbWeight=1.53 PerfScore 8.06
+ jne G_M37727_IG23
+ ;; size=18 bbWeight=1.53 PerfScore 8.06
G_M37727_IG10: ; bbWeight=1.53, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
mov dword ptr [ebp-0x1C], edx
mov ecx, edx
call <unknown method>
test eax, eax
- je G_M37727_IG40
+ je G_M37727_IG41
;; size=18 bbWeight=1.53 PerfScore 5.37
G_M37727_IG11: ; bbWeight=1.44, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
mov dword ptr [ebp-0x28], eax
@@ -170,113 +170,47 @@ G_M37727_IG11: ; bbWeight=1.44, gcrefRegs=00000048 {ebx esi}, byrefRegs=0
G_M37727_IG12: ; bbWeight=1.44, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
mov edx, 1
cmp dword ptr [ebp-0x30], 1
- jne G_M37727_IG32
+ jne G_M37727_IG33
mov edx, dword ptr [ebp-0x2C]
cmp eax, edx
- je G_M37727_IG31
+ je G_M37727_IG32
;; size=26 bbWeight=1.44 PerfScore 7.93
G_M37727_IG13: ; bbWeight=1.35, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
xor eax, eax
;; size=2 bbWeight=1.35 PerfScore 0.34
-G_M37727_IG14: ; bbWeight=1.44, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+G_M37727_IG14: ; bbWeight=1.44, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
test eax, eax
- jne SHORT G_M37727_IG25
- ;; size=4 bbWeight=1.44 PerfScore 1.80
+ jne G_M37727_IG25
+ ;; size=8 bbWeight=1.44 PerfScore 1.80
G_M37727_IG15: ; bbWeight=1.37, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [ebp-0x30]
cmp ecx, 1
- jne SHORT G_M37727_IG24
+ jne SHORT G_M37727_IG19
;; size=8 bbWeight=1.37 PerfScore 3.08
G_M37727_IG16: ; bbWeight=0.91, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
mov eax, 1
;; size=5 bbWeight=0.91 PerfScore 0.23
G_M37727_IG17: ; bbWeight=1.44, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
test al, al
- jne SHORT G_M37727_IG19
+ jne SHORT G_M37727_IG21
;; size=4 bbWeight=1.44 PerfScore 1.80
-G_M37727_IG18: ; bbWeight=5.77, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
+G_M37727_IG18: ; bbWeight=5.77, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
; gcrRegs +[edx]
call [<unknown method>]
; gcrRegs -[ecx edx]
- ;; size=16 bbWeight=5.77 PerfScore 20.19
-G_M37727_IG19: ; bbWeight=1.53, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
- mov eax, dword ptr [ebp-0x18]
- inc eax
- mov edx, dword ptr [ebp+0x10]
- cmp eax, edx
- mov dword ptr [ebp+0x10], edx
- jl SHORT G_M37727_IG09
- ;; size=14 bbWeight=1.53 PerfScore 6.91
-G_M37727_IG20: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
- ; gcrRegs -[ebx esi]
- lea esp, [ebp-0x0C]
- pop ebx
- pop esi
- pop edi
- pop ebp
- ret 24
- ;; size=10 bbWeight=1 PerfScore 4.50
-G_M37727_IG21: ; bbWeight=0.51, gcVars=0000000000000000 {}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs +[ebx esi]
- cmp ecx, 2
- jne SHORT G_M37727_IG23
- ;; size=5 bbWeight=0.51 PerfScore 0.64
-G_M37727_IG22: ; bbWeight=0.51, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M37727_IG10
- ;; size=2 bbWeight=0.51 PerfScore 1.03
-G_M37727_IG23: ; bbWeight=0.26, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x1C], edx
- mov edx, dword ptr [ebp-0x2C]
- jmp SHORT G_M37727_IG25
- ;; size=8 bbWeight=0.26 PerfScore 1.03
-G_M37727_IG24: ; bbWeight=0.46, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M37727_IG21
+ ;; size=18 bbWeight=5.77 PerfScore 31.72
+G_M37727_IG19: ; bbWeight=0.46, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
xor eax, eax
cmp ecx, 2
sete al
mov ecx, dword ptr [ebp-0x30]
jmp SHORT G_M37727_IG17
;; size=13 bbWeight=0.46 PerfScore 2.06
-G_M37727_IG25: ; bbWeight=0.12, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
- cmp dword ptr [ebp-0x1C], 0
- jne SHORT G_M37727_IG27
- ;; size=6 bbWeight=0.12 PerfScore 0.35
-G_M37727_IG26: ; bbWeight=0.47, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
- mov ecx, 0xD1FFAB1E
- ; gcrRegs +[ecx]
- mov edx, 0xD1FFAB1E
- ; gcrRegs +[edx]
- call [<unknown method>]
- ; gcrRegs -[ecx edx]
- ;; size=16 bbWeight=0.47 PerfScore 1.63
-G_M37727_IG27: ; bbWeight=0.12, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
- mov ecx, dword ptr [ebp-0x1C]
- call <unknown method>
- mov edx, eax
- and edx, 7
- cmp dword ptr [ebp-0x14], 0
- jne G_M37727_IG37
- ;; size=23 bbWeight=0.12 PerfScore 0.64
-G_M37727_IG28: ; bbWeight=0.12, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
- cmp edx, 6
- sete dl
- movzx edx, dl
- test al, 16
- setne al
- movzx eax, al
- mov dword ptr [ebp-0x20], eax
- push eax
- mov ecx, edx
- mov edx, dword ptr [ebp-0x14]
- call [<unknown method>]
- mov dword ptr [ebp-0x24], eax
- mov edx, dword ptr [ebp-0x10]
- test edx, dword ptr [ebp-0x20]
- jne G_M37727_IG38
- ;; size=47 bbWeight=0.12 PerfScore 1.66
-G_M37727_IG29: ; bbWeight=0.12, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
+G_M37727_IG20: ; bbWeight=0.12, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
mov ecx, 0xD1FFAB1E ; System.Reflection.RtFieldInfo
call CORINFO_HELP_NEWSFAST
; gcrRegs +[eax]
@@ -310,13 +244,87 @@ G_M37727_IG29: ; bbWeight=0.12, gcrefRegs=00000048 {ebx esi}, byrefRegs=0
call [<unknown method>]
; gcrRegs -[edx]
; byrRegs -[ecx]
- jmp G_M37727_IG19
- ;; size=76 bbWeight=0.12 PerfScore 2.50
+ ;; size=71 bbWeight=0.12 PerfScore 2.27
+G_M37727_IG21: ; bbWeight=1.53, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
+ mov eax, dword ptr [ebp-0x18]
+ inc eax
+ mov ecx, dword ptr [ebp+0x10]
+ cmp eax, ecx
+ mov dword ptr [ebp+0x10], ecx
+ jl G_M37727_IG09
+ ;; size=18 bbWeight=1.53 PerfScore 6.91
+G_M37727_IG22: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[ebx esi]
+ jmp G_M37727_IG31
+ ;; size=5 bbWeight=1 PerfScore 2.00
+G_M37727_IG23: ; bbWeight=0.51, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs +[ebx esi]
+ cmp ecx, 2
+ je G_M37727_IG10
+ ;; size=9 bbWeight=0.51 PerfScore 0.64
+G_M37727_IG24: ; bbWeight=0.26, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
+ mov dword ptr [ebp-0x1C], edx
+ mov edx, dword ptr [ebp-0x2C]
+ ;; size=6 bbWeight=0.26 PerfScore 0.51
+G_M37727_IG25: ; bbWeight=1.44, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ cmp dword ptr [ebp-0x1C], 0
+ jne SHORT G_M37727_IG29
+ ;; size=6 bbWeight=1.44 PerfScore 4.33
+G_M37727_IG26: ; bbWeight=0.47, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
+ mov ecx, 0xD1FFAB1E
+ ; gcrRegs +[ecx]
+ mov edx, 0xD1FFAB1E
+ ; gcrRegs +[edx]
+ call [<unknown method>]
+ ; gcrRegs -[ecx edx]
+ mov eax, dword ptr [ebp-0x1C]
+ ;; size=19 bbWeight=0.47 PerfScore 2.09
+G_M37727_IG27: ; bbWeight=0.12, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
+ mov dword ptr [ebp-0x1C], eax
+ mov ecx, eax
+ call <unknown method>
+ mov edx, eax
+ and edx, 7
+ cmp dword ptr [ebp-0x14], 0
+ jne G_M37727_IG38
+ ;; size=25 bbWeight=0.12 PerfScore 0.67
+G_M37727_IG28: ; bbWeight=0.12, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
+ cmp edx, 6
+ sete dl
+ movzx edx, dl
+ test al, 16
+ setne al
+ movzx eax, al
+ mov dword ptr [ebp-0x20], eax
+ push eax
...
+8 (+11.43%) : 236896.dasm - Runtime_49101:Test(int,int,int,int,int,int,int,int,int,float,float,float,float,float,float,float,float,float,System.Numerics.Vector3):int (FullOpts)
@@ -26,9 +26,10 @@
;* V15 arg15 [V15 ] ( 0, 0 ) float -> zero-ref single-def
;* V16 arg16 [V16 ] ( 0, 0 ) float -> zero-ref single-def
;* V17 arg17 [V17 ] ( 0, 0 ) float -> zero-ref single-def
-; V18 arg18 [V18,T00] ( 1, 1 ) simd12 -> [ebp+0x08] single-def <System.Numerics.Vector3>
+; V18 arg18 [V18,T01] ( 1, 1 ) simd12 -> [ebp+0x08] single-def <System.Numerics.Vector3>
;* V19 tmp0 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V20 tmp1 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V21 cse0 [V21,T00] ( 2, 2 ) int -> ecx "CSE - aggressive"
;
; Lcl frame size = 0
@@ -44,7 +45,12 @@ G_M16340_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
vmovmskps ecx, xmm0
and ecx, 7
cmp ecx, 7
- je SHORT G_M16340_IG04
+ sete cl
+ movzx ecx, cl
+ test ecx, ecx
+ jne SHORT G_M16340_IG05
+ ;; size=38 bbWeight=1 PerfScore 14.00
+G_M16340_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
@@ -52,21 +58,21 @@ G_M16340_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
call [<unknown method>]
; gcrRegs -[ecx edx]
mov eax, 101
- ;; size=51 bbWeight=1 PerfScore 16.25
-G_M16340_IG03: ; bbWeight=1, epilog, nogc, extend
+ ;; size=21 bbWeight=0.50 PerfScore 1.88
+G_M16340_IG04: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret 76
- ;; size=4 bbWeight=1 PerfScore 2.50
-G_M16340_IG04: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=4 bbWeight=0.50 PerfScore 1.25
+G_M16340_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
mov eax, 100
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M16340_IG05: ; bbWeight=0.50, epilog, nogc, extend
+G_M16340_IG06: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret 76
;; size=4 bbWeight=0.50 PerfScore 1.25
RWD00 dq 3F8000003F800000h, 000000003F800000h
-; Total bytes of code 70, prolog size 6, PerfScore 22.38, instruction count 19, allocated bytes for code 70 (MethodHash=48a0c02b) for method Runtime_49101:Test(int,int,int,int,int,int,int,int,int,float,float,float,float,float,float,float,float,float,System.Numerics.Vector3):int (FullOpts)
+; Total bytes of code 78, prolog size 6, PerfScore 20.75, instruction count 22, allocated bytes for code 78 (MethodHash=48a0c02b) for method Runtime_49101:Test(int,int,int,int,int,int,int,int,int,float,float,float,float,float,float,float,float,float,System.Numerics.Vector3):int (FullOpts)
; ============================================================
libraries.crossgen2.windows.x86.checked.mch
-26 (-20.47%) : 226942.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
@@ -9,13 +9,14 @@
; Final local variable assignments
;
; V00 arg0 [V00,T04] ( 5, 7.50) ref -> ecx class-hnd single-def <System.String>
-; V01 arg1 [V01,T02] ( 6, 11 ) ref -> edx class-hnd single-def <System.String>
-; V02 arg2 [V02,T06] ( 2, 4.50) int -> [ebp+0x0C] single-def
-; V03 arg3 [V03,T07] ( 3, 2.50) int -> [ebp+0x08] single-def
-; V04 loc0 [V04,T03] ( 6, 13 ) int -> ebx
-; V05 loc1 [V05,T00] ( 11, 27.50) int -> esi
-; V06 cse0 [V06,T05] ( 5, 7 ) int -> [ebp-0x10] spill-single-def "CSE - moderate"
-; V07 cse1 [V07,T01] ( 6, 13.50) int -> edi multi-def "CSE - aggressive"
+; V01 arg1 [V01,T02] ( 4, 10 ) ref -> edx class-hnd single-def <System.String>
+; V02 arg2 [V02,T07] ( 1, 4 ) int -> [ebp+0x0C] single-def
+; V03 arg3 [V03,T08] ( 3, 2.50) int -> [ebp+0x08] single-def
+; V04 loc0 [V04,T01] ( 5, 12 ) int -> ebx
+; V05 loc1 [V05,T00] ( 8, 25.50) int -> esi
+; V06 cse0 [V06,T05] ( 3, 8.50) int -> edi "CSE - moderate"
+; V07 cse1 [V07,T06] ( 4, 6.50) int -> [ebp-0x10] spill-single-def "CSE - moderate"
+; V08 cse2 [V08,T03] ( 3, 12 ) int -> edi "CSE - aggressive"
;
; Lcl frame size = 4
@@ -45,39 +46,38 @@ G_M6389_IG03: ; bbWeight=2, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000
;; size=4 bbWeight=2 PerfScore 2.50
G_M6389_IG04: ; bbWeight=8, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz
cmp esi, ebx
- jge SHORT G_M6389_IG07
+ jge SHORT G_M6389_IG08
;; size=4 bbWeight=8 PerfScore 10.00
G_M6389_IG05: ; bbWeight=4, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz
cmp esi, edi
- jae SHORT G_M6389_IG12
+ jae SHORT G_M6389_IG10
movzx eax, word ptr [ecx+2*esi+0x08]
mov edi, esi
add edi, dword ptr [ebp+0x0C]
cmp edi, dword ptr [edx+0x04]
- jae SHORT G_M6389_IG12
- cmp ax, word ptr [edx+2*edi+0x08]
+ jae SHORT G_M6389_IG10
+ movzx edi, word ptr [edx+2*edi+0x08]
+ cmp eax, edi
je SHORT G_M6389_IG03
- ;; size=26 bbWeight=4 PerfScore 54.00
-G_M6389_IG06: ; bbWeight=2, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref
- mov edi, dword ptr [ebp-0x10]
- ;; size=3 bbWeight=2 PerfScore 2.00
-G_M6389_IG07: ; bbWeight=1, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz
- cmp esi, ebx
- jge SHORT G_M6389_IG10
- ;; size=4 bbWeight=1 PerfScore 1.25
-G_M6389_IG08: ; bbWeight=0.50, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz
- cmp esi, edi
- jae SHORT G_M6389_IG12
- movzx ecx, word ptr [ecx+2*esi+0x08]
+ ;; size=28 bbWeight=4 PerfScore 51.00
+G_M6389_IG06: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[edx]
+ movzx eax, word ptr [ecx+2*esi+0x08]
+ sub eax, edi
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
+G_M6389_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ pop ecx
+ pop ebx
+ pop esi
+ pop edi
+ pop ebp
+ ret 8
+ ;; size=8 bbWeight=0.50 PerfScore 2.25
+G_M6389_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ecx]
- mov edi, esi
- add edi, dword ptr [ebp+0x0C]
- cmp edi, dword ptr [edx+0x04]
- jae SHORT G_M6389_IG12
- movzx eax, word ptr [edx+2*edi+0x08]
- sub ecx, eax
- mov eax, ecx
- ;; size=28 bbWeight=0.50 PerfScore 6.00
+ mov eax, edi
+ sub eax, dword ptr [ebp+0x08]
+ ;; size=5 bbWeight=0.50 PerfScore 1.12
G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend
pop ecx
pop ebx
@@ -86,24 +86,11 @@ G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret 8
;; size=8 bbWeight=0.50 PerfScore 2.25
-G_M6389_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[edx]
- sub edi, dword ptr [ebp+0x08]
- mov eax, edi
- ;; size=5 bbWeight=0.50 PerfScore 1.12
-G_M6389_IG11: ; bbWeight=0.50, epilog, nogc, extend
- pop ecx
- pop ebx
- pop esi
- pop edi
- pop ebp
- ret 8
- ;; size=8 bbWeight=0.50 PerfScore 2.25
-G_M6389_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M6389_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
call [CORINFO_HELP_RNGCHKFAIL]
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 127, prolog size 10, PerfScore 94.62, instruction count 57, allocated bytes for code 127 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
+; Total bytes of code 101, prolog size 10, PerfScore 83.50, instruction count 47, allocated bytes for code 101 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
; ============================================================
-20 (-15.75%) : 178852.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan
1[uint]):int (FullOpts)
@@ -8,14 +8,16 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T06] ( 2, 2 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V01 arg1 [V01,T07] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V02 loc0 [V02,T00] ( 8, 28.50) int -> registers
-; V03 tmp0 [V03,T01] ( 7, 21 ) int -> eax "dup spill"
-; V04 tmp1 [V04,T04] ( 3, 5.50) byref -> [ebp-0x10] spill-single-def "V00.[000..004)"
-; V05 tmp2 [V05,T03] ( 5, 7 ) int -> ecx "V00.[004..008)"
-; V06 tmp3 [V06,T05] ( 3, 5.50) byref -> esi single-def "V01.[000..004)"
-; V07 tmp4 [V07,T02] ( 6, 7.50) int -> edi "V01.[004..008)"
+; V00 arg0 [V00,T08] ( 2, 2 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
+; V01 arg1 [V01,T09] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
+; V02 loc0 [V02,T00] ( 8, 28.50) int -> edi
+; V03 tmp0 [V03,T01] ( 2, 16 ) int -> edi "dup spill"
+; V04 tmp1 [V04,T06] ( 2, 5 ) byref -> [ebp-0x10] spill-single-def "V00.[000..004)"
+; V05 tmp2 [V05,T05] ( 4, 6.50) int -> edx "V00.[004..008)"
+; V06 tmp3 [V06,T07] ( 2, 5 ) byref -> ecx single-def "V01.[000..004)"
+; V07 tmp4 [V07,T04] ( 5, 7 ) int -> esi "V01.[004..008)"
+; V08 cse0 [V08,T02] ( 3, 8.50) int -> ebx "CSE - aggressive"
+; V09 cse1 [V09,T03] ( 3, 8.50) int -> eax "CSE - aggressive"
;
; Lcl frame size = 4
@@ -28,51 +30,52 @@ G_M264_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
push eax
;; size=7 bbWeight=1 PerfScore 5.25
G_M264_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov edx, bword ptr [ebp+0x10]
- ; byrRegs +[edx]
- mov bword ptr [ebp-0x10], edx
+ mov eax, bword ptr [ebp+0x10]
+ ; byrRegs +[eax]
+ mov bword ptr [ebp-0x10], eax
; GC ptr vars +{V04}
- mov ecx, dword ptr [ebp+0x14]
- mov esi, bword ptr [ebp+0x08]
- ; byrRegs +[esi]
- mov edi, dword ptr [ebp+0x0C]
- cmp ecx, edi
+ mov edx, dword ptr [ebp+0x14]
+ mov ecx, bword ptr [ebp+0x08]
+ ; byrRegs +[ecx]
+ mov esi, dword ptr [ebp+0x0C]
+ cmp edx, esi
je SHORT G_M264_IG04
;; size=19 bbWeight=1 PerfScore 6.25
G_M264_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- ; byrRegs -[edx esi]
+ ; byrRegs -[eax ecx]
; GC ptr vars -{V04}
- cmp ecx, edi
+ cmp edx, esi
jl SHORT G_M264_IG12
- jmp SHORT G_M264_IG10
+ jmp SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.62
-G_M264_IG04: ; bbWeight=0.50, gcVars=00000010 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, gcvars, byref
- ; byrRegs +[edx esi]
- ; GC ptr vars +{V04}
- mov eax, edi
+G_M264_IG04: ; bbWeight=0.50, gcVars=00000040 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000003 {eax ecx}, gcvars, byref
+ ; byrRegs +[eax ecx]
+ ; GC ptr vars +{V04 V06}
+ mov edi, esi
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M264_IG05: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, byref, isz
- dec eax
- mov ebx, eax
- test ebx, ebx
- jl SHORT G_M264_IG06
- cmp ebx, ecx
+G_M264_IG05: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000003 {eax ecx}, byref, isz
+ dec edi
+ js SHORT G_M264_IG10
+ cmp edi, edx
jae SHORT G_M264_IG14
- mov edx, dword ptr [edx+4*ebx]
- ; byrRegs -[edx]
- cmp ebx, edi
+ mov ebx, dword ptr [eax+4*edi]
+ cmp edi, esi
jae SHORT G_M264_IG14
- cmp edx, dword ptr [esi+4*ebx]
- mov edx, bword ptr [ebp-0x10]
- ; byrRegs +[edx]
- je SHORT G_M264_IG08
- ;; size=26 bbWeight=4 PerfScore 45.00
-G_M264_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, byref, isz
- test eax, eax
- jge SHORT G_M264_IG09
- xor eax, eax
- ;; size=6 bbWeight=0.50 PerfScore 0.75
-G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ mov eax, dword ptr [ecx+4*edi]
+ ; byrRegs -[eax]
+ cmp ebx, eax
+ je SHORT G_M264_IG09
+ ;; size=21 bbWeight=4 PerfScore 36.00
+G_M264_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; byrRegs -[ecx]
+ ; GC ptr vars -{V04 V06}
+ cmp eax, ebx
+ ja SHORT G_M264_IG12
+ ;; size=4 bbWeight=0.50 PerfScore 0.62
+G_M264_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ mov eax, 1
+ ;; size=5 bbWeight=0.50 PerfScore 0.12
+G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop ecx
pop ebx
pop esi
@@ -80,25 +83,18 @@ G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret 16
;; size=8 bbWeight=0.50 PerfScore 2.25
-G_M264_IG08: ; bbWeight=2, gcVars=00000010 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, gcvars, byref, isz
- mov eax, ebx
+G_M264_IG09: ; bbWeight=2, gcVars=00000040 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, gcvars, byref, isz
+ ; byrRegs +[ecx]
+ ; GC ptr vars +{V04 V06}
+ mov eax, bword ptr [ebp-0x10]
+ ; byrRegs +[eax]
jmp SHORT G_M264_IG05
- ;; size=4 bbWeight=2 PerfScore 4.50
-G_M264_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, byref, isz
- cmp eax, ecx
- jae SHORT G_M264_IG14
- mov edx, dword ptr [edx+4*eax]
- ; byrRegs -[edx]
- cmp eax, edi
- jae SHORT G_M264_IG14
- cmp edx, dword ptr [esi+4*eax]
- jb SHORT G_M264_IG12
- ;; size=16 bbWeight=0.50 PerfScore 4.25
+ ;; size=5 bbWeight=2 PerfScore 6.00
G_M264_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; byrRegs -[esi]
- ; GC ptr vars -{V04}
- mov eax, 1
- ;; size=5 bbWeight=0.50 PerfScore 0.12
+ ; byrRegs -[eax ecx]
+ ; GC ptr vars -{V04 V06}
+ xor eax, eax
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M264_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop ecx
pop ebx
@@ -123,6 +119,6 @@ G_M264_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byr
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 127, prolog size 7, PerfScore 74.75, instruction count 63, allocated bytes for code 127 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 107, prolog size 7, PerfScore 63.00, instruction count 54, allocated bytes for code 107 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================
-23 (-11.33%) : 22065.dasm - System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
@@ -8,18 +8,19 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T09] ( 2, 2 ) struct ( 8) [ebp+0x0C] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V01 arg1 [V01,T07] ( 4, 3.50) int -> [ebp-0x10] single-def
-; V02 arg2 [V02,T08] ( 3, 2.50) int -> [ebp-0x14] single-def
-; V03 arg3 [V03,T03] ( 4, 16 ) ushort -> eax single-def
-; V04 loc0 [V04,T00] ( 24, 79 ) int -> edx
-; V05 loc1 [V05,T06] ( 8, 10.50) int -> [ebp-0x18]
+; V00 arg0 [V00,T10] ( 2, 2 ) struct ( 8) [ebp+0x0C] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
+; V01 arg1 [V01,T08] ( 4, 3.50) int -> [ebp-0x10] single-def
+; V02 arg2 [V02,T09] ( 3, 2.50) int -> [ebp-0x14] single-def
+; V03 arg3 [V03,T07] ( 2, 8 ) ushort -> [ebp+0x08] single-def
+; V04 loc0 [V04,T00] ( 22, 77.50) int -> edx
+; V05 loc1 [V05,T06] ( 8, 10.50) int -> registers
; V06 tmp0 [V06,T04] ( 2, 16 ) int -> edx "dup spill"
; V07 tmp1 [V07,T05] ( 2, 16 ) int -> edx "dup spill"
-; V08 tmp2 [V08,T02] ( 5, 17 ) byref -> esi single-def "V00.[000..004)"
-; V09 tmp3 [V09,T01] ( 8, 25.50) int -> edi "V00.[004..008)"
+; V08 tmp2 [V08,T03] ( 5, 17 ) byref -> esi single-def "V00.[000..004)"
+; V09 tmp3 [V09,T01] ( 7, 25 ) int -> edi "V00.[004..008)"
+; V10 cse0 [V10,T02] ( 6, 24 ) int -> registers multi-def "CSE - aggressive"
;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M48691_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -27,7 +28,7 @@ G_M48691_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 12
+ sub esp, 8
mov dword ptr [ebp-0x14], edx
mov eax, dword ptr [ebp+0x08]
;; size=15 bbWeight=1 PerfScore 6.50
@@ -36,57 +37,52 @@ G_M48691_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; byrRegs +[esi]
mov edi, dword ptr [ebp+0x10]
xor ebx, ebx
- mov dword ptr [ebp-0x18], ebx
mov dword ptr [ebp-0x10], ecx
lea edx, [ecx-0x01]
jmp SHORT G_M48691_IG04
- ;; size=19 bbWeight=1 PerfScore 6.75
+ ;; size=16 bbWeight=1 PerfScore 5.75
G_M48691_IG03: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
dec edx
- ;; size=1 bbWeight=2 PerfScore 0.50
+ movzx eax, word ptr [ebp+0x08]
+ ;; size=5 bbWeight=2 PerfScore 2.50
G_M48691_IG04: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
test edx, edx
- jl SHORT G_M48691_IG06
+ jl SHORT G_M48691_IG12
;; size=4 bbWeight=8 PerfScore 10.00
G_M48691_IG05: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
cmp edx, edi
- jae G_M48691_IG22
+ jae G_M48691_IG21
movzx ecx, word ptr [esi+2*edx]
- movzx ebx, ax
- cmp ecx, ebx
+ mov dword ptr [ebp+0x08], eax
+ movzx eax, ax
+ cmp ecx, eax
jne SHORT G_M48691_IG03
- ;; size=19 bbWeight=4 PerfScore 19.00
-G_M48691_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
- test edx, edx
- jl SHORT G_M48691_IG13
- ;; size=4 bbWeight=1 PerfScore 1.25
-G_M48691_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
- jmp SHORT G_M48691_IG09
+ ;; size=22 bbWeight=4 PerfScore 23.00
+G_M48691_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
+ jmp SHORT G_M48691_IG08
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M48691_IG08: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
- mov ebx, dword ptr [ebp-0x18]
+G_M48691_IG07: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
inc ebx
- mov dword ptr [ebp-0x18], ebx
- ;; size=7 bbWeight=2 PerfScore 4.50
-G_M48691_IG09: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
+ ;; size=1 bbWeight=2 PerfScore 0.50
+G_M48691_IG08: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
dec edx
- js SHORT G_M48691_IG10
+ js SHORT G_M48691_IG09
cmp edx, edi
- jae SHORT G_M48691_IG22
+ jae SHORT G_M48691_IG21
movzx ecx, word ptr [esi+2*edx]
- movzx ebx, ax
- cmp ecx, ebx
- je SHORT G_M48691_IG08
- ;; size=18 bbWeight=4 PerfScore 24.00
-G_M48691_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
- cmp dword ptr [ebp-0x18], 1
- jg SHORT G_M48691_IG13
- ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M48691_IG11: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ cmp ecx, eax
+ je SHORT G_M48691_IG07
+ ;; size=15 bbWeight=4 PerfScore 23.00
+G_M48691_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
+ cmp ebx, 1
+ movzx eax, word ptr [ebp+0x08]
+ jg SHORT G_M48691_IG12
+ ;; size=9 bbWeight=0.50 PerfScore 1.12
+G_M48691_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; byrRegs -[esi]
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M48691_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M48691_IG11: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -94,58 +90,52 @@ G_M48691_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret 12
;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M48691_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz
+G_M48691_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; byrRegs +[esi]
mov ecx, dword ptr [ebp-0x10]
mov edx, ecx
add edx, dword ptr [ebp-0x14]
- jmp SHORT G_M48691_IG15
+ jmp SHORT G_M48691_IG14
;; size=10 bbWeight=0.50 PerfScore 2.62
-G_M48691_IG14: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
+G_M48691_IG13: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
inc edx
;; size=1 bbWeight=2 PerfScore 0.50
-G_M48691_IG15: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
- cmp edx, edi
- jge SHORT G_M48691_IG16
- cmp edx, edi
- jae SHORT G_M48691_IG22
- movzx ecx, word ptr [esi+2*edx]
- movzx ebx, ax
- cmp ecx, ebx
- jne SHORT G_M48691_IG14
- ;; size=19 bbWeight=4 PerfScore 24.00
-G_M48691_IG16: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
- cmp edx, edi
- jge SHORT G_M48691_IG20
- xor ebx, ebx
- mov dword ptr [ebp-0x18], ebx
- jmp SHORT G_M48691_IG18
- ;; size=11 bbWeight=0.50 PerfScore 2.25
-G_M48691_IG17: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
- mov ebx, dword ptr [ebp-0x18]
- inc ebx
- mov dword ptr [ebp-0x18], ebx
- ;; size=7 bbWeight=2 PerfScore 4.50
-G_M48691_IG18: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
- inc edx
+G_M48691_IG14: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
cmp edx, edi
jge SHORT G_M48691_IG19
cmp edx, edi
- jae SHORT G_M48691_IG22
+ jae SHORT G_M48691_IG21
movzx ecx, word ptr [esi+2*edx]
movzx ebx, ax
cmp ecx, ebx
- je SHORT G_M48691_IG17
- ;; size=20 bbWeight=4 PerfScore 25.00
-G_M48691_IG19: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ jne SHORT G_M48691_IG13
+ ;; size=19 bbWeight=4 PerfScore 24.00
+G_M48691_IG15: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
+ xor eax, eax
+ jmp SHORT G_M48691_IG17
+ ;; size=4 bbWeight=0.50 PerfScore 1.12
+G_M48691_IG16: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
+ inc eax
+ ;; size=1 bbWeight=2 PerfScore 0.50
+G_M48691_IG17: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
+ inc edx
+ cmp edx, edi
+ jge SHORT G_M48691_IG18
+ cmp edx, edi
+ jae SHORT G_M48691_IG21
+ movzx ecx, word ptr [esi+2*edx]
+ cmp ecx, ebx
+ je SHORT G_M48691_IG16
+ ;; size=17 bbWeight=4 PerfScore 24.00
+G_M48691_IG18: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
; byrRegs -[esi]
- cmp dword ptr [ebp-0x18], 1
- jle SHORT G_M48691_IG11
- ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M48691_IG20: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ cmp eax, 1
+ jle SHORT G_M48691_IG10
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M48691_IG19: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M48691_IG21: ; bbWeight=0.50, epilog, nogc, extend
+G_M48691_IG20: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -153,11 +143,11 @@ G_M48691_IG21: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret 12
;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M48691_IG22: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M48691_IG21: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
call [CORINFO_HELP_RNGCHKFAIL]
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 203, prolog size 15, PerfScore 140.12, instruction count 88, allocated bytes for code 203 (MethodHash=af0b41cc) for method System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
+; Total bytes of code 180, prolog size 15, PerfScore 131.50, instruction count 79, allocated bytes for code 180 (MethodHash=af0b41cc) for method System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
; ============================================================
+3 (+12.50%) : 75902.dasm - System.Security.Cryptography.SHA1CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
@@ -9,8 +9,9 @@
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 4, 4 ) ref -> esi this class-hnd single-def <System.Security.Cryptography.SHA1CryptoServiceProvider>
+; V00 this [V00,T00] ( 4, 3 ) ref -> esi this class-hnd single-def <System.Security.Cryptography.SHA1CryptoServiceProvider>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> edx single-def
+; V02 cse0 [V02,T02] ( 2, 2 ) int -> ecx "CSE - aggressive"
;
; Lcl frame size = 0
@@ -20,8 +21,11 @@ G_M54186_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; gcrRegs +[esi]
;; size=3 bbWeight=1 PerfScore 1.25
G_M54186_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- test dl, dl
- je SHORT G_M54186_IG03
+ movzx ecx, dl
+ test ecx, ecx
+ je SHORT G_M54186_IG04
+ ;; size=7 bbWeight=1 PerfScore 1.50
+G_M54186_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, gword ptr [esi+0x14]
; gcrRegs +[ecx]
cmp dword ptr [ecx], ecx
@@ -29,13 +33,13 @@ G_M54186_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
; gcrRegs -[ecx]
; gcr arg pop 0
mov byte ptr [esi+0x10], 1
- ;; size=19 bbWeight=1 PerfScore 10.25
-G_M54186_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=15 bbWeight=0.50 PerfScore 4.50
+G_M54186_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[esi]
pop esi
ret
;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 24, prolog size 1, PerfScore 13.00, instruction count 10, allocated bytes for code 24 (MethodHash=9cf42c55) for method System.Security.Cryptography.SHA1CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
+; Total bytes of code 27, prolog size 1, PerfScore 8.75, instruction count 11, allocated bytes for code 27 (MethodHash=9cf42c55) for method System.Security.Cryptography.SHA1CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
; ============================================================
+3 (+12.50%) : 75995.dasm - System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
@@ -9,8 +9,9 @@
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 4, 4 ) ref -> esi this class-hnd single-def <System.Security.Cryptography.SHA512CryptoServiceProvider>
+; V00 this [V00,T00] ( 4, 3 ) ref -> esi this class-hnd single-def <System.Security.Cryptography.SHA512CryptoServiceProvider>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> edx single-def
+; V02 cse0 [V02,T02] ( 2, 2 ) int -> ecx "CSE - aggressive"
;
; Lcl frame size = 0
@@ -20,8 +21,11 @@ G_M31021_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; gcrRegs +[esi]
;; size=3 bbWeight=1 PerfScore 1.25
G_M31021_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- test dl, dl
- je SHORT G_M31021_IG03
+ movzx ecx, dl
+ test ecx, ecx
+ je SHORT G_M31021_IG04
+ ;; size=7 bbWeight=1 PerfScore 1.50
+G_M31021_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, gword ptr [esi+0x14]
; gcrRegs +[ecx]
cmp dword ptr [ecx], ecx
@@ -29,13 +33,13 @@ G_M31021_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
; gcrRegs -[ecx]
; gcr arg pop 0
mov byte ptr [esi+0x10], 1
- ;; size=19 bbWeight=1 PerfScore 10.25
-G_M31021_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=15 bbWeight=0.50 PerfScore 4.50
+G_M31021_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[esi]
pop esi
ret
;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 24, prolog size 1, PerfScore 13.00, instruction count 10, allocated bytes for code 24 (MethodHash=150886d2) for method System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
+; Total bytes of code 27, prolog size 1, PerfScore 8.75, instruction count 11, allocated bytes for code 27 (MethodHash=150886d2) for method System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
; ============================================================
+3 (+12.50%) : 75964.dasm - System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
@@ -9,8 +9,9 @@
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 4, 4 ) ref -> esi this class-hnd single-def <System.Security.Cryptography.SHA384CryptoServiceProvider>
+; V00 this [V00,T00] ( 4, 3 ) ref -> esi this class-hnd single-def <System.Security.Cryptography.SHA384CryptoServiceProvider>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> edx single-def
+; V02 cse0 [V02,T02] ( 2, 2 ) int -> ecx "CSE - aggressive"
;
; Lcl frame size = 0
@@ -20,8 +21,11 @@ G_M59236_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; gcrRegs +[esi]
;; size=3 bbWeight=1 PerfScore 1.25
G_M59236_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- test dl, dl
- je SHORT G_M59236_IG03
+ movzx ecx, dl
+ test ecx, ecx
+ je SHORT G_M59236_IG04
+ ;; size=7 bbWeight=1 PerfScore 1.50
+G_M59236_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, gword ptr [esi+0x14]
; gcrRegs +[ecx]
cmp dword ptr [ecx], ecx
@@ -29,13 +33,13 @@ G_M59236_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
; gcrRegs -[ecx]
; gcr arg pop 0
mov byte ptr [esi+0x10], 1
- ;; size=19 bbWeight=1 PerfScore 10.25
-G_M59236_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=15 bbWeight=0.50 PerfScore 4.50
+G_M59236_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[esi]
pop esi
ret
;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 24, prolog size 1, PerfScore 13.00, instruction count 10, allocated bytes for code 24 (MethodHash=ebc3189b) for method System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
+; Total bytes of code 27, prolog size 1, PerfScore 8.75, instruction count 11, allocated bytes for code 27 (MethodHash=ebc3189b) for method System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
; ============================================================
libraries.pmi.windows.x86.checked.mch
-33 (-42.31%) : 186555.dasm - ILCompiler.IBC.IBCProfileParser+IBCBlobKey:Equals(System.Object):ubyte:this (FullOpts)
@@ -8,84 +8,63 @@
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 4, 3 ) byref -> edi this single-def
-; V01 arg1 [V01,T00] ( 6, 4.25) ref -> esi class-hnd single-def <System.Object>
+; V00 this [V00,T01] ( 4, 3 ) byref -> ecx this single-def
+; V01 arg1 [V01,T00] ( 5, 4 ) ref -> edx class-hnd single-def <System.Object>
; V02 tmp0 [V02,T02] ( 3, 4.50) ref -> eax class-hnd "spilling QMark2" <ILCompiler.IBC.IBCProfileParser+IBCBlobKey>
; V03 tmp1 [V03,T03] ( 3, 1.50) ubyte -> eax "Inline return value spill temp"
;* V04 tmp2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <ILCompiler.IBC.IBCProfileParser+IBCBlobKey>
-; V05 tmp3 [V05,T05] ( 2, 1 ) int -> eax "field V04.Token (fldOffset=0x0)" P-INDEP
-; V06 tmp4 [V06,T06] ( 2, 1 ) int -> edx "field V04.Type (fldOffset=0x4)" P-INDEP
-; V07 cse0 [V07,T04] ( 3, 1 ) int -> edx "CSE - moderate"
+; V05 tmp3 [V05,T04] ( 2, 1 ) int -> eax "field V04.Token (fldOffset=0x0)" P-INDEP
+; V06 tmp4 [V06,T05] ( 2, 1 ) int -> edx "field V04.Type (fldOffset=0x4)" P-INDEP
;
; Lcl frame size = 0
G_M25636_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
- push edi
- push esi
- mov edi, ecx
- ; byrRegs +[edi]
- mov esi, edx
- ; gcrRegs +[esi]
- ;; size=9 bbWeight=1 PerfScore 3.75
-G_M25636_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
- mov eax, esi
+ ;; size=3 bbWeight=1 PerfScore 1.25
+G_M25636_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref, isz
+ ; gcrRegs +[edx]
+ ; byrRegs +[ecx]
+ mov eax, edx
; gcrRegs +[eax]
test eax, eax
je SHORT G_M25636_IG04
;; size=6 bbWeight=1 PerfScore 1.50
-G_M25636_IG03: ; bbWeight=0.25, gcrefRegs=00000041 {eax esi}, byrefRegs=00000080 {edi}, byref, isz
- mov edx, dword ptr [eax]
- cmp edx, 0xD1FFAB1E
+G_M25636_IG03: ; bbWeight=0.25, gcrefRegs=00000005 {eax edx}, byrefRegs=00000002 {ecx}, byref, isz
+ cmp dword ptr [eax], 0xD1FFAB1E
je SHORT G_M25636_IG06
- ;; size=10 bbWeight=0.25 PerfScore 0.81
+ ;; size=8 bbWeight=0.25 PerfScore 1.00
G_M25636_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax esi]
- ; byrRegs -[edi]
+ ; gcrRegs -[eax edx]
+ ; byrRegs -[ecx]
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M25636_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop esi
- pop edi
pop ebp
ret
- ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M25636_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz
- ; gcrRegs +[esi]
- ; byrRegs +[edi]
- cmp edx, 0xD1FFAB1E
- je SHORT G_M25636_IG08
- ;; size=8 bbWeight=0.50 PerfScore 0.62
-G_M25636_IG07: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref
- mov edx, esi
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M25636_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, gcvars, byref, isz
; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; ILCompiler.IBC.IBCProfileParser+IBCBlobKey
- call [CORINFO_HELP_UNBOX]
+ ; byrRegs +[ecx]
+ mov eax, dword ptr [edx+0x04]
+ mov edx, dword ptr [edx+0x08]
; gcrRegs -[edx]
- ;; size=13 bbWeight=0.25 PerfScore 0.88
-G_M25636_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
- mov eax, dword ptr [esi+0x04]
- mov edx, dword ptr [esi+0x08]
- cmp eax, dword ptr [edi]
- jne SHORT G_M25636_IG09
+ cmp eax, dword ptr [ecx]
+ jne SHORT G_M25636_IG07
xor eax, eax
- cmp edx, dword ptr [edi+0x04]
+ cmp edx, dword ptr [ecx+0x04]
sete al
- jmp SHORT G_M25636_IG10
+ jmp SHORT G_M25636_IG08
;; size=20 bbWeight=0.50 PerfScore 7.12
-G_M25636_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[esi]
- ; byrRegs -[edi]
+G_M25636_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; byrRegs -[ecx]
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M25636_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
- pop esi
- pop edi
+G_M25636_IG08: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
pop ebp
ret
- ;; size=4 bbWeight=0.50 PerfScore 1.25
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 78, prolog size 5, PerfScore 17.44, instruction count 35, allocated bytes for code 78 (MethodHash=acaf9bdb) for method ILCompiler.IBC.IBCProfileParser+IBCBlobKey:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 45, prolog size 3, PerfScore 12.62, instruction count 21, allocated bytes for code 45 (MethodHash=acaf9bdb) for method ILCompiler.IBC.IBCProfileParser+IBCBlobKey:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================
-33 (-40.74%) : 279591.dasm - System.Speech.Synthesis.TtsEngine.SpeechEventInfo:Equals(System.Object):ubyte:this (FullOpts)
@@ -8,79 +8,58 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 2.50) byref -> edi this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> esi class-hnd single-def <System.Object>
+; V00 this [V00,T02] ( 3, 2.50) byref -> ecx this single-def
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> edx class-hnd single-def <System.Object>
; V02 tmp0 [V02,T01] ( 3, 4.50) ref -> eax class-hnd "spilling QMark2" <System.Speech.Synthesis.TtsEngine.SpeechEventInfo>
;* V03 tmp1 [V03 ] ( 0, 0 ) struct (12) zero-ref do-not-enreg[S] "Inlining Arg" <System.Speech.Synthesis.TtsEngine.SpeechEventInfo>
-; V04 cse0 [V04,T03] ( 3, 1 ) int -> edx "CSE - moderate"
;
; Lcl frame size = 0
-G_M46071_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
+G_M46071_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
- push edi
- push esi
- mov edi, ecx
- ; byrRegs +[edi]
- mov esi, edx
- ; gcrRegs +[esi]
- ;; size=9 bbWeight=1 PerfScore 3.75
-G_M46071_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
- mov eax, esi
+ ;; size=3 bbWeight=1 PerfScore 1.25
+G_M46071_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref, isz
+ ; gcrRegs +[edx]
+ ; byrRegs +[ecx]
+ mov eax, edx
; gcrRegs +[eax]
test eax, eax
je SHORT G_M46071_IG04
;; size=6 bbWeight=1 PerfScore 1.50
-G_M46071_IG03: ; bbWeight=0.25, gcrefRegs=00000041 {eax esi}, byrefRegs=00000080 {edi}, byref, isz
- mov edx, dword ptr [eax]
- cmp edx, 0xD1FFAB1E
+G_M46071_IG03: ; bbWeight=0.25, gcrefRegs=00000005 {eax edx}, byrefRegs=00000002 {ecx}, byref, isz
+ cmp dword ptr [eax], 0xD1FFAB1E
je SHORT G_M46071_IG06
- ;; size=10 bbWeight=0.25 PerfScore 0.81
+ ;; size=8 bbWeight=0.25 PerfScore 1.00
G_M46071_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax esi]
- ; byrRegs -[edi]
+ ; gcrRegs -[eax edx]
+ ; byrRegs -[ecx]
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M46071_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop esi
- pop edi
pop ebp
ret
- ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M46071_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz
- ; gcrRegs +[esi]
- ; byrRegs +[edi]
- cmp edx, 0xD1FFAB1E
- je SHORT G_M46071_IG08
- ;; size=8 bbWeight=0.50 PerfScore 0.62
-G_M46071_IG07: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref
- mov edx, esi
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M46071_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, gcvars, byref
; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; System.Speech.Synthesis.TtsEngine.SpeechEventInfo
- call [CORINFO_HELP_UNBOX]
+ ; byrRegs +[ecx]
+ push dword ptr [ecx+0x08]
+ push dword ptr [ecx+0x04]
+ push dword ptr [ecx]
+ add edx, 4
; gcrRegs -[edx]
- ;; size=13 bbWeight=0.25 PerfScore 0.88
-G_M46071_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref
- push dword ptr [edi+0x08]
- push dword ptr [edi+0x04]
- push dword ptr [edi]
- add esi, 4
- ; gcrRegs -[esi]
- ; byrRegs +[esi]
- push dword ptr [esi+0x08]
- push dword ptr [esi+0x04]
- push dword ptr [esi]
+ ; byrRegs +[edx]
+ push dword ptr [edx+0x08]
+ push dword ptr [edx+0x04]
+ push dword ptr [edx]
call [System.Speech.Synthesis.TtsEngine.SpeechEventInfo:op_Equality(System.Speech.Synthesis.TtsEngine.SpeechEventInfo,System.Speech.Synthesis.TtsEngine.SpeechEventInfo):ubyte]
- ; byrRegs -[esi edi]
+ ; byrRegs -[ecx edx]
;; size=25 bbWeight=0.50 PerfScore 7.62
-G_M46071_IG09: ; bbWeight=0.50, epilog, nogc, extend
- pop esi
- pop edi
+G_M46071_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret
- ;; size=4 bbWeight=0.50 PerfScore 1.25
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 81, prolog size 5, PerfScore 17.81, instruction count 34, allocated bytes for code 81 (MethodHash=c43e4c08) for method System.Speech.Synthesis.TtsEngine.SpeechEventInfo:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 48, prolog size 3, PerfScore 13.00, instruction count 20, allocated bytes for code 48 (MethodHash=c43e4c08) for method System.Speech.Synthesis.TtsEngine.SpeechEventInfo:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================
-33 (-40.74%) : 279631.dasm - System.Speech.Synthesis.TtsEngine.ContourPoint:Equals(System.Object):ubyte:this (FullOpts)
@@ -8,82 +8,61 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 2.50) byref -> edi this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> esi class-hnd single-def <System.Object>
+; V00 this [V00,T02] ( 3, 2.50) byref -> ecx this single-def
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> edx class-hnd single-def <System.Object>
; V02 tmp0 [V02,T01] ( 3, 4.50) ref -> eax class-hnd "spilling QMark2" <System.Speech.Synthesis.TtsEngine.ContourPoint>
;* V03 tmp1 [V03 ] ( 0, 0 ) struct (12) zero-ref "Inlining Arg" <System.Speech.Synthesis.TtsEngine.ContourPoint>
;* V04 tmp2 [V04 ] ( 0, 0 ) float -> zero-ref "field V03._start (fldOffset=0x0)" P-INDEP
;* V05 tmp3 [V05 ] ( 0, 0 ) float -> zero-ref "field V03._change (fldOffset=0x4)" P-INDEP
;* V06 tmp4 [V06 ] ( 0, 0 ) int -> zero-ref "field V03._changeType (fldOffset=0x8)" P-INDEP
-; V07 cse0 [V07,T03] ( 3, 1 ) int -> edx "CSE - moderate"
;
; Lcl frame size = 0
-G_M17647_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
+G_M17647_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
- push edi
- push esi
- mov edi, ecx
- ; byrRegs +[edi]
- mov esi, edx
- ; gcrRegs +[esi]
- ;; size=9 bbWeight=1 PerfScore 3.75
-G_M17647_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
- mov eax, esi
+ ;; size=3 bbWeight=1 PerfScore 1.25
+G_M17647_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref, isz
+ ; gcrRegs +[edx]
+ ; byrRegs +[ecx]
+ mov eax, edx
; gcrRegs +[eax]
test eax, eax
je SHORT G_M17647_IG04
;; size=6 bbWeight=1 PerfScore 1.50
-G_M17647_IG03: ; bbWeight=0.25, gcrefRegs=00000041 {eax esi}, byrefRegs=00000080 {edi}, byref, isz
- mov edx, dword ptr [eax]
- cmp edx, 0xD1FFAB1E
+G_M17647_IG03: ; bbWeight=0.25, gcrefRegs=00000005 {eax edx}, byrefRegs=00000002 {ecx}, byref, isz
+ cmp dword ptr [eax], 0xD1FFAB1E
je SHORT G_M17647_IG06
- ;; size=10 bbWeight=0.25 PerfScore 0.81
+ ;; size=8 bbWeight=0.25 PerfScore 1.00
G_M17647_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax esi]
- ; byrRegs -[edi]
+ ; gcrRegs -[eax edx]
+ ; byrRegs -[ecx]
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M17647_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop esi
- pop edi
pop ebp
ret
- ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M17647_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz
- ; gcrRegs +[esi]
- ; byrRegs +[edi]
- cmp edx, 0xD1FFAB1E
- je SHORT G_M17647_IG08
- ;; size=8 bbWeight=0.50 PerfScore 0.62
-G_M17647_IG07: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref
- mov edx, esi
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M17647_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, gcvars, byref
; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; System.Speech.Synthesis.TtsEngine.ContourPoint
- call [CORINFO_HELP_UNBOX]
+ ; byrRegs +[ecx]
+ push dword ptr [ecx+0x08]
+ push dword ptr [ecx+0x04]
+ push dword ptr [ecx]
+ add edx, 4
; gcrRegs -[edx]
- ;; size=13 bbWeight=0.25 PerfScore 0.88
-G_M17647_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref
- push dword ptr [edi+0x08]
- push dword ptr [edi+0x04]
- push dword ptr [edi]
- add esi, 4
- ; gcrRegs -[esi]
- ; byrRegs +[esi]
- push dword ptr [esi+0x08]
- push dword ptr [esi+0x04]
- push dword ptr [esi]
+ ; byrRegs +[edx]
+ push dword ptr [edx+0x08]
+ push dword ptr [edx+0x04]
+ push dword ptr [edx]
call [System.Speech.Synthesis.TtsEngine.ContourPoint:op_Equality(System.Speech.Synthesis.TtsEngine.ContourPoint,System.Speech.Synthesis.TtsEngine.ContourPoint):ubyte]
- ; byrRegs -[esi edi]
+ ; byrRegs -[ecx edx]
;; size=25 bbWeight=0.50 PerfScore 7.62
-G_M17647_IG09: ; bbWeight=0.50, epilog, nogc, extend
- pop esi
- pop edi
+G_M17647_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret
- ;; size=4 bbWeight=0.50 PerfScore 1.25
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 81, prolog size 5, PerfScore 17.81, instruction count 34, allocated bytes for code 81 (MethodHash=2f77bb10) for method System.Speech.Synthesis.TtsEngine.ContourPoint:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 48, prolog size 3, PerfScore 13.00, instruction count 20, allocated bytes for code 48 (MethodHash=2f77bb10) for method System.Speech.Synthesis.TtsEngine.ContourPoint:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================
+3 (+12.50%) : 181033.dasm - System.Security.Cryptography.SHA256CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
@@ -8,8 +8,9 @@
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 4, 4 ) ref -> esi this class-hnd single-def <System.Security.Cryptography.SHA256CryptoServiceProvider>
+; V00 this [V00,T00] ( 4, 3 ) ref -> esi this class-hnd single-def <System.Security.Cryptography.SHA256CryptoServiceProvider>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> edx single-def
+; V02 cse0 [V02,T02] ( 2, 2 ) int -> ecx "CSE - aggressive"
;
; Lcl frame size = 0
@@ -19,8 +20,11 @@ G_M57738_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; gcrRegs +[esi]
;; size=3 bbWeight=1 PerfScore 1.25
G_M57738_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- test dl, dl
- je SHORT G_M57738_IG03
+ movzx ecx, dl
+ test ecx, ecx
+ je SHORT G_M57738_IG04
+ ;; size=7 bbWeight=1 PerfScore 1.50
+G_M57738_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, gword ptr [esi+0x14]
; gcrRegs +[ecx]
cmp dword ptr [ecx], ecx
@@ -28,13 +32,13 @@ G_M57738_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
; gcrRegs -[ecx]
; gcr arg pop 0
mov byte ptr [esi+0x10], 1
- ;; size=19 bbWeight=1 PerfScore 10.25
-G_M57738_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=15 bbWeight=0.50 PerfScore 4.50
+G_M57738_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[esi]
pop esi
ret
;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 24, prolog size 1, PerfScore 13.00, instruction count 10, allocated bytes for code 24 (MethodHash=76961e75) for method System.Security.Cryptography.SHA256CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
+; Total bytes of code 27, prolog size 1, PerfScore 8.75, instruction count 11, allocated bytes for code 27 (MethodHash=76961e75) for method System.Security.Cryptography.SHA256CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
; ============================================================
+3 (+12.50%) : 181065.dasm - System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
@@ -8,8 +8,9 @@
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 4, 4 ) ref -> esi this class-hnd single-def <System.Security.Cryptography.SHA384CryptoServiceProvider>
+; V00 this [V00,T00] ( 4, 3 ) ref -> esi this class-hnd single-def <System.Security.Cryptography.SHA384CryptoServiceProvider>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> edx single-def
+; V02 cse0 [V02,T02] ( 2, 2 ) int -> ecx "CSE - aggressive"
;
; Lcl frame size = 0
@@ -19,8 +20,11 @@ G_M59236_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; gcrRegs +[esi]
;; size=3 bbWeight=1 PerfScore 1.25
G_M59236_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- test dl, dl
- je SHORT G_M59236_IG03
+ movzx ecx, dl
+ test ecx, ecx
+ je SHORT G_M59236_IG04
+ ;; size=7 bbWeight=1 PerfScore 1.50
+G_M59236_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, gword ptr [esi+0x14]
; gcrRegs +[ecx]
cmp dword ptr [ecx], ecx
@@ -28,13 +32,13 @@ G_M59236_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
; gcrRegs -[ecx]
; gcr arg pop 0
mov byte ptr [esi+0x10], 1
- ;; size=19 bbWeight=1 PerfScore 10.25
-G_M59236_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=15 bbWeight=0.50 PerfScore 4.50
+G_M59236_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[esi]
pop esi
ret
;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 24, prolog size 1, PerfScore 13.00, instruction count 10, allocated bytes for code 24 (MethodHash=ebc3189b) for method System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
+; Total bytes of code 27, prolog size 1, PerfScore 8.75, instruction count 11, allocated bytes for code 27 (MethodHash=ebc3189b) for method System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
; ============================================================
+3 (+12.50%) : 181097.dasm - System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
@@ -8,8 +8,9 @@
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 4, 4 ) ref -> esi this class-hnd single-def <System.Security.Cryptography.SHA512CryptoServiceProvider>
+; V00 this [V00,T00] ( 4, 3 ) ref -> esi this class-hnd single-def <System.Security.Cryptography.SHA512CryptoServiceProvider>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> edx single-def
+; V02 cse0 [V02,T02] ( 2, 2 ) int -> ecx "CSE - aggressive"
;
; Lcl frame size = 0
@@ -19,8 +20,11 @@ G_M31021_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; gcrRegs +[esi]
;; size=3 bbWeight=1 PerfScore 1.25
G_M31021_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- test dl, dl
- je SHORT G_M31021_IG03
+ movzx ecx, dl
+ test ecx, ecx
+ je SHORT G_M31021_IG04
+ ;; size=7 bbWeight=1 PerfScore 1.50
+G_M31021_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, gword ptr [esi+0x14]
; gcrRegs +[ecx]
cmp dword ptr [ecx], ecx
@@ -28,13 +32,13 @@ G_M31021_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
; gcrRegs -[ecx]
; gcr arg pop 0
mov byte ptr [esi+0x10], 1
- ;; size=19 bbWeight=1 PerfScore 10.25
-G_M31021_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=15 bbWeight=0.50 PerfScore 4.50
+G_M31021_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[esi]
pop esi
ret
;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 24, prolog size 1, PerfScore 13.00, instruction count 10, allocated bytes for code 24 (MethodHash=150886d2) for method System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
+; Total bytes of code 27, prolog size 1, PerfScore 8.75, instruction count 11, allocated bytes for code 27 (MethodHash=150886d2) for method System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
; ============================================================
libraries_tests.run.windows.x86.Release.mch
-29 (-46.03%) : 462141.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
@@ -9,71 +9,50 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 2.83) byref -> ecx this single-def
-; V01 arg1 [V01,T00] ( 5, 4.25) ref -> esi class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 3.83) ref -> edx class-hnd single-def <System.Object>
; V02 tmp0 [V02,T01] ( 3, 5 ) ref -> eax class-hnd "spilling QMark2" <System.Int32>
-; V03 tmp1 [V03,T03] ( 2, 3.34) int -> edi "impAppendStmt"
-; V04 cse0 [V04,T04] ( 3, 1.83) int -> edx "CSE - moderate"
+; V03 tmp1 [V03,T03] ( 2, 3.34) int -> eax "impAppendStmt"
;
; Lcl frame size = 0
-G_M40448_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
+G_M40448_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
- push edi
- push esi
- mov esi, edx
- ; gcrRegs +[esi]
- ;; size=7 bbWeight=1 PerfScore 3.50
-G_M40448_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref, isz
+ ;; size=3 bbWeight=1 PerfScore 1.25
+G_M40448_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref, isz
+ ; gcrRegs +[edx]
; byrRegs +[ecx]
- mov eax, esi
+ mov eax, edx
; gcrRegs +[eax]
test eax, eax
je SHORT G_M40448_IG04
;; size=6 bbWeight=1 PerfScore 1.50
-G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000002 {ecx}, byref, isz
- mov edx, dword ptr [eax]
- cmp edx, 0xD1FFAB1E
+G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=00000005 {eax edx}, byrefRegs=00000002 {ecx}, byref, isz
+ cmp dword ptr [eax], 0xD1FFAB1E
je SHORT G_M40448_IG06
- ;; size=10 bbWeight=0.50 PerfScore 1.62
-G_M40448_IG04: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax esi]
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M40448_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax edx]
; byrRegs -[ecx]
xor eax, eax
- ;; size=2 bbWeight=0.25 PerfScore 0.06
-G_M40448_IG05: ; bbWeight=0.25, epilog, nogc, extend
- pop esi
- pop edi
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M40448_IG05: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret
- ;; size=4 bbWeight=0.25 PerfScore 0.62
-G_M40448_IG06: ; bbWeight=0.83, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, gcvars, byref, isz
- ; gcrRegs +[esi]
- ; byrRegs +[ecx]
- mov edi, dword ptr [ecx]
- cmp edx, 0xD1FFAB1E
- je SHORT G_M40448_IG08
- ;; size=10 bbWeight=0.83 PerfScore 2.71
-G_M40448_IG07: ; bbWeight=0.42, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- ; byrRegs -[ecx]
- mov edx, esi
+ ;; size=2 bbWeight=1 PerfScore 1.50
+G_M40448_IG06: ; bbWeight=0.83, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, gcvars, byref
; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; System.Int32
- call CORINFO_HELP_UNBOX
- ; gcrRegs -[edx]
- ;; size=12 bbWeight=0.42 PerfScore 0.63
-G_M40448_IG08: ; bbWeight=0.83, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- xor eax, eax
- cmp edi, dword ptr [esi+0x04]
+ ; byrRegs +[ecx]
+ mov eax, dword ptr [ecx]
+ cmp eax, dword ptr [edx+0x04]
sete al
- ;; size=8 bbWeight=0.83 PerfScore 3.55
-G_M40448_IG09: ; bbWeight=0.83, epilog, nogc, extend
- pop esi
- pop edi
+ movzx eax, al
+ ;; size=11 bbWeight=0.83 PerfScore 5.21
+G_M40448_IG07: ; bbWeight=0.83, epilog, nogc, extend
pop ebp
ret
- ;; size=4 bbWeight=0.83 PerfScore 2.09
+ ;; size=2 bbWeight=0.83 PerfScore 1.25
-; Total bytes of code 63, prolog size 5, PerfScore 16.28, instruction count 29, allocated bytes for code 63 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 34, prolog size 3, PerfScore 12.97, instruction count 16, allocated bytes for code 34 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
; ============================================================
-29 (-46.03%) : 182222.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
@@ -9,69 +9,50 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 3 ) byref -> ecx this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> esi class-hnd single-def <System.Object>
-; V02 tmp0 [V02,T01] ( 3, 5 ) ref -> edx class-hnd "spilling QMark2" <System.Int32>
-; V03 tmp1 [V03,T03] ( 2, 4 ) int -> edi "impAppendStmt"
-; V04 cse0 [V04,T04] ( 3, 2 ) int -> edx "CSE - aggressive"
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> edx class-hnd single-def <System.Object>
+; V02 tmp0 [V02,T01] ( 3, 5 ) ref -> eax class-hnd "spilling QMark2" <System.Int32>
+; V03 tmp1 [V03,T03] ( 2, 4 ) int -> eax "impAppendStmt"
;
; Lcl frame size = 0
G_M40448_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
- push edi
- push esi
- mov esi, edx
- ; gcrRegs +[esi]
- ;; size=7 bbWeight=1 PerfScore 3.50
-G_M40448_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref, isz
+ ;; size=3 bbWeight=1 PerfScore 1.25
+G_M40448_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref, isz
+ ; gcrRegs +[edx]
; byrRegs +[ecx]
- mov edx, esi
- ; gcrRegs +[edx]
- test edx, edx
- je SHORT G_M40448_IG08
+ mov eax, edx
+ ; gcrRegs +[eax]
+ test eax, eax
+ je SHORT G_M40448_IG04
;; size=6 bbWeight=1 PerfScore 1.50
-G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000002 {ecx}, byref, isz
- mov edx, dword ptr [edx]
- ; gcrRegs -[edx]
- cmp edx, 0xD1FFAB1E
- jne SHORT G_M40448_IG08
- ;; size=10 bbWeight=0.50 PerfScore 1.62
-G_M40448_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref, isz
- mov edi, dword ptr [ecx]
- cmp edx, 0xD1FFAB1E
+G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=00000005 {eax edx}, byrefRegs=00000002 {ecx}, byref, isz
+ cmp dword ptr [eax], 0xD1FFAB1E
je SHORT G_M40448_IG06
- ;; size=10 bbWeight=1 PerfScore 3.25
-G_M40448_IG05: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M40448_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax edx]
; byrRegs -[ecx]
- mov edx, esi
+ xor eax, eax
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M40448_IG05: ; bbWeight=1, epilog, nogc, extend
+ pop ebp
+ ret
+ ;; size=2 bbWeight=1 PerfScore 1.50
+G_M40448_IG06: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, gcvars, byref
; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; System.Int32
- call CORINFO_HELP_UNBOX
- ; gcrRegs -[edx]
- ;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M40448_IG06: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- xor eax, eax
- cmp edi, dword ptr [esi+0x04]
+ ; byrRegs +[ecx]
+ mov eax, dword ptr [ecx]
+ cmp eax, dword ptr [edx+0x04]
sete al
- ;; size=8 bbWeight=1 PerfScore 4.25
+ movzx eax, al
+ ;; size=11 bbWeight=1 PerfScore 6.25
G_M40448_IG07: ; bbWeight=1, epilog, nogc, extend
- pop esi
- pop edi
pop ebp
ret
- ;; size=4 bbWeight=1 PerfScore 2.50
-G_M40448_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[esi]
- xor eax, eax
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M40448_IG09: ; bbWeight=0, epilog, nogc, extend
- pop esi
- pop edi
- pop ebp
- ret
- ;; size=4 bbWeight=0 PerfScore 0.00
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 63, prolog size 5, PerfScore 17.38, instruction count 29, allocated bytes for code 63 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 34, prolog size 3, PerfScore 14.25, instruction count 16, allocated bytes for code 34 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
; ============================================================
-29 (-46.03%) : 236886.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
@@ -9,69 +9,50 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 3 ) byref -> ecx this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> esi class-hnd single-def <System.Object>
-; V02 tmp0 [V02,T01] ( 3, 5 ) ref -> edx class-hnd "spilling QMark2" <System.Int32>
-; V03 tmp1 [V03,T03] ( 2, 4 ) int -> edi "impAppendStmt"
-; V04 cse0 [V04,T04] ( 3, 2 ) int -> edx "CSE - aggressive"
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> edx class-hnd single-def <System.Object>
+; V02 tmp0 [V02,T01] ( 3, 5 ) ref -> eax class-hnd "spilling QMark2" <System.Int32>
+; V03 tmp1 [V03,T03] ( 2, 4 ) int -> eax "impAppendStmt"
;
; Lcl frame size = 0
G_M40448_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
- push edi
- push esi
- mov esi, edx
- ; gcrRegs +[esi]
- ;; size=7 bbWeight=1 PerfScore 3.50
-G_M40448_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref, isz
+ ;; size=3 bbWeight=1 PerfScore 1.25
+G_M40448_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref, isz
+ ; gcrRegs +[edx]
; byrRegs +[ecx]
- mov edx, esi
- ; gcrRegs +[edx]
- test edx, edx
- je SHORT G_M40448_IG08
+ mov eax, edx
+ ; gcrRegs +[eax]
+ test eax, eax
+ je SHORT G_M40448_IG04
;; size=6 bbWeight=1 PerfScore 1.50
-G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000002 {ecx}, byref, isz
- mov edx, dword ptr [edx]
- ; gcrRegs -[edx]
- cmp edx, 0xD1FFAB1E
- jne SHORT G_M40448_IG08
- ;; size=10 bbWeight=0.50 PerfScore 1.62
-G_M40448_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref, isz
- mov edi, dword ptr [ecx]
- cmp edx, 0xD1FFAB1E
+G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=00000005 {eax edx}, byrefRegs=00000002 {ecx}, byref, isz
+ cmp dword ptr [eax], 0xD1FFAB1E
je SHORT G_M40448_IG06
- ;; size=10 bbWeight=1 PerfScore 3.25
-G_M40448_IG05: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M40448_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax edx]
; byrRegs -[ecx]
- mov edx, esi
+ xor eax, eax
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M40448_IG05: ; bbWeight=1, epilog, nogc, extend
+ pop ebp
+ ret
+ ;; size=2 bbWeight=1 PerfScore 1.50
+G_M40448_IG06: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, gcvars, byref
; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; System.Int32
- call CORINFO_HELP_UNBOX
- ; gcrRegs -[edx]
- ;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M40448_IG06: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- xor eax, eax
- cmp edi, dword ptr [esi+0x04]
+ ; byrRegs +[ecx]
+ mov eax, dword ptr [ecx]
+ cmp eax, dword ptr [edx+0x04]
sete al
- ;; size=8 bbWeight=1 PerfScore 4.25
+ movzx eax, al
+ ;; size=11 bbWeight=1 PerfScore 6.25
G_M40448_IG07: ; bbWeight=1, epilog, nogc, extend
- pop esi
- pop edi
pop ebp
ret
- ;; size=4 bbWeight=1 PerfScore 2.50
-G_M40448_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[esi]
- xor eax, eax
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M40448_IG09: ; bbWeight=0, epilog, nogc, extend
- pop esi
- pop edi
- pop ebp
- ret
- ;; size=4 bbWeight=0 PerfScore 0.00
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 63, prolog size 5, PerfScore 17.38, instruction count 29, allocated bytes for code 63 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 34, prolog size 3, PerfScore 14.25, instruction count 16, allocated bytes for code 34 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
; ============================================================
+36 (+10.81%) : 579948.dasm - Microsoft.Cci.MetadataWriter:GetMetadataName(Microsoft.Cci.INamedTypeReference,int):System.String (Tier1)
@@ -9,49 +9,50 @@
; 6 inlinees with PGO data; 14 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 13, 7.99) ref -> esi class-hnd single-def <Microsoft.Cci.INamedTypeReference>
+; V00 arg0 [V00,T00] ( 12, 6.76) ref -> esi class-hnd single-def <Microsoft.Cci.INamedTypeReference>
; V01 arg1 [V01,T01] ( 4, 3.01) int -> edi ld-addr-op single-def
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.String>
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.String>
-; V04 tmp0 [V04,T04] ( 5, 2.00) ref -> edi
+; V04 tmp0 [V04,T05] ( 5, 2.00) ref -> edi
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
-; V06 tmp2 [V06,T05] ( 3, 1.97) ref -> edi "guarded devirt return temp"
+; V06 tmp2 [V06,T06] ( 3, 1.97) ref -> edi "guarded devirt return temp"
;* V07 tmp3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol>
-; V08 tmp4 [V08,T02] ( 4, 2.79) ref -> ebx "guarded devirt return temp"
+; V08 tmp4 [V08,T03] ( 4, 2.28) ref -> [ebp-0x10] "guarded devirt return temp"
;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolNonGeneric>
-; V10 tmp6 [V10,T03] ( 3, 2.57) int -> eax "guarded devirt return temp"
+; V10 tmp6 [V10,T04] ( 3, 2.06) int -> edx "guarded devirt return temp"
;* V11 tmp7 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolNonGeneric>
-; V12 tmp8 [V12,T13] ( 4, 0.50) int -> ecx "guarded devirt return temp"
+; V12 tmp8 [V12,T14] ( 4, 0.50) int -> eax "guarded devirt return temp"
;* V13 tmp9 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol>
;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "spilling ret_expr" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol>
-; V15 tmp11 [V15,T11] ( 2, 1.01) ref -> eax "guarded devirt return temp"
+; V15 tmp11 [V15,T12] ( 2, 1.01) ref -> eax "guarded devirt return temp"
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolNonGeneric>
-; V17 tmp13 [V17,T08] ( 3, 1.14) ref -> ebx class-hnd "Inline return value spill temp" <System.String>
+; V17 tmp13 [V17,T09] ( 3, 1.14) ref -> eax class-hnd "Inline return value spill temp" <System.String>
;* V18 tmp14 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.FileIdentifier>
-; V19 tmp15 [V19,T12] ( 2, 0.57) ref -> [ebp-0x10] class-hnd exact spill-single-def "impAppendStmt" <System.String>
+; V19 tmp15 [V19,T13] ( 2, 0.57) ref -> [ebp-0x14] class-hnd exact spill-single-def "impAppendStmt" <System.String>
;* V20 tmp16 [V20 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[ubyte]>
-; V21 tmp17 [V21,T06] ( 7, 1.71) ref -> ebx class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.FileIdentifier>
-; V22 tmp18 [V22,T07] ( 4, 1.71) ref -> ebx class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+; V21 tmp17 [V21,T07] ( 7, 1.71) ref -> [ebp-0x18] class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.FileIdentifier>
+; V22 tmp18 [V22,T08] ( 4, 1.71) ref -> eax class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
;* V23 tmp19 [V23 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[ubyte]>
-; V24 tmp20 [V24,T18] ( 3, 0 ) ref -> ebx class-hnd exact single-def "Inline stloc first use temp" <System.String>
+; V24 tmp20 [V24,T19] ( 3, 0 ) ref -> [ebp-0x1C] class-hnd exact single-def "Inline stloc first use temp" <System.String>
;* V25 tmp21 [V25 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[ubyte]>
-; V26 tmp22 [V26,T19] ( 3, 0 ) ref -> [ebp-0x14] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.FileIdentifier>
+; V26 tmp22 [V26,T20] ( 3, 0 ) ref -> [ebp-0x20] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.FileIdentifier>
;* V27 tmp23 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "spilling ret_expr" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolNonGeneric>
-; V28 tmp24 [V28,T09] ( 2, 1.14) int -> eax "guarded devirt return temp"
+; V28 tmp24 [V28,T10] ( 2, 1.14) int -> edx "guarded devirt return temp"
;* V29 tmp25 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolNonGeneric>
;* V30 tmp26 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "spilling ret_expr" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol>
-; V31 tmp27 [V31,T15] ( 2, 0.41) int -> eax "guarded devirt return temp"
+; V31 tmp27 [V31,T16] ( 2, 0.41) int -> eax "guarded devirt return temp"
;* V32 tmp28 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol>
;* V33 tmp29 [V33 ] ( 0, 0 ) ref -> zero-ref
;* V34 tmp30 [V34 ] ( 0, 0 ) ref -> zero-ref single-def
-; V35 tmp31 [V35,T14] ( 3, 0.44) ref -> eax
+; V35 tmp31 [V35,T15] ( 3, 0.44) ref -> eax
;* V36 tmp32 [V36 ] ( 0, 0 ) ref -> zero-ref "field V20.array (fldOffset=0x0)" P-INDEP
-; V37 tmp33 [V37,T10] ( 3, 1.14) ref -> [ebp-0x18] single-def "field V23.array (fldOffset=0x0)" P-INDEP
+; V37 tmp33 [V37,T11] ( 3, 1.14) ref -> [ebp-0x24] single-def "field V23.array (fldOffset=0x0)" P-INDEP
;* V38 tmp34 [V38 ] ( 0, 0 ) ref -> zero-ref single-def "field V25.array (fldOffset=0x0)" P-INDEP
-; V39 tmp35 [V39,T17] ( 2, 0.05) ref -> ebx single-def "argument with side effect"
-; V40 tmp36 [V40,T16] ( 2, 0.28) ref -> edx single-def "argument with side effect"
+; V39 tmp35 [V39,T18] ( 2, 0.05) ref -> ebx single-def "argument with side effect"
+; V40 tmp36 [V40,T17] ( 2, 0.28) ref -> edx single-def "argument with side effect"
+; V41 cse0 [V41,T02] ( 5, 4.19) int -> ebx multi-def "CSE - aggressive"
;
-; Lcl frame size = 12
+; Lcl frame size = 24
G_M11037_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -59,19 +60,20 @@ G_M11037_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 12
+ sub esp, 24
mov esi, ecx
; gcrRegs +[esi]
mov edi, edx
;; size=13 bbWeight=1 PerfScore 5.00
G_M11037_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
test edi, edi
- jne G_M11037_IG27
+ jne G_M11037_IG19
;; size=8 bbWeight=1 PerfScore 1.25
G_M11037_IG03: ; bbWeight=0.99, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- cmp dword ptr [esi], 0xD1FFAB1E
- jne SHORT G_M11037_IG14
- ;; size=8 bbWeight=0.99 PerfScore 3.95
+ mov ebx, dword ptr [esi]
+ cmp ebx, 0xD1FFAB1E
+ jne SHORT G_M11037_IG16
+ ;; size=10 bbWeight=0.99 PerfScore 3.21
G_M11037_IG04: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, esi
; gcrRegs +[ecx]
@@ -82,48 +84,79 @@ G_M11037_IG04: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000
;; size=10 bbWeight=0.50 PerfScore 1.76
G_M11037_IG05: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
- cmp dword ptr [esi], 0xD1FFAB1E
+ mov ebx, dword ptr [esi]
+ cmp ebx, 0xD1FFAB1E
jne SHORT G_M11037_IG15
- ;; size=8 bbWeight=1 PerfScore 4.00
+ ;; size=10 bbWeight=1 PerfScore 3.25
G_M11037_IG06: ; bbWeight=0.57, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov ebx, gword ptr [esi+0x3C]
- ; gcrRegs +[ebx]
- test ebx, ebx
- je SHORT G_M11037_IG08
- ;; size=7 bbWeight=0.57 PerfScore 1.85
-G_M11037_IG07: ; bbWeight=0.57, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
- mov eax, gword ptr [ebx+0x34]
+ mov eax, gword ptr [esi+0x3C]
; gcrRegs +[eax]
test eax, eax
+ je SHORT G_M11037_IG08
+ ;; size=7 bbWeight=0.57 PerfScore 1.85
+G_M11037_IG07: ; bbWeight=0.57, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref
+ mov edx, gword ptr [eax+0x34]
+ ; gcrRegs +[edx]
+ test edx, edx
jne G_M11037_IG28
;; size=11 bbWeight=0.57 PerfScore 1.85
G_M11037_IG08: ; bbWeight=0.57, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax ebx]
- xor ebx, ebx
- ; gcrRegs +[ebx]
+ ; gcrRegs -[eax edx]
+ xor ecx, ecx
+ ; gcrRegs +[ecx]
;; size=2 bbWeight=0.57 PerfScore 0.14
-G_M11037_IG09: ; bbWeight=0.57, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- test ebx, ebx
- jne SHORT G_M11037_IG24
- ;; size=4 bbWeight=0.57 PerfScore 0.71
+G_M11037_IG09: ; bbWeight=0.57, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref
+ test ecx, ecx
+ jne G_M11037_IG26
+ ;; size=8 bbWeight=0.57 PerfScore 0.71
G_M11037_IG10: ; bbWeight=0.43, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[ebx]
- xor ebx, ebx
- ; gcrRegs +[ebx]
- ;; size=2 bbWeight=0.43 PerfScore 0.11
-G_M11037_IG11: ; bbWeight=0.57, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[ecx]
xor eax, eax
+ ; gcrRegs +[eax]
+ ;; size=2 bbWeight=0.43 PerfScore 0.11
+G_M11037_IG11: ; bbWeight=0.57, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref
+ xor edx, edx
;; size=2 bbWeight=0.57 PerfScore 0.14
-G_M11037_IG12: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- or eax, ebx
- jne SHORT G_M11037_IG18
- ;; size=4 bbWeight=1 PerfScore 1.25
-G_M11037_IG13: ; bbWeight=0.78, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ebx esi]
- jmp SHORT G_M11037_IG16
- ;; size=2 bbWeight=0.78 PerfScore 1.56
-G_M11037_IG14: ; bbWeight=0.48, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[edi] +[esi]
+G_M11037_IG12: ; bbWeight=1, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov gword ptr [ebp-0x10], eax
+ ; GC ptr vars +{V08}
+ or edx, eax
+ jne SHORT G_M11037_IG17
+ ;; size=7 bbWeight=1 PerfScore 2.25
+G_M11037_IG13: ; bbWeight=0.78, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax esi]
+ ; GC ptr vars -{V08}
+ mov eax, edi
+ ; gcrRegs +[eax]
+ ;; size=2 bbWeight=0.78 PerfScore 0.20
+G_M11037_IG14: ; bbWeight=0.78, epilog, nogc, extend
+ lea esp, [ebp-0x0C]
+ pop ebx
+ pop esi
+ pop edi
+ pop ebp
+ ret
+ ;; size=8 bbWeight=0.78 PerfScore 2.74
+G_M11037_IG15: ; bbWeight=0.49, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[eax] +[esi]
+ mov ecx, esi
+ ; gcrRegs +[ecx]
+ call [<unknown method>]
+ ; gcrRegs -[ecx] +[eax]
+ mov gword ptr [ebp-0x10], eax
+ ; GC ptr vars +{V08}
+ mov ecx, esi
+ ; gcrRegs +[ecx]
+ call [<unknown method>]
+ ; gcrRegs -[eax ecx]
+ mov edx, eax
+ mov eax, gword ptr [ebp-0x10]
+ ; gcrRegs +[eax]
+ jmp SHORT G_M11037_IG12
+ ;; size=26 bbWeight=0.49 PerfScore 5.27
+G_M11037_IG16: ; bbWeight=0.48, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[eax edi]
+ ; GC ptr vars -{V08}
mov ecx, esi
; gcrRegs +[ecx]
call [<unknown method>]
@@ -132,120 +165,18 @@ G_M11037_IG14: ; bbWeight=0.48, gcrefRegs=00000040 {esi}, byrefRegs=00000
; gcrRegs +[edi]
jmp SHORT G_M11037_IG05
;; size=12 bbWeight=0.48 PerfScore 2.66
-G_M11037_IG15: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M11037_IG17: ; bbWeight=0.22, gcVars=00000008 {V08}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax]
- mov ecx, esi
- ; gcrRegs +[ecx]
- call [<unknown method>]
- ; gcrRegs -[ecx] +[eax]
- mov ebx, eax
- ; gcrRegs +[ebx]
- mov ecx, esi
- ; gcrRegs +[ecx]
- call [<unknown method>]
- ; gcrRegs -[eax ecx]
- jmp SHORT G_M11037_IG12
- ;; size=20 bbWeight=1 PerfScore 8.75
-G_M11037_IG16: ; bbWeight=0.78, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[ebx esi]
- mov eax, edi
- ; gcrRegs +[eax]
- ;; size=2 bbWeight=0.78 PerfScore 0.20
-G_M11037_IG17: ; bbWeight=0.78, epilog, nogc, extend
- lea esp, [ebp-0x0C]
- pop ebx
- pop esi
- pop edi
- pop ebp
- ret
- ;; size=8 bbWeight=0.78 PerfScore 2.74
-G_M11037_IG18: ; bbWeight=0.22, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax] +[ebx esi]
- cmp dword ptr [esi], 0xD1FFAB1E
- jne SHORT G_M11037_IG26
- ;; size=8 bbWeight=0.22 PerfScore 0.87
-G_M11037_IG19: ; bbWeight=0.20, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
- mov ecx, gword ptr [esi+0x20]
- ; gcrRegs +[ecx]
- cmp dword ptr [ecx], ecx
- call [Microsoft.CodeAnalysis.CSharp.MergedTypeDeclaration:get_Arity():int:this]
...
+20 (+11.43%) : 574837.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:MayRequireTracking(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol):ubyte:this (Tier1)
@@ -10,20 +10,21 @@
; Final local variable assignments
;
; V00 this [V00,T03] ( 3, 2.59) ref -> ebx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass>
-; V01 arg1 [V01,T01] ( 6, 4.18) ref -> edi class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
-; V02 arg2 [V02,T00] ( 9, 6.77) ref -> esi class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol>
-; V03 tmp0 [V03,T04] ( 2, 1.82) int -> eax "guarded devirt return temp"
+; V01 arg1 [V01,T00] ( 6, 4.77) ref -> esi class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+; V02 arg2 [V02,T01] ( 7, 5.27) ref -> edi class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol>
+; V03 tmp0 [V03,T05] ( 2, 1.82) int -> eax "guarded devirt return temp"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEFieldSymbol>
-; V05 tmp2 [V05,T06] ( 2, 1.18) int -> eax "guarded devirt return temp"
+; V05 tmp2 [V05,T07] ( 2, 1.18) int -> eax "guarded devirt return temp"
;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEFieldSymbol>
-;* V07 tmp4 [V07,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V07 tmp4 [V07,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V08 tmp5 [V08,T02] ( 6, 4.73) ref -> ecx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
-; V09 tmp6 [V09,T05] ( 3, 1.18) int -> eax "guarded devirt return temp"
+; V09 tmp6 [V09,T06] ( 3, 1.18) int -> eax "guarded devirt return temp"
;* V10 tmp7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolNonGeneric>
;* V11 tmp8 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
-; V12 tmp9 [V12,T07] ( 3, 0 ) ref -> ecx single-def "argument with side effect"
+; V12 tmp9 [V12,T08] ( 3, 3.55) ref -> ecx single-def "argument with side effect"
+; V13 cse0 [V13,T04] ( 4, 3.31) int -> [ebp-0x10] "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M52952_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -31,118 +32,123 @@ G_M52952_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
+ push eax
mov ebx, ecx
; gcrRegs +[ebx]
- mov edi, edx
- ; gcrRegs +[edi]
- mov esi, gword ptr [ebp+0x08]
+ mov esi, edx
; gcrRegs +[esi]
- ;; size=13 bbWeight=1 PerfScore 5.75
-G_M52952_IG02: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- test esi, esi
- je SHORT G_M52952_IG11
- ;; size=4 bbWeight=1 PerfScore 1.25
-G_M52952_IG03: ; bbWeight=1.00, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov edi, gword ptr [ebp+0x08]
+ ; gcrRegs +[edi]
+ ;; size=14 bbWeight=1 PerfScore 6.75
+G_M52952_IG02: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
test edi, edi
- je SHORT G_M52952_IG11
- ;; size=4 bbWeight=1.00 PerfScore 1.25
+ je G_M52952_IG14
+ ;; size=8 bbWeight=1 PerfScore 1.25
+G_M52952_IG03: ; bbWeight=1.00, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+ test esi, esi
+ je G_M52952_IG14
+ ;; size=8 bbWeight=1.00 PerfScore 1.25
G_M52952_IG04: ; bbWeight=0.91, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- cmp dword ptr [esi], 0xD1FFAB1E
+ mov eax, dword ptr [edi]
+ cmp eax, 0xD1FFAB1E
jne SHORT G_M52952_IG06
- ;; size=8 bbWeight=0.91 PerfScore 3.63
+ ;; size=9 bbWeight=0.91 PerfScore 2.95
G_M52952_IG05: ; bbWeight=0.68, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- test byte ptr [esi+0x28], 16
- jne SHORT G_M52952_IG11
- jmp SHORT G_M52952_IG10
- ;; size=8 bbWeight=0.68 PerfScore 4.08
+ test byte ptr [edi+0x28], 16
+ jne G_M52952_IG14
+ jmp SHORT G_M52952_IG08
+ ;; size=12 bbWeight=0.68 PerfScore 4.08
G_M52952_IG06: ; bbWeight=0.91, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, esi
+ mov ecx, edi
; gcrRegs +[ecx]
- mov eax, dword ptr [esi]
- mov eax, dword ptr [eax+0x40]
- call [eax+0x10]<unknown method>
+ mov dword ptr [ebp-0x10], eax
+ mov edx, dword ptr [eax+0x40]
+ call [edx+0x10]<unknown method>
; gcrRegs -[ecx]
test eax, eax
- jne SHORT G_M52952_IG11
- ;; size=14 bbWeight=0.91 PerfScore 7.71
-G_M52952_IG07: ; bbWeight=0.59, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, esi
- ; gcrRegs +[ecx]
- mov eax, dword ptr [esi]
- mov eax, dword ptr [eax+0x68]
- call [eax+0x08]<unknown method>
- ; gcrRegs -[ecx esi]
- test eax, eax
- jne SHORT G_M52952_IG11
- ;; size=14 bbWeight=0.59 PerfScore 5.03
-G_M52952_IG08: ; bbWeight=0.59, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref, isz
- cmp byte ptr [edi+0x0A], 22
- je SHORT G_M52952_IG11
- mov ecx, gword ptr [edi+0x0C]
- ; gcrRegs +[ecx]
- test ecx, ecx
- je SHORT G_M52952_IG11
- cmp byte ptr [ebx+0xDD], 0
jne SHORT G_M52952_IG14
- cmp dword ptr [ecx], 0xD1FFAB1E
- jne SHORT G_M52952_IG13
- call [Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol:get_TypeKind():ubyte:this]
- ; gcrRegs -[ecx ebx]
- ;; size=36 bbWeight=0.59 PerfScore 10.79
-G_M52952_IG09: ; bbWeight=0.59, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
- cmp eax, 10
- jne SHORT G_M52952_IG11
- jmp SHORT G_M52952_IG14
- ;; size=7 bbWeight=0.59 PerfScore 1.92
-G_M52952_IG10: ; bbWeight=0.59, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[ebx esi]
- mov ecx, esi
+ ;; size=15 bbWeight=0.91 PerfScore 6.81
+G_M52952_IG07: ; bbWeight=0.59, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov eax, dword ptr [ebp-0x10]
+ jmp SHORT G_M52952_IG09
+ ;; size=5 bbWeight=0.59 PerfScore 1.77
+G_M52952_IG08: ; bbWeight=0.59, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov ecx, edi
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[ecx]
- cmp gword ptr [esi+0x20], 0
- je SHORT G_M52952_IG08
- ;; size=14 bbWeight=0.59 PerfScore 4.29
-G_M52952_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[ebx esi edi]
- xor eax, eax
- ;; size=2 bbWeight=1 PerfScore 0.25
-G_M52952_IG12: ; bbWeight=1, epilog, nogc, extend
- pop ebx
- pop esi
- pop edi
- pop ebp
- ret 4
- ;; size=7 bbWeight=1 PerfScore 4.00
-G_M52952_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000082 {ecx edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs +[ecx edi]
- mov eax, dword ptr [ecx]
- mov eax, dword ptr [eax+0x5C]
- call [eax+0x14]<unknown method>
- ; gcrRegs -[ecx]
- jmp SHORT G_M52952_IG09
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M52952_IG14: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
- mov ecx, gword ptr [edi+0x0C]
+ cmp gword ptr [edi+0x20], 0
+ jne SHORT G_M52952_IG14
+ jmp SHORT G_M52952_IG10
+ ;; size=16 bbWeight=0.59 PerfScore 5.47
+G_M52952_IG09: ; bbWeight=0.59, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov ecx, edi
+ ; gcrRegs +[ecx]
+ mov eax, dword ptr [eax+0x68]
+ call [eax+0x08]<unknown method>
+ ; gcrRegs -[ecx edi]
+ test eax, eax
+ jne SHORT G_M52952_IG14
+ ;; size=12 bbWeight=0.59 PerfScore 3.84
+G_M52952_IG10: ; bbWeight=0.59, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ cmp byte ptr [esi+0x0A], 22
+ je SHORT G_M52952_IG14
+ mov ecx, gword ptr [esi+0x0C]
+ ; gcrRegs +[ecx]
+ test ecx, ecx
+ je SHORT G_M52952_IG14
+ cmp byte ptr [ebx+0xDD], 0
+ jne SHORT G_M52952_IG12
+ cmp dword ptr [ecx], 0xD1FFAB1E
+ jne SHORT G_M52952_IG16
+ call [Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol:get_TypeKind():ubyte:this]
+ ; gcrRegs -[ecx ebx]
+ ;; size=36 bbWeight=0.59 PerfScore 10.79
+G_M52952_IG11: ; bbWeight=0.59, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ cmp eax, 10
+ jne SHORT G_M52952_IG14
+ ;; size=5 bbWeight=0.59 PerfScore 0.74
+G_M52952_IG12: ; bbWeight=0.59, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ mov ecx, gword ptr [esi+0x0C]
; gcrRegs +[ecx]
mov eax, dword ptr [ecx]
mov eax, dword ptr [eax+0x5C]
call [eax+0x18]<unknown method>
- ; gcrRegs -[ecx edi]
+ ; gcrRegs -[ecx esi]
mov ecx, eax
call [Microsoft.CodeAnalysis.SpecialTypeExtensions:IsPrimitiveRecursiveStruct(byte):ubyte]
test eax, eax
sete al
movzx eax, al
- ;; size=27 bbWeight=0 PerfScore 0.00
-G_M52952_IG15: ; bbWeight=0, epilog, nogc, extend
+ ;; size=27 bbWeight=0.59 PerfScore 8.13
+G_M52952_IG13: ; bbWeight=0.59, epilog, nogc, extend
+ pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret 4
- ;; size=7 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=0.59 PerfScore 2.66
+G_M52952_IG14: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M52952_IG15: ; bbWeight=1, epilog, nogc, extend
+ pop ecx
+ pop ebx
+ pop esi
+ pop edi
+ pop ebp
+ ret 4
+ ;; size=8 bbWeight=1 PerfScore 4.50
+G_M52952_IG16: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs +[ecx esi]
+ mov eax, dword ptr [ecx]
+ mov eax, dword ptr [eax+0x5C]
+ call [eax+0x14]<unknown method>
+ ; gcrRegs -[ecx]
+ jmp SHORT G_M52952_IG11
+ ;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 175, prolog size 6, PerfScore 49.96, instruction count 70, allocated bytes for code 175 (MethodHash=6fcd3127) for method Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:MayRequireTracking(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol):ubyte:this (Tier1)
+; Total bytes of code 195, prolog size 7, PerfScore 61.25, instruction count 75, allocated bytes for code 195 (MethodHash=6fcd3127) for method Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:MayRequireTracking(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol):ubyte:this (Tier1)
; ============================================================
+7 (+12.07%) : 570185.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:get_HasSetsRequiredMembers():ubyte:this (Tier1)
@@ -9,63 +9,74 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 5, 5 ) ref -> esi this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol>
-; V01 tmp0 [V01,T03] ( 2, 2 ) int -> eax "guarded devirt return temp"
+; V00 this [V00,T00] ( 5, 4.52) ref -> esi this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol>
+; V01 tmp0 [V01,T02] ( 2, 2 ) int -> eax "guarded devirt return temp"
;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedInstanceConstructor>
-; V03 tmp2 [V03,T02] ( 3, 2.48) int -> eax "guarded devirt return temp"
+; V03 tmp2 [V03,T03] ( 3, 2 ) int -> ebx "guarded devirt return temp"
;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedInstanceConstructor>
-; V05 cse0 [V05,T01] ( 4, 4 ) int -> edi "CSE - aggressive"
+; V05 cse0 [V05,T01] ( 4, 3.52) int -> edi "CSE - aggressive"
;
; Lcl frame size = 0
-G_M9932_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
+G_M9932_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
push edi
push esi
+ push ebx
mov esi, ecx
; gcrRegs +[esi]
- ;; size=7 bbWeight=1 PerfScore 3.50
+ ;; size=8 bbWeight=1 PerfScore 4.50
G_M9932_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov edi, dword ptr [esi]
cmp edi, 0xD1FFAB1E
- je SHORT G_M9932_IG05
+ je SHORT G_M9932_IG04
mov ecx, esi
; gcrRegs +[ecx]
mov eax, dword ptr [edi+0x70]
call [eax+0x1C]<unknown method>
; gcrRegs -[ecx]
cmp eax, 1
- jne SHORT G_M9932_IG06
+ jne SHORT G_M9932_IG08
+ ;; size=23 bbWeight=1 PerfScore 9.75
+G_M9932_IG03: ; bbWeight=0.52, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M9932_IG05
+ ;; size=2 bbWeight=0.52 PerfScore 1.04
+G_M9932_IG04: ; bbWeight=0.48, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[esi]
+ xor ebx, ebx
+ jmp SHORT G_M9932_IG06
+ ;; size=4 bbWeight=0.48 PerfScore 1.08
+G_M9932_IG05: ; bbWeight=0.52, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs +[esi]
mov ecx, esi
; gcrRegs +[ecx]
mov eax, dword ptr [edi+0x88]
call [eax+0x0C]<unknown method>
; gcrRegs -[ecx esi]
- ;; size=34 bbWeight=1 PerfScore 15.00
-G_M9932_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- movzx eax, al
+ mov ebx, eax
+ ;; size=13 bbWeight=0.52 PerfScore 2.86
+G_M9932_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ movzx eax, bl
;; size=3 bbWeight=1 PerfScore 0.25
-G_M9932_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M9932_IG07: ; bbWeight=1, epilog, nogc, extend
+ pop ebx
pop esi
pop edi
pop ebp
ret
- ;; size=4 bbWeight=1 PerfScore 2.50
-G_M9932_IG05: ; bbWeight=0.48, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- xor eax, eax
- jmp SHORT G_M9932_IG03
- ;; size=4 bbWeight=0.48 PerfScore 1.08
-G_M9932_IG06: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ;; size=5 bbWeight=1 PerfScore 3.00
+G_M9932_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
xor eax, eax
;; size=2 bbWeight=0 PerfScore 0.00
-G_M9932_IG07: ; bbWeight=0, epilog, nogc, extend
+G_M9932_IG09: ; bbWeight=0, epilog, nogc, extend
+ pop ebx
pop esi
pop edi
pop ebp
ret
- ;; size=4 bbWeight=0 PerfScore 0.00
+ ;; size=5 bbWeight=0 PerfScore 0.00
-; Total bytes of code 58, prolog size 5, PerfScore 22.33, instruction count 28, allocated bytes for code 58 (MethodHash=05c1d933) for method Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:get_HasSetsRequiredMembers():ubyte:this (Tier1)
+; Total bytes of code 65, prolog size 6, PerfScore 22.48, instruction count 33, allocated bytes for code 65 (MethodHash=05c1d933) for method Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:get_HasSetsRequiredMembers():ubyte:this (Tier1)
; ============================================================
librariestestsnotieredcompilation.run.windows.x86.Release.mch
-32 (-48.48%) : 203179.dasm - System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs:Equals(System.Object):ubyte:this (FullOpts)
@@ -8,75 +8,52 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 2.50) byref -> ecx this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> esi class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> edx class-hnd single-def <System.Object>
; V02 tmp0 [V02,T01] ( 3, 4.50) ref -> eax class-hnd "spilling QMark2" <System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs>
-; V03 tmp1 [V03,T03] ( 2, 2 ) ref -> edi class-hnd exact single-def "impAppendStmt" <System.Runtime.Serialization.Formatters.Tests.StructContainingOtherStructs[]>
-; V04 cse0 [V04,T04] ( 3, 1 ) int -> edx "CSE - moderate"
+; V03 tmp1 [V03,T03] ( 2, 2 ) ref -> ecx class-hnd exact single-def "impAppendStmt" <System.Runtime.Serialization.Formatters.Tests.StructContainingOtherStructs[]>
;
; Lcl frame size = 0
-G_M20050_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
+G_M20050_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
- push edi
- push esi
- mov esi, edx
- ; gcrRegs +[esi]
- ;; size=7 bbWeight=1 PerfScore 3.50
-G_M20050_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref, isz
+ ;; size=3 bbWeight=1 PerfScore 1.25
+G_M20050_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref, isz
+ ; gcrRegs +[edx]
; byrRegs +[ecx]
- mov eax, esi
+ mov eax, edx
; gcrRegs +[eax]
test eax, eax
je SHORT G_M20050_IG04
;; size=6 bbWeight=1 PerfScore 1.50
-G_M20050_IG03: ; bbWeight=0.25, gcrefRegs=00000041 {eax esi}, byrefRegs=00000002 {ecx}, byref, isz
- mov edx, dword ptr [eax]
- cmp edx, 0xD1FFAB1E
+G_M20050_IG03: ; bbWeight=0.25, gcrefRegs=00000005 {eax edx}, byrefRegs=00000002 {ecx}, byref, isz
+ cmp dword ptr [eax], 0xD1FFAB1E
je SHORT G_M20050_IG06
- ;; size=10 bbWeight=0.25 PerfScore 0.81
+ ;; size=8 bbWeight=0.25 PerfScore 1.00
G_M20050_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax esi]
+ ; gcrRegs -[eax edx]
; byrRegs -[ecx]
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M20050_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop esi
- pop edi
pop ebp
ret
- ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M20050_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, gcvars, byref, isz
- ; gcrRegs +[esi]
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M20050_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, gcvars, byref
+ ; gcrRegs +[edx]
; byrRegs +[ecx]
- mov edi, gword ptr [ecx]
- ; gcrRegs +[edi]
- cmp edx, 0xD1FFAB1E
- je SHORT G_M20050_IG08
- ;; size=10 bbWeight=0.50 PerfScore 1.62
-G_M20050_IG07: ; bbWeight=0.25, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
- ; byrRegs -[ecx]
- mov edx, esi
- ; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs
- call CORINFO_HELP_UNBOX
- ; gcrRegs -[edx]
- ;; size=12 bbWeight=0.25 PerfScore 0.38
-G_M20050_IG08: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
- mov edx, gword ptr [esi+0x04]
- ; gcrRegs +[edx]
- mov ecx, edi
+ mov ecx, gword ptr [ecx]
; gcrRegs +[ecx]
+ ; byrRegs -[ecx]
+ mov edx, gword ptr [edx+0x04]
call [System.Runtime.Serialization.Formatters.Tests.EqualityHelpers:ArraysAreEqual[System.Runtime.Serialization.Formatters.Tests.StructContainingOtherStructs](System.Runtime.Serialization.Formatters.Tests.StructContainingOtherStructs[],System.Runtime.Serialization.Formatters.Tests.StructContainingOtherStructs[]):ubyte]
- ; gcrRegs -[ecx edx esi edi]
- ;; size=11 bbWeight=0.50 PerfScore 2.62
-G_M20050_IG09: ; bbWeight=0.50, epilog, nogc, extend
- pop esi
- pop edi
+ ; gcrRegs -[ecx edx]
+ ;; size=11 bbWeight=0.50 PerfScore 3.50
+G_M20050_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret
- ;; size=4 bbWeight=0.50 PerfScore 1.25
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 66, prolog size 5, PerfScore 13.06, instruction count 29, allocated bytes for code 66 (MethodHash=8ccbb1ad) for method System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 34, prolog size 3, PerfScore 8.88, instruction count 15, allocated bytes for code 34 (MethodHash=8ccbb1ad) for method System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================
-30 (-26.79%) : 95859.dasm - System.Data.Tests.DataRowTest2+Address:Equals(System.Object):ubyte:this (FullOpts)
@@ -8,124 +8,105 @@
; 2 inlinees with PGO data; 6 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 4, 3 ) byref -> edi this single-def
-; V01 arg1 [V01,T00] ( 6, 4.25) ref -> esi class-hnd single-def <System.Object>
+; V00 this [V00,T01] ( 4, 3 ) byref -> ecx this single-def
+; V01 arg1 [V01,T00] ( 5, 4 ) ref -> edx class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref <System.Data.Tests.DataRowTest2+Address>
; V03 tmp0 [V03,T04] ( 3, 4.50) ref -> eax class-hnd "spilling QMark2" <System.Data.Tests.DataRowTest2+Address>
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
; V05 tmp2 [V05,T03] ( 5, 4.83) ref -> edx class-hnd exact single-def "Inlining Arg" <System.String>
; V06 tmp3 [V06,T07] ( 2, 1 ) ubyte -> eax "Inline return value spill temp"
-; V07 tmp4 [V07,T02] ( 5, 4.83) ref -> ecx class-hnd exact single-def "Inlining Arg" <System.String>
-; V08 tmp5 [V08,T05] ( 2, 2 ) byref -> ecx single-def "impAppendStmt"
+; V07 tmp4 [V07,T02] ( 5, 4.83) ref -> eax class-hnd exact single-def "Inlining Arg" <System.String>
+; V08 tmp5 [V08,T05] ( 2, 2 ) byref -> eax single-def "impAppendStmt"
;* V09 tmp6 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V10 tmp7 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V11 tmp8 [V11 ] ( 0, 0 ) ubyte -> zero-ref "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,T09] ( 2, 1.00) ref -> ecx single-def "field V02.Street (fldOffset=0x0)" P-INDEP
-; V15 tmp12 [V15,T10] ( 2, 1 ) int -> edx single-def "field V02.HouseNumber (fldOffset=0x4)" P-INDEP
-; V16 cse0 [V16,T06] ( 3, 1.42) int -> eax "CSE - moderate"
-; V17 cse1 [V17,T08] ( 3, 1 ) int -> edx "CSE - moderate"
+; V14 tmp11 [V14,T08] ( 2, 1.00) ref -> eax single-def "field V02.Street (fldOffset=0x0)" P-INDEP
+; V15 tmp12 [V15,T09] ( 2, 1 ) int -> edx single-def "field V02.HouseNumber (fldOffset=0x4)" P-INDEP
+; V16 cse0 [V16,T06] ( 3, 1.42) int -> ecx "CSE - moderate"
;
; Lcl frame size = 0
G_M31876_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
- push edi
- push esi
- mov edi, ecx
- ; byrRegs +[edi]
- mov esi, edx
- ; gcrRegs +[esi]
- ;; size=9 bbWeight=1 PerfScore 3.75
-G_M31876_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
- mov eax, esi
+ ;; size=3 bbWeight=1 PerfScore 1.25
+G_M31876_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref, isz
+ ; gcrRegs +[edx]
+ ; byrRegs +[ecx]
+ mov eax, edx
; gcrRegs +[eax]
test eax, eax
je SHORT G_M31876_IG04
;; size=6 bbWeight=1 PerfScore 1.50
-G_M31876_IG03: ; bbWeight=0.25, gcrefRegs=00000041 {eax esi}, byrefRegs=00000080 {edi}, byref, isz
- mov edx, dword ptr [eax]
- cmp edx, 0xD1FFAB1E
+G_M31876_IG03: ; bbWeight=0.25, gcrefRegs=00000005 {eax edx}, byrefRegs=00000002 {ecx}, byref, isz
+ cmp dword ptr [eax], 0xD1FFAB1E
je SHORT G_M31876_IG06
- ;; size=10 bbWeight=0.25 PerfScore 0.81
+ ;; size=8 bbWeight=0.25 PerfScore 1.00
G_M31876_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax esi]
- ; byrRegs -[edi]
+ ; gcrRegs -[eax edx]
+ ; byrRegs -[ecx]
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M31876_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop esi
- pop edi
pop ebp
ret
- ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M31876_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz
- ; gcrRegs +[esi]
- ; byrRegs +[edi]
- cmp edx, 0xD1FFAB1E
- je SHORT G_M31876_IG08
- ;; size=8 bbWeight=0.50 PerfScore 0.62
-G_M31876_IG07: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref
- mov edx, esi
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M31876_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, gcvars, byref, isz
; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; System.Data.Tests.DataRowTest2+Address
- call CORINFO_HELP_UNBOX
+ ; byrRegs +[ecx]
+ mov eax, gword ptr [edx+0x04]
+ ; gcrRegs +[eax]
+ mov edx, dword ptr [edx+0x08]
; gcrRegs -[edx]
- ;; size=12 bbWeight=0.25 PerfScore 0.38
-G_M31876_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
- mov ecx, gword ptr [esi+0x04]
- ; gcrRegs +[ecx]
- mov edx, dword ptr [esi+0x08]
- cmp edx, dword ptr [edi+0x04]
+ cmp edx, dword ptr [ecx+0x04]
jne SHORT G_M31876_IG04
;; size=11 bbWeight=0.50 PerfScore 4.00
-G_M31876_IG09: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000080 {edi}, byref, isz
- ; gcrRegs -[esi]
- mov edx, gword ptr [edi]
+G_M31876_IG07: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000002 {ecx}, byref, isz
+ mov edx, gword ptr [ecx]
; gcrRegs +[edx]
- cmp ecx, edx
- je SHORT G_M31876_IG14
+ cmp eax, edx
+ je SHORT G_M31876_IG12
;; size=6 bbWeight=0.50 PerfScore 1.63
-G_M31876_IG10: ; bbWeight=0.46, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz
- ; byrRegs -[edi]
- test ecx, ecx
+G_M31876_IG08: ; bbWeight=0.46, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz
+ ; byrRegs -[ecx]
+ test eax, eax
je SHORT G_M31876_IG04
;; size=4 bbWeight=0.46 PerfScore 0.57
-G_M31876_IG11: ; bbWeight=0.46, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz
+G_M31876_IG09: ; bbWeight=0.46, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz
test edx, edx
je SHORT G_M31876_IG04
;; size=4 bbWeight=0.46 PerfScore 0.57
-G_M31876_IG12: ; bbWeight=0.46, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz
- mov eax, dword ptr [ecx+0x04]
- cmp eax, dword ptr [edx+0x04]
+G_M31876_IG10: ; bbWeight=0.46, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz
+ mov ecx, dword ptr [eax+0x04]
+ cmp ecx, dword ptr [edx+0x04]
jne SHORT G_M31876_IG04
;; size=8 bbWeight=0.46 PerfScore 2.75
-G_M31876_IG13: ; bbWeight=0.50, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz
- add ecx, 8
- ; gcrRegs -[ecx]
- ; byrRegs +[ecx]
- add eax, eax
- push eax
+G_M31876_IG11: ; bbWeight=0.50, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz
+ add eax, 8
+ ; gcrRegs -[eax]
+ ; byrRegs +[eax]
+ add ecx, ecx
+ push ecx
add edx, 8
; gcrRegs -[edx]
; byrRegs +[edx]
+ mov ecx, eax
+ ; byrRegs +[ecx]
call [<unknown method>]
- ; byrRegs -[ecx edx]
+ ; byrRegs -[eax ecx edx]
test eax, eax
je SHORT G_M31876_IG04
- ;; size=19 bbWeight=0.50 PerfScore 3.00
-G_M31876_IG14: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ;; size=21 bbWeight=0.50 PerfScore 3.12
+G_M31876_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M31876_IG15: ; bbWeight=0.50, epilog, nogc, extend
- pop esi
- pop edi
+G_M31876_IG13: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret
- ;; size=4 bbWeight=0.50 PerfScore 1.25
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 112, prolog size 5, PerfScore 22.33, instruction count 48, allocated bytes for code 112 (MethodHash=de0c837b) for method System.Data.Tests.DataRowTest2+Address:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 82, prolog size 3, PerfScore 18.14, instruction count 35, allocated bytes for code 82 (MethodHash=de0c837b) for method System.Data.Tests.DataRowTest2+Address:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================
-23 (-21.90%) : 3010.dasm - Microsoft.VisualStudio.Composition.ExportProvider:GetOrderMetadata(System.Collections.Generic.IReadOnlyDictionary`2[System.String,System.Object]):int (FullOpts)
@@ -11,13 +11,12 @@
; V00 arg0 [V00,T00] ( 4, 4 ) ref -> esi class-hnd single-def <System.Collections.Generic.IReadOnlyDictionary`2[System.String,System.Object]>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Object>
; V02 tmp0 [V02,T01] ( 3, 4.50) ref -> eax class-hnd "spilling QMark2" <<unknown class>>
-; V03 tmp1 [V03,T02] ( 4, 2.75) ref -> esi class-hnd single-def "Inline return value spill temp" <System.Object>
+; V03 tmp1 [V03,T02] ( 3, 2.50) ref -> edx class-hnd single-def "Inline return value spill temp" <System.Object>
; V04 tmp2 [V04 ] ( 3, 3 ) ref -> [ebp-0x08] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Object>
-; V05 cse0 [V05,T03] ( 3, 1 ) int -> edx "CSE - moderate"
;
; Lcl frame size = 4
-G_M11822_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
+G_M11822_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
push esi
@@ -43,22 +42,21 @@ G_M11822_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
; gcrRegs +[edx]
call [<unknown method>]
; gcrRegs -[eax ecx edx esi]
- mov esi, gword ptr [ebp-0x08]
- ; gcrRegs +[esi]
+ mov edx, gword ptr [ebp-0x08]
+ ; gcrRegs +[edx]
xor eax, eax
; gcrRegs +[eax]
mov gword ptr [ebp-0x08], eax
- mov eax, esi
+ mov eax, edx
test eax, eax
je SHORT G_M11822_IG04
;; size=49 bbWeight=1 PerfScore 13.25
-G_M11822_IG03: ; bbWeight=0.25, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
- mov edx, dword ptr [eax]
- cmp edx, 0xD1FFAB1E
+G_M11822_IG03: ; bbWeight=0.25, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz
+ cmp dword ptr [eax], 0xD1FFAB1E
je SHORT G_M11822_IG06
- ;; size=10 bbWeight=0.25 PerfScore 0.81
+ ;; size=8 bbWeight=0.25 PerfScore 1.00
G_M11822_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax esi]
+ ; gcrRegs -[eax edx]
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M11822_IG05: ; bbWeight=0.50, epilog, nogc, extend
@@ -67,28 +65,17 @@ G_M11822_IG05: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret
;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M11822_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs +[esi]
- cmp edx, 0xD1FFAB1E
- je SHORT G_M11822_IG08
- ;; size=8 bbWeight=0.50 PerfScore 0.62
-G_M11822_IG07: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- mov edx, esi
+G_M11822_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; <unknown class>
- call [CORINFO_HELP_UNBOX]
- ; gcrRegs -[edx]
- ;; size=13 bbWeight=0.25 PerfScore 0.88
-G_M11822_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- mov eax, dword ptr [esi+0x04]
+ mov eax, dword ptr [edx+0x04]
;; size=3 bbWeight=0.50 PerfScore 1.00
-G_M11822_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M11822_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop ecx
pop esi
pop ebp
ret
;; size=4 bbWeight=0.50 PerfScore 1.25
-; Total bytes of code 105, prolog size 10, PerfScore 23.94, instruction count 40, allocated bytes for code 105 (MethodHash=e58ed1d1) for method Microsoft.VisualStudio.Composition.ExportProvider:GetOrderMetadata(System.Collections.Generic.IReadOnlyDictionary`2[System.String,System.Object]):int (FullOpts)
+; Total bytes of code 82, prolog size 10, PerfScore 22.62, instruction count 34, allocated bytes for code 82 (MethodHash=e58ed1d1) for method Microsoft.VisualStudio.Composition.ExportProvider:GetOrderMetadata(System.Collections.Generic.IReadOnlyDictionary`2[System.String,System.Object]):int (FullOpts)
; ============================================================
+3 (+12.50%) : 227130.dasm - System.Security.Cryptography.SHA1CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
@@ -8,8 +8,9 @@
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 4, 4 ) ref -> esi this class-hnd single-def <System.Security.Cryptography.SHA1CryptoServiceProvider>
+; V00 this [V00,T00] ( 4, 3 ) ref -> esi this class-hnd single-def <System.Security.Cryptography.SHA1CryptoServiceProvider>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> edx single-def
+; V02 cse0 [V02,T02] ( 2, 2 ) int -> ecx "CSE - aggressive"
;
; Lcl frame size = 0
@@ -19,8 +20,11 @@ G_M54186_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; gcrRegs +[esi]
;; size=3 bbWeight=1 PerfScore 1.25
G_M54186_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- test dl, dl
- je SHORT G_M54186_IG03
+ movzx ecx, dl
+ test ecx, ecx
+ je SHORT G_M54186_IG04
+ ;; size=7 bbWeight=1 PerfScore 1.50
+G_M54186_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, gword ptr [esi+0x14]
; gcrRegs +[ecx]
cmp dword ptr [ecx], ecx
@@ -28,13 +32,13 @@ G_M54186_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
; gcrRegs -[ecx]
; gcr arg pop 0
mov byte ptr [esi+0x10], 1
- ;; size=19 bbWeight=1 PerfScore 10.25
-G_M54186_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=15 bbWeight=0.50 PerfScore 4.50
+G_M54186_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[esi]
pop esi
ret
;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 24, prolog size 1, PerfScore 13.00, instruction count 10, allocated bytes for code 24 (MethodHash=9cf42c55) for method System.Security.Cryptography.SHA1CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
+; Total bytes of code 27, prolog size 1, PerfScore 8.75, instruction count 11, allocated bytes for code 27 (MethodHash=9cf42c55) for method System.Security.Cryptography.SHA1CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
; ============================================================
+3 (+12.50%) : 227355.dasm - System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
@@ -8,8 +8,9 @@
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 4, 4 ) ref -> esi this class-hnd single-def <System.Security.Cryptography.SHA512CryptoServiceProvider>
+; V00 this [V00,T00] ( 4, 3 ) ref -> esi this class-hnd single-def <System.Security.Cryptography.SHA512CryptoServiceProvider>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> edx single-def
+; V02 cse0 [V02,T02] ( 2, 2 ) int -> ecx "CSE - aggressive"
;
; Lcl frame size = 0
@@ -19,8 +20,11 @@ G_M31021_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; gcrRegs +[esi]
;; size=3 bbWeight=1 PerfScore 1.25
G_M31021_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- test dl, dl
- je SHORT G_M31021_IG03
+ movzx ecx, dl
+ test ecx, ecx
+ je SHORT G_M31021_IG04
+ ;; size=7 bbWeight=1 PerfScore 1.50
+G_M31021_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, gword ptr [esi+0x14]
; gcrRegs +[ecx]
cmp dword ptr [ecx], ecx
@@ -28,13 +32,13 @@ G_M31021_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
; gcrRegs -[ecx]
; gcr arg pop 0
mov byte ptr [esi+0x10], 1
- ;; size=19 bbWeight=1 PerfScore 10.25
-G_M31021_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=15 bbWeight=0.50 PerfScore 4.50
+G_M31021_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[esi]
pop esi
ret
;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 24, prolog size 1, PerfScore 13.00, instruction count 10, allocated bytes for code 24 (MethodHash=150886d2) for method System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
+; Total bytes of code 27, prolog size 1, PerfScore 8.75, instruction count 11, allocated bytes for code 27 (MethodHash=150886d2) for method System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
; ============================================================
+3 (+12.50%) : 227363.dasm - System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
@@ -8,8 +8,9 @@
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 4, 4 ) ref -> esi this class-hnd single-def <System.Security.Cryptography.SHA384CryptoServiceProvider>
+; V00 this [V00,T00] ( 4, 3 ) ref -> esi this class-hnd single-def <System.Security.Cryptography.SHA384CryptoServiceProvider>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> edx single-def
+; V02 cse0 [V02,T02] ( 2, 2 ) int -> ecx "CSE - aggressive"
;
; Lcl frame size = 0
@@ -19,8 +20,11 @@ G_M59236_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; gcrRegs +[esi]
;; size=3 bbWeight=1 PerfScore 1.25
G_M59236_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- test dl, dl
- je SHORT G_M59236_IG03
+ movzx ecx, dl
+ test ecx, ecx
+ je SHORT G_M59236_IG04
+ ;; size=7 bbWeight=1 PerfScore 1.50
+G_M59236_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, gword ptr [esi+0x14]
; gcrRegs +[ecx]
cmp dword ptr [ecx], ecx
@@ -28,13 +32,13 @@ G_M59236_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
; gcrRegs -[ecx]
; gcr arg pop 0
mov byte ptr [esi+0x10], 1
- ;; size=19 bbWeight=1 PerfScore 10.25
-G_M59236_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=15 bbWeight=0.50 PerfScore 4.50
+G_M59236_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[esi]
pop esi
ret
;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 24, prolog size 1, PerfScore 13.00, instruction count 10, allocated bytes for code 24 (MethodHash=ebc3189b) for method System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
+; Total bytes of code 27, prolog size 1, PerfScore 8.75, instruction count 11, allocated bytes for code 27 (MethodHash=ebc3189b) for method System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
; ============================================================
realworld.run.windows.x86.checked.mch
-30 (-46.88%) : 7766.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
@@ -8,71 +8,50 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 2.50) byref -> ecx this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> esi class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> edx class-hnd single-def <System.Object>
; V02 tmp0 [V02,T01] ( 3, 4.50) ref -> eax class-hnd "spilling QMark2" <System.Int32>
-; V03 tmp1 [V03,T03] ( 2, 2 ) int -> edi "impAppendStmt"
-; V04 cse0 [V04,T04] ( 3, 1 ) int -> edx "CSE - moderate"
+; V03 tmp1 [V03,T03] ( 2, 2 ) int -> eax "impAppendStmt"
;
; Lcl frame size = 0
-G_M40448_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
+G_M40448_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
- push edi
- push esi
- mov esi, edx
- ; gcrRegs +[esi]
- ;; size=7 bbWeight=1 PerfScore 3.50
-G_M40448_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref, isz
+ ;; size=3 bbWeight=1 PerfScore 1.25
+G_M40448_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref, isz
+ ; gcrRegs +[edx]
; byrRegs +[ecx]
- mov eax, esi
+ mov eax, edx
; gcrRegs +[eax]
test eax, eax
je SHORT G_M40448_IG04
;; size=6 bbWeight=1 PerfScore 1.50
-G_M40448_IG03: ; bbWeight=0.25, gcrefRegs=00000041 {eax esi}, byrefRegs=00000002 {ecx}, byref, isz
- mov edx, dword ptr [eax]
- cmp edx, 0xD1FFAB1E
+G_M40448_IG03: ; bbWeight=0.25, gcrefRegs=00000005 {eax edx}, byrefRegs=00000002 {ecx}, byref, isz
+ cmp dword ptr [eax], 0xD1FFAB1E
je SHORT G_M40448_IG06
- ;; size=10 bbWeight=0.25 PerfScore 0.81
+ ;; size=8 bbWeight=0.25 PerfScore 1.00
G_M40448_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax esi]
+ ; gcrRegs -[eax edx]
; byrRegs -[ecx]
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M40448_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop esi
- pop edi
pop ebp
ret
- ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M40448_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, gcvars, byref, isz
- ; gcrRegs +[esi]
- ; byrRegs +[ecx]
- mov edi, dword ptr [ecx]
- cmp edx, 0xD1FFAB1E
- je SHORT G_M40448_IG08
- ;; size=10 bbWeight=0.50 PerfScore 1.62
-G_M40448_IG07: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- ; byrRegs -[ecx]
- mov edx, esi
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M40448_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, gcvars, byref
; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; System.Int32
- call [CORINFO_HELP_UNBOX]
- ; gcrRegs -[edx]
- ;; size=13 bbWeight=0.25 PerfScore 0.88
-G_M40448_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- xor eax, eax
- cmp edi, dword ptr [esi+0x04]
+ ; byrRegs +[ecx]
+ mov eax, dword ptr [ecx]
+ cmp eax, dword ptr [edx+0x04]
sete al
- ;; size=8 bbWeight=0.50 PerfScore 2.12
-G_M40448_IG09: ; bbWeight=0.50, epilog, nogc, extend
- pop esi
- pop edi
+ movzx eax, al
+ ;; size=11 bbWeight=0.50 PerfScore 3.12
+G_M40448_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret
- ;; size=4 bbWeight=0.50 PerfScore 1.25
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 64, prolog size 5, PerfScore 13.06, instruction count 29, allocated bytes for code 64 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 34, prolog size 3, PerfScore 8.50, instruction count 16, allocated bytes for code 34 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================
-31 (-44.93%) : 6637.dasm - System.Byte:Equals(System.Object):ubyte:this (FullOpts)
@@ -8,72 +8,52 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 2.50) byref -> ecx this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> esi class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> edx class-hnd single-def <System.Object>
; V02 tmp0 [V02,T01] ( 3, 4.50) ref -> eax class-hnd "spilling QMark2" <System.Byte>
-; V03 tmp1 [V03,T03] ( 2, 2 ) int -> ebx "impAppendStmt"
-; V04 cse0 [V04,T04] ( 3, 1 ) int -> edx "CSE - moderate"
+; V03 tmp1 [V03,T03] ( 2, 2 ) int -> eax "impAppendStmt"
;
; Lcl frame size = 0
-G_M19224_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
+G_M19224_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
- push esi
- push ebx
- mov esi, edx
- ; gcrRegs +[esi]
- ;; size=7 bbWeight=1 PerfScore 3.50
-G_M19224_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref, isz
+ ;; size=3 bbWeight=1 PerfScore 1.25
+G_M19224_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref, isz
+ ; gcrRegs +[edx]
; byrRegs +[ecx]
- mov eax, esi
+ mov eax, edx
; gcrRegs +[eax]
test eax, eax
je SHORT G_M19224_IG04
;; size=6 bbWeight=1 PerfScore 1.50
-G_M19224_IG03: ; bbWeight=0.25, gcrefRegs=00000041 {eax esi}, byrefRegs=00000002 {ecx}, byref, isz
- mov edx, dword ptr [eax]
- cmp edx, 0xD1FFAB1E
+G_M19224_IG03: ; bbWeight=0.25, gcrefRegs=00000005 {eax edx}, byrefRegs=00000002 {ecx}, byref, isz
+ cmp dword ptr [eax], 0xD1FFAB1E
je SHORT G_M19224_IG06
- ;; size=10 bbWeight=0.25 PerfScore 0.81
+ ;; size=8 bbWeight=0.25 PerfScore 1.00
G_M19224_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax esi]
+ ; gcrRegs -[eax edx]
; byrRegs -[ecx]
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M19224_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop ebx
- pop esi
pop ebp
ret
- ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M19224_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, gcvars, byref, isz
- ; gcrRegs +[esi]
- ; byrRegs +[ecx]
- movzx ebx, byte ptr [ecx]
- cmp edx, 0xD1FFAB1E
- je SHORT G_M19224_IG08
- ;; size=11 bbWeight=0.50 PerfScore 1.62
-G_M19224_IG07: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- ; byrRegs -[ecx]
- mov edx, esi
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M19224_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, gcvars, byref
; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; System.Byte
- call [CORINFO_HELP_UNBOX]
+ ; byrRegs +[ecx]
+ movzx eax, byte ptr [ecx]
+ movzx edx, byte ptr [edx+0x04]
; gcrRegs -[edx]
- ;; size=13 bbWeight=0.25 PerfScore 0.88
-G_M19224_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- movzx eax, byte ptr [esi+0x04]
- cmp ebx, eax
+ cmp eax, edx
sete al
movzx eax, al
- ;; size=12 bbWeight=0.50 PerfScore 1.75
-G_M19224_IG09: ; bbWeight=0.50, epilog, nogc, extend
- pop ebx
- pop esi
+ ;; size=15 bbWeight=0.50 PerfScore 2.75
+G_M19224_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret
- ;; size=4 bbWeight=0.50 PerfScore 1.25
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 69, prolog size 5, PerfScore 12.69, instruction count 30, allocated bytes for code 69 (MethodHash=3af2b4e7) for method System.Byte:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 38, prolog size 3, PerfScore 8.12, instruction count 17, allocated bytes for code 38 (MethodHash=3af2b4e7) for method System.Byte:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================
-31 (-44.93%) : 6947.dasm - System.Boolean:Equals(System.Object):ubyte:this (FullOpts)
@@ -8,72 +8,52 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 2.50) byref -> ecx this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> esi class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> edx class-hnd single-def <System.Object>
; V02 tmp0 [V02,T01] ( 3, 4.50) ref -> eax class-hnd "spilling QMark2" <System.Boolean>
-; V03 tmp1 [V03,T03] ( 2, 2 ) int -> ebx "impAppendStmt"
-; V04 cse0 [V04,T04] ( 3, 1 ) int -> edx "CSE - moderate"
+; V03 tmp1 [V03,T03] ( 2, 2 ) int -> eax "impAppendStmt"
;
; Lcl frame size = 0
-G_M31030_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
+G_M31030_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
- push esi
- push ebx
- mov esi, edx
- ; gcrRegs +[esi]
- ;; size=7 bbWeight=1 PerfScore 3.50
-G_M31030_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref, isz
+ ;; size=3 bbWeight=1 PerfScore 1.25
+G_M31030_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref, isz
+ ; gcrRegs +[edx]
; byrRegs +[ecx]
- mov eax, esi
+ mov eax, edx
; gcrRegs +[eax]
test eax, eax
je SHORT G_M31030_IG04
;; size=6 bbWeight=1 PerfScore 1.50
-G_M31030_IG03: ; bbWeight=0.25, gcrefRegs=00000041 {eax esi}, byrefRegs=00000002 {ecx}, byref, isz
- mov edx, dword ptr [eax]
- cmp edx, 0xD1FFAB1E
+G_M31030_IG03: ; bbWeight=0.25, gcrefRegs=00000005 {eax edx}, byrefRegs=00000002 {ecx}, byref, isz
+ cmp dword ptr [eax], 0xD1FFAB1E
je SHORT G_M31030_IG06
- ;; size=10 bbWeight=0.25 PerfScore 0.81
+ ;; size=8 bbWeight=0.25 PerfScore 1.00
G_M31030_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax esi]
+ ; gcrRegs -[eax edx]
; byrRegs -[ecx]
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M31030_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop ebx
- pop esi
pop ebp
ret
- ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M31030_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, gcvars, byref, isz
- ; gcrRegs +[esi]
- ; byrRegs +[ecx]
- movzx ebx, byte ptr [ecx]
- cmp edx, 0xD1FFAB1E
- je SHORT G_M31030_IG08
- ;; size=11 bbWeight=0.50 PerfScore 1.62
-G_M31030_IG07: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- ; byrRegs -[ecx]
- mov edx, esi
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M31030_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, gcvars, byref
; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; System.Boolean
- call [CORINFO_HELP_UNBOX]
+ ; byrRegs +[ecx]
+ movzx eax, byte ptr [ecx]
+ movzx edx, byte ptr [edx+0x04]
; gcrRegs -[edx]
- ;; size=13 bbWeight=0.25 PerfScore 0.88
-G_M31030_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- movzx eax, byte ptr [esi+0x04]
- cmp ebx, eax
+ cmp eax, edx
sete al
movzx eax, al
- ;; size=12 bbWeight=0.50 PerfScore 1.75
-G_M31030_IG09: ; bbWeight=0.50, epilog, nogc, extend
- pop ebx
- pop esi
+ ;; size=15 bbWeight=0.50 PerfScore 2.75
+G_M31030_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret
- ;; size=4 bbWeight=0.50 PerfScore 1.25
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 69, prolog size 5, PerfScore 12.69, instruction count 30, allocated bytes for code 69 (MethodHash=c96e86c9) for method System.Boolean:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 38, prolog size 3, PerfScore 8.12, instruction count 17, allocated bytes for code 38 (MethodHash=c96e86c9) for method System.Boolean:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================
+22 (+6.04%) : 21646.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
@@ -12,7 +12,7 @@
; V01 arg1 [V01,T02] ( 6, 4 ) ref -> esi class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundNode>
; V02 arg2 [V02,T04] ( 7, 3.50) ref -> ebx class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbol>
; V03 arg3 [V03,T05] ( 6, 3 ) ref -> [ebp+0x08] class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbol>
-; V04 loc0 [V04,T18] ( 2, 1 ) ubyte -> eax
+; V04 loc0 [V04,T18] ( 3, 1.50) ubyte -> ecx
; V05 loc1 [V05,T19] ( 3, 1.25) ref -> edx class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundLambda>
; V06 loc2 [V06,T20] ( 3, 1.25) ref -> edx class-hnd exact <Microsoft.CodeAnalysis.CSharp.Symbols.LambdaSymbol>
; V07 loc3 [V07,T15] ( 3, 1.50) ref -> eax class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
@@ -98,14 +98,15 @@ G_M21353_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000
;; size=10 bbWeight=0.50 PerfScore 2.25
G_M21353_IG04: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[eax ebx esi edi]
+ xor ecx, ecx
mov edx, esi
; gcrRegs +[edx]
test edx, edx
je SHORT G_M21353_IG09
- ;; size=6 bbWeight=0.50 PerfScore 0.75
+ ;; size=8 bbWeight=0.50 PerfScore 0.88
G_M21353_IG05: ; bbWeight=0.25, gcrefRegs=000000CD {eax edx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [edx], 0xD1FFAB1E
- jne SHORT G_M21353_IG09
+ jne SHORT G_M21353_IG12
;; size=8 bbWeight=0.25 PerfScore 1.00
G_M21353_IG06: ; bbWeight=0.50, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edx]
@@ -116,7 +117,7 @@ G_M21353_IG06: ; bbWeight=0.50, gcrefRegs=000000C9 {eax ebx esi edi}, byr
;; size=6 bbWeight=0.50 PerfScore 0.75
G_M21353_IG07: ; bbWeight=0.25, gcrefRegs=000000CD {eax edx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [edx], 0xD1FFAB1E
- jne SHORT G_M21353_IG09
+ jne SHORT G_M21353_IG11
;; size=8 bbWeight=0.25 PerfScore 1.00
G_M21353_IG08: ; bbWeight=0.50, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edx]
@@ -151,26 +152,38 @@ G_M21353_IG08: ; bbWeight=0.50, gcrefRegs=000000C9 {eax ebx esi edi}, byr
mov eax, dword ptr [eax+0x44]
call [eax+0x10]<unknown method>
; gcrRegs -[ecx edx]
- test eax, eax
+ mov ecx, eax
mov eax, gword ptr [ebp+0x08]
; gcrRegs +[eax]
- jne SHORT G_M21353_IG12
- ;; size=67 bbWeight=0.50 PerfScore 13.00
+ ;; size=65 bbWeight=0.50 PerfScore 12.50
G_M21353_IG09: ; bbWeight=0.50, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ test ecx, ecx
+ mov gword ptr [ebp+0x08], eax
+ jne SHORT G_M21353_IG14
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
+G_M21353_IG10: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax]
test ebx, ebx
- jne SHORT G_M21353_IG11
+ jne SHORT G_M21353_IG13
+ mov eax, gword ptr [ebp+0x08]
+ ; gcrRegs +[eax]
test eax, eax
mov gword ptr [ebp+0x08], eax
- jne SHORT G_M21353_IG15
- jmp SHORT G_M21353_IG12
- ;; size=13 bbWeight=0.50 PerfScore 2.75
-G_M21353_IG10: ; bbWeight=0.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ jne G_M21353_IG17
+ jmp SHORT G_M21353_IG14
+ ;; size=20 bbWeight=0.50 PerfScore 3.25
+G_M21353_IG11: ; bbWeight=0.12, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov gword ptr [ebp+0x08], eax
+ jmp SHORT G_M21353_IG10
+ ;; size=5 bbWeight=0.12 PerfScore 0.38
+G_M21353_IG12: ; bbWeight=0.12, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov gword ptr [ebp+0x08], eax
+ jmp SHORT G_M21353_IG10
+ ;; size=5 bbWeight=0.12 PerfScore 0.38
+G_M21353_IG13: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
mov eax, gword ptr [ebp+0x08]
; gcrRegs +[eax]
- jmp SHORT G_M21353_IG09
- ;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M21353_IG11: ; bbWeight=0.50, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
push 0
mov ecx, ebx
; gcrRegs +[ecx]
@@ -183,9 +196,9 @@ G_M21353_IG11: ; bbWeight=0.50, gcrefRegs=000000C9 {eax ebx esi edi}, byr
call [eax+0x10]<unknown method>
; gcrRegs -[ecx edx]
test eax, eax
- je SHORT G_M21353_IG15
- ;; size=21 bbWeight=0.50 PerfScore 5.38
-G_M21353_IG12: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ je SHORT G_M21353_IG17
+ ;; size=24 bbWeight=0.50 PerfScore 5.88
+G_M21353_IG14: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [edi+0xC8]
; gcrRegs +[ecx]
mov edi, gword ptr [ecx+0x04]
@@ -214,7 +227,7 @@ G_M21353_IG12: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
mov eax, dword ptr [ebp-0x18]
inc dword ptr [edi+0x18]
cmp gword ptr [edi+0x04], ecx
- je SHORT G_M21353_IG13
+ je SHORT G_M21353_IG15
lea edx, bword ptr [edi+0x04]
; byrRegs +[edx]
call CORINFO_HELP_ASSIGN_REF_ECX
@@ -224,11 +237,11 @@ G_M21353_IG12: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
; gcrRegs +[ecx]
mov gword ptr [edi+0x0C], ecx
;; size=76 bbWeight=0.50 PerfScore 16.12
-G_M21353_IG13: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+G_M21353_IG15: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx]
add dword ptr [edi+0x14], eax
;; size=3 bbWeight=0.50 PerfScore 1.50
-G_M21353_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M21353_IG16: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -236,7 +249,7 @@ G_M21353_IG14: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret 8
;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M21353_IG15: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M21353_IG17: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[ebx esi]
mov ecx, gword ptr [edi+0xC8]
; gcrRegs +[ecx]
@@ -268,7 +281,7 @@ G_M21353_IG15: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C8 {e
mov ecx, dword ptr [ebp-0x28]
inc dword ptr [edi+0x18]
cmp gword ptr [edi+0x04], eax
- je SHORT G_M21353_IG16
+ je SHORT G_M21353_IG18
lea edx, bword ptr [edi+0x04]
; byrRegs +[edx]
call CORINFO_HELP_ASSIGN_REF_EAX
@@ -278,11 +291,11 @@ G_M21353_IG15: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C8 {e
; gcrRegs +[eax]
mov gword ptr [edi+0x0C], eax
;; size=81 bbWeight=0.50 PerfScore 17.50
-G_M21353_IG16: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+G_M21353_IG18: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax]
add dword ptr [edi+0x14], ecx
;; size=3 bbWeight=0.50 PerfScore 1.50
-G_M21353_IG17: ; bbWeight=0.50, epilog, nogc, extend
+G_M21353_IG19: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -291,6 +304,6 @@ G_M21353_IG17: ; bbWeight=0.50, epilog, nogc, extend
ret 8
;; size=10 bbWeight=0.50 PerfScore 2.25
-; Total bytes of code 364, prolog size 18, PerfScore 82.08, instruction count 134, allocated bytes for code 364 (MethodHash=7b46ac96) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
+; Total bytes of code 386, prolog size 18, PerfScore 83.83, instruction count 141, allocated bytes for code 386 (MethodHash=7b46ac96) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
; ============================================================
+42 (+6.58%) : 26989.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitPointerIndirectionOperator(Microsoft.CodeAnalysis.CSharp.BoundPointerIndirectionOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
@@ -15,29 +15,29 @@
;* V04 tmp0 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.BoundNode>
; V05 tmp1 [V05,T09] ( 2, 4 ) ref -> edx class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
; V06 tmp2 [V06,T01] ( 9, 12 ) ref -> ebx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
-; V07 tmp3 [V07,T21] ( 2, 2 ) ubyte -> [ebp-0x1C] spill-single-def "Inline stloc first use temp"
+; V07 tmp3 [V07,T20] ( 2, 2 ) ubyte -> [ebp-0x1C] spill-single-def "Inline stloc first use temp"
;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.BoundNode>
-; V09 tmp5 [V09,T06] ( 4, 6 ) ref -> [ebp-0x50] class-hnd exact spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.NullableWalker+SnapshotManager+Builder>
+; V09 tmp5 [V09,T06] ( 4, 6 ) ref -> [ebp-0x54] class-hnd exact spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.NullableWalker+SnapshotManager+Builder>
;* V10 tmp6 [V10 ] ( 0, 0 ) ref -> zero-ref single-def
-; V11 tmp7 [V11,T20] ( 2, 2 ) ref -> [ebp-0x54] class-hnd spill-single-def "impAppendStmt" <System.Collections.Generic.SortedDictionary`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]>
+; V11 tmp7 [V11,T19] ( 2, 2 ) ref -> [ebp-0x58] class-hnd spill-single-def "impAppendStmt" <System.Collections.Generic.SortedDictionary`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]>
;* V12 tmp8 [V12 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState>
-; V13 tmp9 [V13,T22] ( 2, 2 ) int -> [ebp-0x20] spill-single-def "impAppendStmt"
+; V13 tmp9 [V13,T21] ( 2, 2 ) int -> [ebp-0x20] spill-single-def "impAppendStmt"
;* V14 tmp10 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot>
;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <<unknown class>>
;* V16 tmp12 [V16 ] ( 0, 0 ) int -> zero-ref single-def
;* V17 tmp13 [V17 ] ( 0, 0 ) ref -> zero-ref single-def
;* V18 tmp14 [V18 ] ( 0, 0 ) int -> zero-ref single-def
-; V19 tmp15 [V19,T26] ( 3, 1.50) ref -> [ebp-0x58]
+; V19 tmp15 [V19,T25] ( 3, 1.50) ref -> [ebp-0x5C]
; V20 tmp16 [V20,T03] ( 7, 7 ) ref -> eax class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalStateSnapshot>
;* V21 tmp17 [V21 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <Microsoft.CodeAnalysis.BitVector>
;* V22 tmp18 [V22 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <Microsoft.CodeAnalysis.BitVector>
-; V23 tmp19 [V23,T27] ( 3, 1.50) ref -> registers class-hnd "Inline stloc first use temp" <ulong[]>
+; V23 tmp19 [V23,T26] ( 3, 1.50) ref -> registers class-hnd "Inline stloc first use temp" <ulong[]>
;* V24 tmp20 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.BitVector>
;* V25 tmp21 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <ulong[]>
;* V26 tmp22 [V26 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V27 tmp23 [V27 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V28 tmp24 [V28 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V29 tmp25 [V29,T23] ( 2, 2 ) int -> ecx "Inlining Arg"
+; V29 tmp25 [V29,T22] ( 2, 2 ) int -> ecx "Inlining Arg"
;* V30 tmp26 [V30 ] ( 0, 0 ) ref -> zero-ref single-def
;* V31 tmp27 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.BoundNode>
;* V32 tmp28 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
@@ -46,10 +46,10 @@
;* V35 tmp31 [V35 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Nullable`1[ubyte]>
; V36 tmp32 [V36 ] ( 3, 6 ) struct ( 8) [ebp-0x28] do-not-enreg[HS] must-init hidden-struct-arg "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState>
;* V37 tmp33 [V37 ] ( 0, 0 ) struct (12) zero-ref "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
-; V38 tmp34 [V38,T08] ( 3, 5 ) ref -> [ebp-0x5C] class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+; V38 tmp34 [V38,T08] ( 3, 4 ) ref -> [ebp-0x60] class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
;* V39 tmp35 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "dup spill" <<unknown class>>
;* V40 tmp36 [V40 ] ( 0, 0 ) ref -> zero-ref single-def
-; V41 tmp37 [V41,T19] ( 3, 2 ) ref -> [ebp-0x60] class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+; V41 tmp37 [V41,T17] ( 3, 2.50) ref -> [ebp-0x64] class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
;* V42 tmp38 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "dup spill" <<unknown class>>
;* V43 tmp39 [V43 ] ( 0, 0 ) ref -> zero-ref single-def
;* V44 tmp40 [V44 ] ( 0, 0 ) struct (20) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult>
@@ -66,11 +66,11 @@
;* V55 tmp51 [V55 ] ( 0, 0 ) long -> zero-ref single-def "field V22._bits0 (fldOffset=0x0)" P-INDEP
;* V56 tmp52 [V56 ] ( 0, 0 ) ref -> zero-ref single-def "field V22._bits (fldOffset=0x8)" P-INDEP
;* V57 tmp53 [V57 ] ( 0, 0 ) int -> zero-ref single-def "field V22._capacity (fldOffset=0xc)" P-INDEP
-; V58 tmp54 [V58,T29] ( 3, 1.50) long -> [ebp-0x30] do-not-enreg[F] single-def "field V24._bits0 (fldOffset=0x0)" P-INDEP
-; V59 tmp55 [V59,T31] ( 2, 1 ) ref -> [ebp-0x64] spill-single-def "field V24._bits (fldOffset=0x8)" P-INDEP
+; V58 tmp54 [V58,T28] ( 3, 1.50) long -> [ebp-0x30] do-not-enreg[F] single-def "field V24._bits0 (fldOffset=0x0)" P-INDEP
+; V59 tmp55 [V59,T31] ( 2, 1 ) ref -> [ebp-0x68] spill-single-def "field V24._bits (fldOffset=0x8)" P-INDEP
; V60 tmp56 [V60,T33] ( 2, 1 ) int -> [ebp-0x34] spill-single-def "field V24._capacity (fldOffset=0xc)" P-INDEP
-; V61 tmp57 [V61,T10] ( 4, 3.50) ref -> [ebp-0x68] spill-single-def "field V34.DefaultType (fldOffset=0x0)" P-INDEP
-; V62 tmp58 [V62,T07] ( 6, 5.50) ref -> [ebp-0x6C] spill-single-def "field V34._extensions (fldOffset=0x4)" P-INDEP
+; V61 tmp57 [V61,T10] ( 4, 3 ) ref -> [ebp-0x6C] spill-single-def "field V34.DefaultType (fldOffset=0x0)" P-INDEP
+; V62 tmp58 [V62,T07] ( 6, 4.50) ref -> [ebp-0x70] spill-single-def "field V34._extensions (fldOffset=0x4)" P-INDEP
; V63 tmp59 [V63,T14] ( 3, 3 ) ubyte -> [ebp-0x38] spill-single-def "field V34.NullableAnnotation (fldOffset=0x8)" P-INDEP
;* V64 tmp60 [V64 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V35.hasValue (fldOffset=0x0)" P-INDEP
;* V65 tmp61 [V65 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V35.value (fldOffset=0x1)" P-INDEP
@@ -81,30 +81,31 @@
;* V70 tmp66 [V70 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V37.NullableAnnotation (fldOffset=0x8)" P-INDEP
;* V71 tmp67 [V71,T39] ( 0, 0 ) ubyte -> zero-ref single-def "field V45.hasValue (fldOffset=0x0)" P-INDEP
;* V72 tmp68 [V72,T40] ( 0, 0 ) ubyte -> zero-ref single-def "field V45.value (fldOffset=0x1)" P-INDEP
-; V73 tmp69 [V73,T28] ( 3, 1.50) ref -> [ebp-0x70] spill-single-def "V12.[000..004)"
+; V73 tmp69 [V73,T27] ( 3, 1.50) ref -> [ebp-0x74] spill-single-def "V12.[000..004)"
; V74 tmp70 [V74,T34] ( 2, 1 ) int -> [ebp-0x3C] spill-single-def "V12.[004..008)"
;* V75 tmp71 [V75 ] ( 0, 0 ) long -> zero-ref single-def "V12.[008..016)"
-; V76 tmp72 [V76,T18] ( 4, 2 ) ref -> [ebp-0x74] spill-single-def "V12.[016..020)"
+; V76 tmp72 [V76,T18] ( 4, 2 ) ref -> [ebp-0x78] spill-single-def "V12.[016..020)"
; V77 tmp73 [V77,T35] ( 2, 1 ) int -> [ebp-0x40] spill-single-def "V12.[020..024)"
;* V78 tmp74 [V78 ] ( 0, 0 ) ref -> zero-ref single-def "V44.[000..004)"
-; V79 tmp75 [V79,T24] ( 2, 2 ) ubyte -> ecx single-def "V44.[004..005)"
+; V79 tmp75 [V79,T23] ( 2, 2 ) ubyte -> ecx single-def "V44.[004..005)"
;* V80 tmp76 [V80 ] ( 0, 0 ) ref -> zero-ref single-def "V44.[008..012)"
;* V81 tmp77 [V81 ] ( 0, 0 ) ref -> zero-ref single-def "V44.[012..016)"
-; V82 tmp78 [V82,T25] ( 2, 2 ) ubyte -> [ebp-0x44] spill-single-def "V44.[016..017)"
+; V82 tmp78 [V82,T24] ( 2, 2 ) ubyte -> [ebp-0x44] spill-single-def "V44.[016..017)"
; V83 tmp79 [V83,T05] ( 6, 6 ) byref -> ecx single-def "Spilling address for field-by-field copy"
; V84 tmp80 [V84,T02] ( 6, 12 ) byref -> ebx single-def "Spilling address for field-by-field copy"
-; V85 cse0 [V85,T17] ( 3, 2.50) int -> ebx "CSE - conservative"
-; V86 cse1 [V86,T11] ( 3, 3 ) byref -> [ebp-0x78] spill-single-def "CSE - moderate"
+; V85 cse0 [V85,T29] ( 3, 1.50) int -> [ebp-0x48] spill-single-def "CSE - conservative"
+; V86 cse1 [V86,T11] ( 3, 3 ) byref -> [ebp-0x7C] spill-single-def "CSE - moderate"
;* V87 rat0 [V87 ] ( 0, 0 ) int -> zero-ref "field V27.lo (fldOffset=0x0)" P-INDEP
;* V88 rat1 [V88 ] ( 0, 0 ) int -> zero-ref "field V27.hi (fldOffset=0x4)" P-INDEP
-; V89 rat2 [V89,T36] ( 2, 1 ) int -> [ebp-0x48] spill-single-def "field V75.lo (fldOffset=0x0)" P-INDEP
-; V90 rat3 [V90,T37] ( 2, 1 ) int -> [ebp-0x4C] spill-single-def "field V75.hi (fldOffset=0x4)" P-INDEP
-; V91 rat4 [V91,T12] ( 3, 3 ) byref -> [ebp-0x7C] spill-single-def "ReplaceWithLclVar is creating a new local variable"
+; V89 rat2 [V89,T36] ( 2, 1 ) int -> [ebp-0x4C] spill-single-def "field V75.lo (fldOffset=0x0)" P-INDEP
+; V90 rat3 [V90,T37] ( 2, 1 ) int -> [ebp-0x50] spill-single-def "field V75.hi (fldOffset=0x4)" P-INDEP
+; V91 rat4 [V91,T12] ( 3, 3 ) byref -> [ebp-0x80] spill-single-def "ReplaceWithLclVar is creating a new local variable"
; V92 rat5 [V92,T13] ( 3, 3 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
-; TEMP_02 int -> [ebp-0x80]
-; TEMP_01 int -> [ebp-0x84]
+; TEMP_03 ref -> [ebp-0x84]
+; TEMP_02 int -> [ebp-0x88]
+; TEMP_01 int -> [ebp-0x8C]
;
-; Lcl frame size = 120
+; Lcl frame size = 128
G_M5919_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -112,18 +113,20 @@ G_M5919_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
push edi
push esi
push ebx
- sub esp, 120
+ sub esp, 128
vxorps xmm4, xmm4, xmm4
- vmovdqu xmmword ptr [ebp-0x28], xmm4
+ vmovdqu ymmword ptr [ebp-0x84], ymm4
+ vmovdqu ymmword ptr [ebp-0x64], ymm4
+ vmovdqu ymmword ptr [ebp-0x44], ymm4
+ vmovdqu xmmword ptr [ebp-0x24], xmm4
xor eax, eax
- mov dword ptr [ebp-0x18], eax
mov dword ptr [ebp-0x14], eax
mov dword ptr [ebp-0x10], eax
mov esi, ecx
; gcrRegs +[esi]
mov edi, edx
; gcrRegs +[edi]
- ;; size=33 bbWeight=1 PerfScore 10.58
+ ;; size=51 bbWeight=1 PerfScore 15.58
G_M5919_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ebx, gword ptr [edi+0x10]
; gcrRegs +[ebx]
@@ -132,7 +135,7 @@ G_M5919_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000
mov byte ptr [esi+0xEF], 1
mov edx, gword ptr [esi+0xC8]
; gcrRegs +[edx]
- mov gword ptr [ebp-0x50], edx
+ mov gword ptr [ebp-0x54], edx
; GC ptr vars +{V09}
test edx, edx
je G_M5919_IG09
@@ -142,30 +145,30 @@ G_M5919_IG03: ; bbWeight=0.50, gcVars=0000000000000040 {V09}, gcrefRegs=0
; byrRegs +[ecx]
mov eax, gword ptr [ecx]
; gcrRegs +[eax]
- mov gword ptr [ebp-0x70], eax
+ mov gword ptr [ebp-0x74], eax
; GC ptr vars +{V73}
mov eax, dword ptr [ecx+0x04]
; gcrRegs -[eax]
mov dword ptr [ebp-0x3C], eax
lea eax, bword ptr [ecx+0x08]
; byrRegs +[eax]
- mov bword ptr [ebp-0x7C], eax
+ mov bword ptr [ebp-0x80], eax
; GC ptr vars +{V91}
mov eax, dword ptr [eax]
; byrRegs -[eax]
- mov dword ptr [ebp-0x80], eax
- mov eax, bword ptr [ebp-0x7C]
+ mov dword ptr [ebp-0x88], eax
+ mov eax, bword ptr [ebp-0x80]
; byrRegs +[eax]
mov eax, dword ptr [eax+0x04]
; byrRegs -[eax]
- mov dword ptr [ebp-0x84], eax
- mov eax, dword ptr [ebp-0x80]
- mov dword ptr [ebp-0x48], eax
- mov eax, dword ptr [ebp-0x84]
+ mov dword ptr [ebp-0x8C], eax
+ mov eax, dword ptr [ebp-0x88]
mov dword ptr [ebp-0x4C], eax
+ mov eax, dword ptr [ebp-0x8C]
+ mov dword ptr [ebp-0x50], eax
mov eax, gword ptr [ecx+0x10]
; gcrRegs +[eax]
- mov gword ptr [ebp-0x74], eax
+ mov gword ptr [ebp-0x78], eax
; GC ptr vars +{V76}
mov ecx, dword ptr [ecx+0x14]
; byrRegs -[ecx]
@@ -176,7 +179,7 @@ G_M5919_IG03: ; bbWeight=0.50, gcVars=0000000000000040 {V09}, gcrefRegs=0
jne G_M5919_IG09
mov ecx, gword ptr [edx+0x0C]
; gcrRegs +[ecx]
- mov gword ptr [ebp-0x54], ecx
+ mov gword ptr [ebp-0x58], ecx
; GC ptr vars +{V11}
mov ecx, gword ptr [ebx+0x04]
cmp dword ptr [ecx], ecx
@@ -184,14 +187,14 @@ G_M5919_IG03: ; bbWeight=0.50, gcVars=0000000000000040 {V09}, gcrefRegs=0
call [Microsoft.CodeAnalysis.SyntaxNode:get_SpanStart():int:this]
; gcrRegs -[eax ecx edx]
mov dword ptr [ebp-0x20], eax
- mov ecx, gword ptr [ebp-0x70]
+ mov ecx, gword ptr [ebp-0x74]
; gcrRegs +[ecx]
test ecx, ecx
jne SHORT G_M5919_IG04
xor edx, edx
; gcrRegs +[edx]
jmp SHORT G_M5919_IG05
- ;; size=113 bbWeight=0.50 PerfScore 23.38
+ ;; size=119 bbWeight=0.50 PerfScore 23.38
G_M5919_IG04: ; bbWeight=0.50, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[edx]
add ecx, 4
@@ -201,33 +204,33 @@ G_M5919_IG04: ; bbWeight=0.50, gcrefRegs=000000CA {ecx ebx esi edi}, byre
call [Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState:CreateSnapshot():Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalStateSnapshot:this]
; gcrRegs +[eax]
; byrRegs -[ecx]
- mov gword ptr [ebp-0x58], eax
+ mov gword ptr [ebp-0x5C], eax
; GC ptr vars +{V19}
- mov edx, gword ptr [ebp-0x58]
+ mov edx, gword ptr [ebp-0x5C]
; gcrRegs +[edx]
;; size=15 bbWeight=0.50 PerfScore 2.62
G_M5919_IG05: ; bbWeight=0.50, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
; GC ptr vars -{V19}
- mov ecx, gword ptr [ebp-0x74]
+ mov ecx, gword ptr [ebp-0x78]
; gcrRegs +[ecx]
test ecx, ecx
je SHORT G_M5919_IG06
cmp dword ptr [ecx+0x04], 0
jne SHORT G_M5919_IG07
;; size=13 bbWeight=0.50 PerfScore 3.12
-G_M5919_IG06: ; bbWeight=0.50, gcVars=0000000000100040 {V09 V11}, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M5919_IG06: ; bbWeight=0.50, gcVars=0000000000080040 {V09 V11}, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[ecx]
; GC ptr vars -{V76}
mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
- mov gword ptr [ebp-0x58], edx
+ mov gword ptr [ebp-0x5C], edx
; GC ptr vars +{V19}
jmp SHORT G_M5919_IG08
;; size=10 bbWeight=0.50 PerfScore 1.62
-G_M5919_IG07: ; bbWeight=0.50, gcVars=0000000000140040 {V09 V11 V76}, gcrefRegs=000000CE {ecx edx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M5919_IG07: ; bbWeight=0.50, gcVars=00000000000C0040 {V09 V11 V76}, gcrefRegs=000000CE {ecx edx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
; GC ptr vars -{V19} +{V76}
- mov gword ptr [ebp-0x58], edx
+ mov gword ptr [ebp-0x5C], edx
; GC ptr vars +{V19}
; GC ptr vars -{V76}
...
+20 (+7.49%) : 27007.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitPointerElementAccess(Microsoft.CodeAnalysis.CSharp.BoundPointerElementAccess):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
@@ -18,10 +18,10 @@
;* V07 tmp3 [V07 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Nullable`1[ubyte]>
; V08 tmp4 [V08 ] ( 3, 6 ) struct ( 8) [ebp-0x20] do-not-enreg[HS] must-init hidden-struct-arg "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState>
;* V09 tmp5 [V09 ] ( 0, 0 ) struct (12) zero-ref "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
-; V10 tmp6 [V10,T04] ( 3, 5 ) ref -> [ebp-0x34] class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+; V10 tmp6 [V10,T04] ( 3, 4 ) ref -> [ebp-0x34] class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
;* V11 tmp7 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "dup spill" <<unknown class>>
;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref single-def
-; V13 tmp9 [V13,T13] ( 3, 2 ) ref -> eax class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+; V13 tmp9 [V13,T12] ( 3, 2.50) ref -> ecx class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "dup spill" <<unknown class>>
;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref single-def
;* V16 tmp12 [V16 ] ( 0, 0 ) struct (20) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult>
@@ -30,8 +30,8 @@
; V19 tmp15 [V19 ] ( 2, 2 ) ref -> [ebp-0x14] do-not-enreg[X] addr-exposed "field V02._extensions (fldOffset=0x4)" P-DEP
; V20 tmp16 [V20 ] ( 2, 2 ) ubyte -> [ebp-0x10] do-not-enreg[X] addr-exposed "field V02.NullableAnnotation (fldOffset=0x8)" P-DEP
;* V21 tmp17 [V21,T16] ( 0, 0 ) ref -> zero-ref single-def "field V03.array (fldOffset=0x0)" P-INDEP
-; V22 tmp18 [V22,T07] ( 4, 3.50) ref -> [ebp-0x38] spill-single-def "field V06.DefaultType (fldOffset=0x0)" P-INDEP
-; V23 tmp19 [V23,T03] ( 6, 5.50) ref -> [ebp-0x3C] spill-single-def "field V06._extensions (fldOffset=0x4)" P-INDEP
+; V22 tmp18 [V22,T07] ( 4, 3 ) ref -> [ebp-0x38] spill-single-def "field V06.DefaultType (fldOffset=0x0)" P-INDEP
+; V23 tmp19 [V23,T03] ( 6, 4.50) ref -> [ebp-0x3C] spill-single-def "field V06._extensions (fldOffset=0x4)" P-INDEP
; V24 tmp20 [V24,T09] ( 3, 3 ) ubyte -> [ebp-0x24] spill-single-def "field V06.NullableAnnotation (fldOffset=0x8)" P-INDEP
;* V25 tmp21 [V25 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V07.hasValue (fldOffset=0x0)" P-INDEP
;* V26 tmp22 [V26 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V07.value (fldOffset=0x1)" P-INDEP
@@ -43,15 +43,16 @@
;* V32 tmp28 [V32,T17] ( 0, 0 ) ubyte -> zero-ref single-def "field V17.hasValue (fldOffset=0x0)" P-INDEP
;* V33 tmp29 [V33,T18] ( 0, 0 ) ubyte -> zero-ref single-def "field V17.value (fldOffset=0x1)" P-INDEP
;* V34 tmp30 [V34 ] ( 0, 0 ) ref -> zero-ref single-def "V16.[000..004)"
-; V35 tmp31 [V35,T14] ( 2, 2 ) ubyte -> ecx single-def "V16.[004..005)"
+; V35 tmp31 [V35,T13] ( 2, 2 ) ubyte -> ecx single-def "V16.[004..005)"
;* V36 tmp32 [V36 ] ( 0, 0 ) ref -> zero-ref single-def "V16.[008..012)"
;* V37 tmp33 [V37 ] ( 0, 0 ) ref -> zero-ref single-def "V16.[012..016)"
-; V38 tmp34 [V38,T15] ( 2, 2 ) ubyte -> [ebp-0x28] spill-single-def "V16.[016..017)"
+; V38 tmp34 [V38,T14] ( 2, 2 ) ubyte -> [ebp-0x28] spill-single-def "V16.[016..017)"
; V39 tmp35 [V39,T00] ( 6, 12 ) byref -> ebx single-def "Spilling address for field-by-field copy"
-; V40 cse0 [V40,T12] ( 3, 2.50) int -> [ebp-0x2C] spill-single-def "CSE - conservative"
+; V40 cse0 [V40,T15] ( 3, 1.50) int -> [ebp-0x2C] spill-single-def "CSE - conservative"
; V41 cse1 [V41,T08] ( 3, 3 ) byref -> [ebp-0x40] spill-single-def "CSE - moderate"
+; TEMP_01 ref -> [ebp-0x44]
;
-; Lcl frame size = 52
+; Lcl frame size = 56
G_M29279_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -59,16 +60,18 @@ G_M29279_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 52
+ sub esp, 56
vxorps xmm4, xmm4, xmm4
- vmovdqu xmmword ptr [ebp-0x20], xmm4
+ vmovdqu ymmword ptr [ebp-0x44], ymm4
+ vmovdqu xmmword ptr [ebp-0x24], xmm4
xor eax, eax
+ mov dword ptr [ebp-0x14], eax
mov dword ptr [ebp-0x10], eax
mov esi, ecx
; gcrRegs +[esi]
mov edi, edx
; gcrRegs +[edi]
- ;; size=27 bbWeight=1 PerfScore 8.58
+ ;; size=35 bbWeight=1 PerfScore 11.58
G_M29279_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, esi
; gcrRegs +[ecx]
@@ -98,35 +101,44 @@ G_M29279_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
test edx, edx
jne SHORT G_M29279_IG04
;; size=52 bbWeight=1 PerfScore 19.25
-G_M29279_IG03: ; bbWeight=0.50, gcVars=000000A8 {V04 V22 V23}, gcrefRegs=000000C5 {eax edx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- xor ecx, ecx
- ; gcrRegs +[ecx]
+G_M29279_IG03: ; bbWeight=0.50, gcVars=000000A8 {V04 V22 V23}, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[eax]
+ xor eax, eax
+ ; gcrRegs +[eax]
jmp SHORT G_M29279_IG05
;; size=4 bbWeight=0.50 PerfScore 1.12
-G_M29279_IG04: ; bbWeight=1, gcrefRegs=000000C5 {eax edx esi edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ecx]
+G_M29279_IG04: ; bbWeight=0.50, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax]
+ mov eax, gword ptr [ebp-0x38]
+ ; gcrRegs +[eax]
mov ecx, edx
; gcrRegs +[ecx]
+ mov gword ptr [ebp-0x44], ecx
mov edx, eax
mov eax, gword ptr [ebp-0x3C]
- mov eax, dword ptr [eax]
+ mov ecx, dword ptr [eax]
+ ; gcrRegs -[ecx]
+ mov ecx, dword ptr [ecx+0x2C]
+ mov dword ptr [ebp-0x2C], ecx
+ mov ecx, gword ptr [ebp-0x44]
+ ; gcrRegs +[ecx]
+ mov eax, dword ptr [ebp-0x2C]
; gcrRegs -[eax]
- mov eax, dword ptr [eax+0x2C]
- mov dword ptr [ebp-0x2C], eax
call [eax+0x14]<unknown method>
; gcrRegs -[ecx edx] +[eax]
mov gword ptr [ebp-0x34], eax
; GC ptr vars +{V10}
jmp SHORT G_M29279_IG06
- ;; size=23 bbWeight=1 PerfScore 12.50
-G_M29279_IG05: ; bbWeight=0.50, gcrefRegs=000000C7 {eax ecx edx esi edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[ecx edx]
+ ;; size=35 bbWeight=0.50 PerfScore 8.25
+G_M29279_IG05: ; bbWeight=1, gcrefRegs=000000C5 {eax edx esi edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs +[edx]
; GC ptr vars -{V04 V10}
- xor eax, eax
- mov gword ptr [ebp-0x34], ecx
+ xor ecx, ecx
+ ; gcrRegs +[ecx]
+ mov gword ptr [ebp-0x34], eax
; GC ptr vars +{V10}
jmp SHORT G_M29279_IG07
- ;; size=7 bbWeight=0.50 PerfScore 1.62
+ ;; size=7 bbWeight=1 PerfScore 3.25
G_M29279_IG06: ; bbWeight=0.50, gcVars=000000B8 {V04 V10 V22 V23}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax ecx edx]
; GC ptr vars +{V04}
@@ -138,13 +150,14 @@ G_M29279_IG06: ; bbWeight=0.50, gcVars=000000B8 {V04 V10 V22 V23}, gcrefR
mov ebx, dword ptr [ebp-0x2C]
call [ebx+0x14]<unknown method>
; gcrRegs -[ecx edx] +[eax]
- ;; size=14 bbWeight=0.50 PerfScore 3.12
-G_M29279_IG07: ; bbWeight=1, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref
- movzx edx, byte ptr [ebp-0x24]
mov ecx, eax
; gcrRegs +[ecx]
+ ;; size=16 bbWeight=0.50 PerfScore 3.25
+G_M29279_IG07: ; bbWeight=1, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax]
+ movzx edx, byte ptr [ebp-0x24]
call [Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:<ToTypeWithState>g__getFlowState|79_0(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):ubyte]
- ; gcrRegs -[eax ecx]
+ ; gcrRegs -[ecx]
push eax
lea ecx, [ebp-0x20]
mov edx, gword ptr [ebp-0x34]
@@ -210,7 +223,7 @@ G_M29279_IG07: ; bbWeight=1, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=
; byrRegs -[ebx]
mov eax, gword ptr [ebp-0x30]
; gcrRegs +[eax]
- ;; size=132 bbWeight=1 PerfScore 43.00
+ ;; size=130 bbWeight=1 PerfScore 42.75
G_M29279_IG08: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
@@ -220,6 +233,6 @@ G_M29279_IG08: ; bbWeight=1, epilog, nogc, extend
ret
;; size=8 bbWeight=1 PerfScore 3.50
-; Total bytes of code 267, prolog size 23, PerfScore 92.71, instruction count 94, allocated bytes for code 267 (MethodHash=e3348da0) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitPointerElementAccess(Microsoft.CodeAnalysis.CSharp.BoundPointerElementAccess):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
+; Total bytes of code 287, prolog size 31, PerfScore 92.96, instruction count 100, allocated bytes for code 287 (MethodHash=e3348da0) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitPointerElementAccess(Microsoft.CodeAnalysis.CSharp.BoundPointerElementAccess):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
; ============================================================
Details
Improvements/regressions per collection
Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
benchmarks.run.windows.x86.checked.mch |
106 |
57 |
29 |
20 |
-548 |
+311 |
benchmarks.run_pgo.windows.x86.checked.mch |
760 |
264 |
254 |
242 |
-3,838 |
+3,315 |
benchmarks.run_tiered.windows.x86.checked.mch |
87 |
54 |
19 |
14 |
-546 |
+187 |
coreclr_tests.run.windows.x86.checked.mch |
1,017 |
500 |
349 |
168 |
-5,344 |
+3,549 |
libraries.crossgen2.windows.x86.checked.mch |
411 |
169 |
151 |
91 |
-1,608 |
+846 |
libraries.pmi.windows.x86.checked.mch |
773 |
311 |
286 |
176 |
-3,612 |
+2,432 |
libraries_tests.run.windows.x86.Release.mch |
4,323 |
1,686 |
1,662 |
975 |
-19,672 |
+16,383 |
librariestestsnotieredcompilation.run.windows.x86.Release.mch |
1,477 |
626 |
484 |
367 |
-5,882 |
+5,784 |
realworld.run.windows.x86.checked.mch |
136 |
43 |
71 |
22 |
-572 |
+1,245 |
|
9,090 |
3,710 |
3,305 |
2,075 |
-41,622 |
+34,052 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
benchmarks.run.windows.x86.checked.mch |
24,490 |
4 |
24,486 |
0 (0.00%) |
3 (0.01%) |
benchmarks.run_pgo.windows.x86.checked.mch |
117,682 |
41,904 |
75,778 |
0 (0.00%) |
125 (0.11%) |
benchmarks.run_tiered.windows.x86.checked.mch |
47,880 |
28,747 |
19,133 |
0 (0.00%) |
3 (0.01%) |
coreclr_tests.run.windows.x86.checked.mch |
574,519 |
319,847 |
254,672 |
1 (0.00%) |
149 (0.03%) |
libraries.crossgen2.windows.x86.checked.mch |
242,614 |
15 |
242,599 |
0 (0.00%) |
5 (0.00%) |
libraries.pmi.windows.x86.checked.mch |
305,729 |
6 |
305,723 |
0 (0.00%) |
44 (0.01%) |
libraries_tests.run.windows.x86.Release.mch |
626,797 |
427,222 |
199,575 |
0 (0.00%) |
1,036 (0.17%) |
librariestestsnotieredcompilation.run.windows.x86.Release.mch |
316,389 |
21,910 |
294,479 |
0 (0.00%) |
46 (0.01%) |
realworld.run.windows.x86.checked.mch |
35,976 |
3 |
35,973 |
0 (0.00%) |
9 (0.03%) |
|
2,292,076 |
839,658 |
1,452,418 |
1 (0.00%) |
1,420 (0.06%) |
jit-analyze output
benchmarks.run.windows.x86.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 7120956 (overridden on cmd)
Total bytes of diff: 7120719 (overridden on cmd)
Total bytes of delta: -237 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
75 : 18049.dasm (7.49 % of base)
70 : 10039.dasm (2.41 % of base)
22 : 21769.dasm (0.58 % of base)
19 : 2817.dasm (1.79 % of base)
19 : 19251.dasm (0.38 % of base)
14 : 18159.dasm (0.42 % of base)
14 : 3588.dasm (7.37 % of base)
14 : 8089.dasm (0.23 % of base)
12 : 18925.dasm (0.25 % of base)
11 : 2446.dasm (2.45 % of base)
4 : 16685.dasm (0.05 % of base)
3 : 13875.dasm (0.02 % of base)
3 : 5821.dasm (3.49 % of base)
3 : 13965.dasm (1.45 % of base)
3 : 15220.dasm (3.61 % of base)
2 : 10659.dasm (0.37 % of base)
2 : 5081.dasm (0.35 % of base)
2 : 5692.dasm (4.44 % of base)
2 : 14963.dasm (0.68 % of base)
2 : 16240.dasm (1.18 % of base)
Top file improvements (bytes):
-43 : 20657.dasm (-10.31 % of base)
-43 : 8505.dasm (-0.52 % of base)
-38 : 3008.dasm (-1.68 % of base)
-33 : 6218.dasm (-1.11 % of base)
-30 : 9846.dasm (-46.88 % of base)
-26 : 2418.dasm (-2.25 % of base)
-24 : 23714.dasm (-1.71 % of base)
-22 : 1247.dasm (-10.58 % of base)
-20 : 7648.dasm (-15.87 % of base)
-18 : 10146.dasm (-0.90 % of base)
-12 : 18620.dasm (-0.45 % of base)
-12 : 8238.dasm (-2.39 % of base)
-10 : 15721.dasm (-1.77 % of base)
-10 : 562.dasm (-1.58 % of base)
-9 : 21367.dasm (-1.88 % of base)
-9 : 18642.dasm (-0.48 % of base)
-9 : 17565.dasm (-1.48 % of base)
-8 : 13310.dasm (-3.40 % of base)
-8 : 404.dasm (-3.08 % of base)
-8 : 8365.dasm (-1.86 % of base)
58 total files with Code Size differences (33 improved, 25 regressed), 20 unchanged.
Top method regressions (bytes):
75 (7.49 % of base) : 18049.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
70 (2.41 % of base) : 10039.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (FullOpts)
22 (0.58 % of base) : 21769.dasm - System.Diagnostics.Process:StartWithCreateProcess(System.Diagnostics.ProcessStartInfo):ubyte:this (FullOpts)
19 (0.38 % of base) : 19251.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
19 (1.79 % of base) : 2817.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
14 (0.42 % of base) : 18159.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetWellKnownType(int):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
14 (7.37 % of base) : 3588.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
14 (0.23 % of base) : 8089.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (FullOpts)
12 (0.25 % of base) : 18925.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol:CheckModifiers(ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
11 (2.45 % of base) : 2446.dasm - System.Text.RegularExpressions.RegexCompiler:LoadSearchValues[System.__Canon](System.__Canon[],int):this (FullOpts)
4 (0.05 % of base) : 16685.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)
3 (0.02 % of base) : 13875.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
3 (1.45 % of base) : 13965.dasm - ProtoBuf.Internal.Serializers.SurrogateSerializer`1[System.DateTimeOffset]:GetConversion(ubyte):System.Reflection.MethodInfo:this (FullOpts)
3 (3.49 % of base) : 5821.dasm - System.Net.Http.HttpConnection+HttpContentReadStream:Dispose(ubyte):this (FullOpts)
3 (3.61 % of base) : 15220.dasm - System.Runtime.Serialization.Json.JsonEncodingStreamWrapper:ReadEncoding(ubyte,ubyte):int (FullOpts)
2 (0.38 % of base) : 22104.dasm - Microsoft.Extensions.Configuration.Xml.XmlStreamConfigurationProvider:ReadAttributes(System.Xml.XmlReader,Microsoft.Extensions.Configuration.Xml.XmlConfigurationElement) (FullOpts)
2 (0.35 % of base) : 5081.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
2 (1.18 % of base) : 16240.dasm - System.Collections.Generic.SortedSet`1+Enumerator[int]:Initialize():this (FullOpts)
2 (0.69 % of base) : 16241.dasm - System.Collections.Generic.SortedSet`1+Enumerator[int]:MoveNext():ubyte:this (FullOpts)
2 (1.14 % of base) : 14961.dasm - System.Collections.Generic.SortedSet`1+Enumerator[System.__Canon]:Initialize():this (FullOpts)
Top method improvements (bytes):
-43 (-0.52 % of base) : 8505.dasm - MessagePack.Internal.ObjectSerializationInfo:CreateOrNull(System.Type,ubyte,ubyte,ubyte):MessagePack.Internal.ObjectSerializationInfo (FullOpts)
-43 (-10.31 % of base) : 20657.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
-38 (-1.68 % of base) : 3008.dasm - Sigil.Impl.VerifiableTracker:CollapseAndVerify():Sigil.Impl.VerificationResult:this (FullOpts)
-33 (-1.11 % of base) : 6218.dasm - Utf8Json.Internal.Emit.MetaType:.ctor(System.Type,System.Func`2[System.String,System.String],ubyte):this (FullOpts)
-30 (-46.88 % of base) : 9846.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
-26 (-2.25 % of base) : 2418.dasm - System.Text.RegularExpressions.RegexNode:ReduceAtomic():System.Text.RegularExpressions.RegexNode:this (FullOpts)
-24 (-1.71 % of base) : 23714.dasm - V8.Crypto.BigInteger:modPow(V8.Crypto.BigInteger,V8.Crypto.BigInteger):V8.Crypto.BigInteger:this (FullOpts)
-22 (-10.58 % of base) : 1247.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-20 (-15.87 % of base) : 7648.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-18 (-0.90 % of base) : 10146.dasm - System.Runtime.Serialization.Json.JsonFormatWriterGenerator+CriticalHelper:WriteMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder,System.Runtime.Serialization.DataContracts.ClassDataContract):int:this (FullOpts)
-12 (-0.45 % of base) : 18620.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-12 (-2.39 % of base) : 8238.dasm - System.Text.Json.Reflection.ReflectionExtensions:TryGetDeserializationConstructor(System.Type,ubyte,byref):ubyte (FullOpts)
-10 (-1.77 % of base) : 15721.dasm - Microsoft.Extensions.Configuration.ConfigurationKeyComparer:Compare(System.String,System.String):int:this (FullOpts)
-10 (-1.58 % of base) : 562.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiByte_Vector(uint,uint):uint (FullOpts)
-9 (-0.48 % of base) : 18642.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetSpecialType(byte):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
-9 (-1.88 % of base) : 21367.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:LeaveParameter(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location):this (FullOpts)
-9 (-1.48 % of base) : 17565.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
-8 (-2.12 % of base) : 18377.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MetadataOrSourceAssemblySymbol:GetDeclaredSpecialTypeMember(int):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
-8 (-3.40 % of base) : 13310.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (FullOpts)
-8 (-1.86 % of base) : 8365.dasm - System.Diagnostics.Tracing.EventSource:LogEventArgsMismatches(int,System.Object[]):this (FullOpts)
Top method regressions (percentages):
75 (7.49 % of base) : 18049.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
14 (7.37 % of base) : 3588.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
2 (4.44 % of base) : 5692.dasm - System.Net.Http.HttpConnectionPool:GetSslOptionsForRequest(System.Net.Http.HttpRequestMessage):System.Net.Security.SslClientAuthenticationOptions:this (FullOpts)
3 (3.61 % of base) : 15220.dasm - System.Runtime.Serialization.Json.JsonEncodingStreamWrapper:ReadEncoding(ubyte,ubyte):int (FullOpts)
3 (3.49 % of base) : 5821.dasm - System.Net.Http.HttpConnection+HttpContentReadStream:Dispose(ubyte):this (FullOpts)
11 (2.45 % of base) : 2446.dasm - System.Text.RegularExpressions.RegexCompiler:LoadSearchValues[System.__Canon](System.__Canon[],int):this (FullOpts)
70 (2.41 % of base) : 10039.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (FullOpts)
19 (1.79 % of base) : 2817.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
3 (1.45 % of base) : 13965.dasm - ProtoBuf.Internal.Serializers.SurrogateSerializer`1[System.DateTimeOffset]:GetConversion(ubyte):System.Reflection.MethodInfo:this (FullOpts)
2 (1.18 % of base) : 16240.dasm - System.Collections.Generic.SortedSet`1+Enumerator[int]:Initialize():this (FullOpts)
2 (1.14 % of base) : 14961.dasm - System.Collections.Generic.SortedSet`1+Enumerator[System.__Canon]:Initialize():this (FullOpts)
2 (0.85 % of base) : 5794.dasm - System.Net.Http.Headers.BaseHeaderParser:TryParseValue(System.String,System.Object,byref,byref):ubyte:this (FullOpts)
2 (0.69 % of base) : 16241.dasm - System.Collections.Generic.SortedSet`1+Enumerator[int]:MoveNext():ubyte:this (FullOpts)
2 (0.68 % of base) : 14963.dasm - System.Collections.Generic.SortedSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
22 (0.58 % of base) : 21769.dasm - System.Diagnostics.Process:StartWithCreateProcess(System.Diagnostics.ProcessStartInfo):ubyte:this (FullOpts)
14 (0.42 % of base) : 18159.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetWellKnownType(int):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
19 (0.38 % of base) : 19251.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
2 (0.38 % of base) : 22104.dasm - Microsoft.Extensions.Configuration.Xml.XmlStreamConfigurationProvider:ReadAttributes(System.Xml.XmlReader,Microsoft.Extensions.Configuration.Xml.XmlConfigurationElement) (FullOpts)
2 (0.37 % of base) : 10659.dasm - System.Xml.Serialization.XmlReflectionImporter:ImportElement(System.Xml.Serialization.TypeModel,System.Xml.Serialization.XmlRootAttribute,System.String,System.Xml.Serialization.RecursionLimiter):System.Xml.Serialization.ElementAccessor:this (FullOpts)
2 (0.35 % of base) : 5081.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
Top method improvements (percentages):
-30 (-46.88 % of base) : 9846.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
-20 (-15.87 % of base) : 7648.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-22 (-10.58 % of base) : 1247.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-43 (-10.31 % of base) : 20657.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
-4 (-3.60 % of base) : 2578.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
-8 (-3.40 % of base) : 13310.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (FullOpts)
-4 (-3.28 % of base) : 9388.dasm - System.Buffers.ReadOnlySequence`1[ubyte]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment`1[ubyte],System.Object,int,long,int):System.SequencePosition (FullOpts)
-8 (-3.08 % of base) : 404.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-6 (-3.08 % of base) : 16155.dasm - System.Xml.XmlElement:WriteElementTo(System.Xml.XmlWriter,System.Xml.XmlElement) (FullOpts)
-4 (-2.76 % of base) : 661.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
-2 (-2.50 % of base) : 19139.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetSymbol[System.__Canon](Microsoft.CodeAnalysis.ISymbol):System.__Canon (FullOpts)
-12 (-2.39 % of base) : 8238.dasm - System.Text.Json.Reflection.ReflectionExtensions:TryGetDeserializationConstructor(System.Type,ubyte,byref):ubyte (FullOpts)
-26 (-2.25 % of base) : 2418.dasm - System.Text.RegularExpressions.RegexNode:ReduceAtomic():System.Text.RegularExpressions.RegexNode:this (FullOpts)
-4 (-2.19 % of base) : 21547.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
-8 (-2.12 % of base) : 18377.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MetadataOrSourceAssemblySymbol:GetDeclaredSpecialTypeMember(int):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
-4 (-1.95 % of base) : 14443.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (FullOpts)
-9 (-1.88 % of base) : 21367.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:LeaveParameter(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location):this (FullOpts)
-8 (-1.86 % of base) : 8365.dasm - System.Diagnostics.Tracing.EventSource:LogEventArgsMismatches(int,System.Object[]):this (FullOpts)
-6 (-1.79 % of base) : 13649.dasm - System.Globalization.DateTimeFormatInfo:get_DateTimeOffsetPattern():System.String:this (FullOpts)
-10 (-1.77 % of base) : 15721.dasm - Microsoft.Extensions.Configuration.ConfigurationKeyComparer:Compare(System.String,System.String):int:this (FullOpts)
benchmarks.run_pgo.windows.x86.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 44953073 (overridden on cmd)
Total bytes of diff: 44952550 (overridden on cmd)
Total bytes of delta: -523 (-0.00 % of base)
diff is a regression.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
204 : 104827.dasm (13.27 % of base)
204 : 104822.dasm (13.27 % of base)
132 : 81587.dasm (5.25 % of base)
73 : 116688.dasm (7.53 % of base)
71 : 14290.dasm (12.52 % of base)
66 : 35047.dasm (2.27 % of base)
60 : 70252.dasm (11.24 % of base)
58 : 1198.dasm (3.16 % of base)
50 : 51741.dasm (5.35 % of base)
42 : 114742.dasm (15.61 % of base)
42 : 18132.dasm (15.61 % of base)
42 : 31473.dasm (15.61 % of base)
42 : 62415.dasm (15.61 % of base)
42 : 101037.dasm (15.61 % of base)
42 : 39276.dasm (15.61 % of base)
40 : 106891.dasm (2.86 % of base)
34 : 107227.dasm (6.71 % of base)
34 : 5674.dasm (1.81 % of base)
32 : 62580.dasm (3.67 % of base)
30 : 108528.dasm (7.63 % of base)
Top file improvements (bytes):
-146 : 83749.dasm (-1.55 % of base)
-43 : 71115.dasm (-10.31 % of base)
-43 : 27417.dasm (-0.52 % of base)
-38 : 7763.dasm (-1.68 % of base)
-34 : 42186.dasm (-49.28 % of base)
-34 : 25899.dasm (-49.28 % of base)
-33 : 5725.dasm (-1.09 % of base)
-32 : 69525.dasm (-47.76 % of base)
-32 : 88873.dasm (-47.76 % of base)
-32 : 108513.dasm (-47.76 % of base)
-32 : 22965.dasm (-2.75 % of base)
-32 : 23377.dasm (-47.76 % of base)
-32 : 36162.dasm (-47.76 % of base)
-32 : 37314.dasm (-47.76 % of base)
-32 : 38634.dasm (-47.76 % of base)
-32 : 45489.dasm (-47.76 % of base)
-32 : 70445.dasm (-47.76 % of base)
-32 : 73665.dasm (-47.76 % of base)
-32 : 86169.dasm (-47.76 % of base)
-32 : 87813.dasm (-47.76 % of base)
55 total files with Code Size differences (29 improved, 26 regressed), 20 unchanged.
Top method regressions (bytes):
204 (13.27 % of base) : 104822.dasm - BenchmarksGame.pidigits:compose_l(int,int,int,int):this (Tier1)
204 (13.27 % of base) : 104827.dasm - BenchmarksGame.pidigits:compose_r(int,int,int,int):this (Tier1)
132 (5.25 % of base) : 81587.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:AddSynthesizedReturnTypeAttributes(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,byref):this (Tier1)
73 (7.53 % of base) : 116688.dasm - System.Net.Sockets.SocketAddressExtensions:Equals(System.Net.SocketAddress,System.Net.EndPoint):ubyte (Tier1)
71 (12.52 % of base) : 14290.dasm - System.Net.Security.SslStream:ProcessTlsFrame(int):System.Net.Security.ProtocolToken:this (Tier0-FullOpts)
66 (2.27 % of base) : 35047.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (Tier0-FullOpts)
60 (11.24 % of base) : 70252.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
58 (3.16 % of base) : 1198.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier0-FullOpts)
50 (5.35 % of base) : 51741.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
42 (15.61 % of base) : 114742.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToLowerConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
42 (15.61 % of base) : 62415.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToLowerConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
42 (15.61 % of base) : 18132.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
42 (15.61 % of base) : 31473.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
42 (15.61 % of base) : 101037.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
42 (15.61 % of base) : 39276.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
40 (2.86 % of base) : 106891.dasm - System.Net.IPEndPoint:Create(System.Net.SocketAddress):System.Net.EndPoint:this (Tier1)
34 (1.81 % of base) : 5674.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateInterfaces(System.RuntimeType+RuntimeTypeCache+Filter):System.RuntimeType[]:this (Tier0-FullOpts)
34 (6.71 % of base) : 107227.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
32 (3.67 % of base) : 62580.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateRtFields(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,byref):this (Tier1)
30 (7.63 % of base) : 108528.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
Top method improvements (bytes):
-146 (-1.55 % of base) : 83749.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindVariableDeclaration(Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclaratorSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration:this (Tier1)
-43 (-0.52 % of base) : 27417.dasm - MessagePack.Internal.ObjectSerializationInfo:CreateOrNull(System.Type,ubyte,ubyte,ubyte):MessagePack.Internal.ObjectSerializationInfo (Tier0-FullOpts)
-43 (-10.31 % of base) : 71115.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (Tier0-FullOpts)
-38 (-1.68 % of base) : 7763.dasm - Sigil.Impl.VerifiableTracker:CollapseAndVerify():Sigil.Impl.VerificationResult:this (Tier0-FullOpts)
-34 (-49.28 % of base) : 42186.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-34 (-49.28 % of base) : 25899.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-33 (-1.09 % of base) : 5725.dasm - Utf8Json.Internal.Emit.MetaType:.ctor(System.Type,System.Func`2[System.String,System.String],ubyte):this (Tier0-FullOpts)
-32 (-47.76 % of base) : 69525.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-32 (-47.76 % of base) : 88873.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-32 (-47.76 % of base) : 108513.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-32 (-47.76 % of base) : 23377.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-32 (-47.76 % of base) : 36162.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-32 (-47.76 % of base) : 37314.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-32 (-47.76 % of base) : 38634.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-32 (-47.76 % of base) : 45489.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-32 (-47.76 % of base) : 70445.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-32 (-47.76 % of base) : 73665.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-32 (-47.76 % of base) : 86169.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-32 (-47.76 % of base) : 87813.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-32 (-47.76 % of base) : 11613.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
Top method regressions (percentages):
42 (15.61 % of base) : 114742.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToLowerConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
42 (15.61 % of base) : 62415.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToLowerConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
42 (15.61 % of base) : 18132.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
42 (15.61 % of base) : 31473.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
42 (15.61 % of base) : 101037.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
42 (15.61 % of base) : 39276.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
204 (13.27 % of base) : 104822.dasm - BenchmarksGame.pidigits:compose_l(int,int,int,int):this (Tier1)
204 (13.27 % of base) : 104827.dasm - BenchmarksGame.pidigits:compose_r(int,int,int,int):this (Tier1)
71 (12.52 % of base) : 14290.dasm - System.Net.Security.SslStream:ProcessTlsFrame(int):System.Net.Security.ProtocolToken:this (Tier0-FullOpts)
60 (11.24 % of base) : 70252.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
10 (9.09 % of base) : 79936.dasm - Microsoft.CodeAnalysis.CSharp.SyntheticBoundNodeFactory:set_CurrentFunction(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):this (Tier1)
10 (8.00 % of base) : 79673.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
30 (7.63 % of base) : 108528.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
73 (7.53 % of base) : 116688.dasm - System.Net.Sockets.SocketAddressExtensions:Equals(System.Net.SocketAddress,System.Net.EndPoint):ubyte (Tier1)
14 (7.37 % of base) : 10814.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (Tier0-FullOpts)
34 (6.71 % of base) : 107227.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
12 (6.38 % of base) : 80199.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
25 (6.22 % of base) : 93493.dasm - System.RuntimeType:CreateInstanceOfT():System.Object:this (Tier1)
25 (6.22 % of base) : 96511.dasm - System.RuntimeType:CreateInstanceOfT():System.Object:this (Tier1)
50 (5.35 % of base) : 51741.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
Top method improvements (percentages):
-34 (-49.28 % of base) : 42186.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-34 (-49.28 % of base) : 25899.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-32 (-47.76 % of base) : 69525.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-32 (-47.76 % of base) : 88873.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-32 (-47.76 % of base) : 108513.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-32 (-47.76 % of base) : 23377.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-32 (-47.76 % of base) : 36162.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-32 (-47.76 % of base) : 37314.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-32 (-47.76 % of base) : 38634.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-32 (-47.76 % of base) : 45489.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-32 (-47.76 % of base) : 70445.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-32 (-47.76 % of base) : 73665.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-32 (-47.76 % of base) : 86169.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-32 (-47.76 % of base) : 87813.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-32 (-47.76 % of base) : 11613.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-32 (-47.76 % of base) : 117673.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-32 (-47.76 % of base) : 22861.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-32 (-47.76 % of base) : 31226.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-32 (-47.76 % of base) : 41261.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-32 (-47.76 % of base) : 48349.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
benchmarks.run_tiered.windows.x86.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 9468479 (overridden on cmd)
Total bytes of diff: 9468120 (overridden on cmd)
Total bytes of delta: -359 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
70 : 21856.dasm (2.42 % of base)
19 : 41122.dasm (0.38 % of base)
19 : 6999.dasm (1.79 % of base)
14 : 36895.dasm (0.42 % of base)
14 : 18979.dasm (0.23 % of base)
14 : 6624.dasm (7.37 % of base)
11 : 24450.dasm (2.45 % of base)
4 : 32394.dasm (0.05 % of base)
3 : 28201.dasm (3.49 % of base)
3 : 27527.dasm (0.02 % of base)
2 : 29704.dasm (1.14 % of base)
2 : 29705.dasm (0.68 % of base)
2 : 31783.dasm (1.18 % of base)
2 : 31785.dasm (0.69 % of base)
2 : 9243.dasm (0.20 % of base)
2 : 16456.dasm (0.35 % of base)
2 : 44186.dasm (0.38 % of base)
1 : 14940.dasm (0.31 % of base)
1 : 20519.dasm (0.25 % of base)
Top file improvements (bytes):
-43 : 19126.dasm (-0.52 % of base)
-43 : 33876.dasm (-10.31 % of base)
-38 : 8053.dasm (-1.68 % of base)
-33 : 10260.dasm (-1.11 % of base)
-32 : 3274.dasm (-47.76 % of base)
-26 : 5174.dasm (-2.25 % of base)
-24 : 46756.dasm (-1.71 % of base)
-22 : 3752.dasm (-10.58 % of base)
-20 : 17441.dasm (-15.87 % of base)
-18 : 23718.dasm (-0.90 % of base)
-12 : 18825.dasm (-2.39 % of base)
-12 : 36802.dasm (-0.45 % of base)
-10 : 1461.dasm (-1.58 % of base)
-10 : 29886.dasm (-1.77 % of base)
-9 : 42671.dasm (-1.88 % of base)
-9 : 38140.dasm (-0.48 % of base)
-8 : 2174.dasm (-0.15 % of base)
-8 : 45961.dasm (-0.92 % of base)
-8 : 1038.dasm (-3.08 % of base)
-8 : 18397.dasm (-1.86 % of base)
51 total files with Code Size differences (32 improved, 19 regressed), 14 unchanged.
Top method regressions (bytes):
70 (2.42 % of base) : 21856.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (Tier0-FullOpts)
19 (0.38 % of base) : 41122.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
19 (1.79 % of base) : 6999.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier0-FullOpts)
14 (0.42 % of base) : 36895.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetWellKnownType(int):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (Tier1)
14 (7.37 % of base) : 6624.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (Tier0-FullOpts)
14 (0.23 % of base) : 18979.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (Tier0-FullOpts)
11 (2.45 % of base) : 24450.dasm - System.Text.RegularExpressions.RegexCompiler:LoadSearchValues[System.__Canon](System.__Canon[],int):this (Tier1)
4 (0.05 % of base) : 32394.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (Tier0-FullOpts)
3 (0.02 % of base) : 27527.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
3 (3.49 % of base) : 28201.dasm - System.Net.Http.HttpConnection+HttpContentReadStream:Dispose(ubyte):this (Tier1)
2 (0.38 % of base) : 44186.dasm - Microsoft.Extensions.Configuration.Xml.XmlStreamConfigurationProvider:ReadAttributes(System.Xml.XmlReader,Microsoft.Extensions.Configuration.Xml.XmlConfigurationElement) (Tier0-FullOpts)
2 (0.35 % of base) : 16456.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier0-FullOpts)
2 (1.18 % of base) : 31783.dasm - System.Collections.Generic.SortedSet`1+Enumerator[int]:Initialize():this (Tier0-FullOpts)
2 (0.69 % of base) : 31785.dasm - System.Collections.Generic.SortedSet`1+Enumerator[int]:MoveNext():ubyte:this (Tier0-FullOpts)
2 (1.14 % of base) : 29704.dasm - System.Collections.Generic.SortedSet`1+Enumerator[System.__Canon]:Initialize():this (Tier0-FullOpts)
2 (0.68 % of base) : 29705.dasm - System.Collections.Generic.SortedSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier0-FullOpts)
2 (0.20 % of base) : 9243.dasm - System.Reflection.InvokerEmitUtil:EmitCallAndReturnHandling(System.Reflection.Emit.ILGenerator,System.Reflection.MethodBase,ubyte,ubyte) (Tier1)
1 (0.31 % of base) : 14940.dasm - System.Net.SocketAddress:.ctor(System.Net.IPAddress):this (Tier1)
1 (0.25 % of base) : 20519.dasm - System.Text.RegularExpressions.RegexCharClass:AddCategoryFromName(System.String,ubyte,ubyte,System.String,int):this (Tier0-FullOpts)
Top method improvements (bytes):
-43 (-0.52 % of base) : 19126.dasm - MessagePack.Internal.ObjectSerializationInfo:CreateOrNull(System.Type,ubyte,ubyte,ubyte):MessagePack.Internal.ObjectSerializationInfo (Tier0-FullOpts)
-43 (-10.31 % of base) : 33876.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (Tier0-FullOpts)
-38 (-1.68 % of base) : 8053.dasm - Sigil.Impl.VerifiableTracker:CollapseAndVerify():Sigil.Impl.VerificationResult:this (Tier0-FullOpts)
-33 (-1.11 % of base) : 10260.dasm - Utf8Json.Internal.Emit.MetaType:.ctor(System.Type,System.Func`2[System.String,System.String],ubyte):this (Tier0-FullOpts)
-32 (-47.76 % of base) : 3274.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-26 (-2.25 % of base) : 5174.dasm - System.Text.RegularExpressions.RegexNode:ReduceAtomic():System.Text.RegularExpressions.RegexNode:this (Tier0-FullOpts)
-24 (-1.71 % of base) : 46756.dasm - V8.Crypto.BigInteger:modPow(V8.Crypto.BigInteger,V8.Crypto.BigInteger):V8.Crypto.BigInteger:this (Tier0-FullOpts)
-22 (-10.58 % of base) : 3752.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier0-FullOpts)
-20 (-15.87 % of base) : 17441.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier0-FullOpts)
-18 (-0.90 % of base) : 23718.dasm - System.Runtime.Serialization.Json.JsonFormatWriterGenerator+CriticalHelper:WriteMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder,System.Runtime.Serialization.DataContracts.ClassDataContract):int:this (Tier0-FullOpts)
-12 (-0.45 % of base) : 36802.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (Tier0-FullOpts)
-12 (-2.39 % of base) : 18825.dasm - System.Text.Json.Reflection.ReflectionExtensions:TryGetDeserializationConstructor(System.Type,ubyte,byref):ubyte (Tier0-FullOpts)
-10 (-1.77 % of base) : 29886.dasm - Microsoft.Extensions.Configuration.ConfigurationKeyComparer:Compare(System.String,System.String):int:this (Tier0-FullOpts)
-10 (-1.58 % of base) : 1461.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiByte_Vector(uint,uint):uint (Tier0-FullOpts)
-9 (-0.48 % of base) : 38140.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetSpecialType(byte):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (Tier1)
-9 (-1.88 % of base) : 42671.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:LeaveParameter(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location):this (Tier1)
-8 (-2.12 % of base) : 36192.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MetadataOrSourceAssemblySymbol:GetDeclaredSpecialTypeMember(int):Microsoft.CodeAnalysis.CSharp.Symbol:this (Tier0-FullOpts)
-8 (-0.92 % of base) : 45961.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:CreateInstance(System.IServiceProvider,System.Type,System.Object[]):System.Object (Tier0-FullOpts)
-8 (-3.40 % of base) : 26548.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier0-FullOpts)
-8 (-1.86 % of base) : 18397.dasm - System.Diagnostics.Tracing.EventSource:LogEventArgsMismatches(int,System.Object[]):this (Tier0-FullOpts)
Top method regressions (percentages):
14 (7.37 % of base) : 6624.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (Tier0-FullOpts)
3 (3.49 % of base) : 28201.dasm - System.Net.Http.HttpConnection+HttpContentReadStream:Dispose(ubyte):this (Tier1)
11 (2.45 % of base) : 24450.dasm - System.Text.RegularExpressions.RegexCompiler:LoadSearchValues[System.__Canon](System.__Canon[],int):this (Tier1)
70 (2.42 % of base) : 21856.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (Tier0-FullOpts)
19 (1.79 % of base) : 6999.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier0-FullOpts)
2 (1.18 % of base) : 31783.dasm - System.Collections.Generic.SortedSet`1+Enumerator[int]:Initialize():this (Tier0-FullOpts)
2 (1.14 % of base) : 29704.dasm - System.Collections.Generic.SortedSet`1+Enumerator[System.__Canon]:Initialize():this (Tier0-FullOpts)
2 (0.69 % of base) : 31785.dasm - System.Collections.Generic.SortedSet`1+Enumerator[int]:MoveNext():ubyte:this (Tier0-FullOpts)
2 (0.68 % of base) : 29705.dasm - System.Collections.Generic.SortedSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier0-FullOpts)
14 (0.42 % of base) : 36895.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetWellKnownType(int):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (Tier1)
19 (0.38 % of base) : 41122.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
2 (0.38 % of base) : 44186.dasm - Microsoft.Extensions.Configuration.Xml.XmlStreamConfigurationProvider:ReadAttributes(System.Xml.XmlReader,Microsoft.Extensions.Configuration.Xml.XmlConfigurationElement) (Tier0-FullOpts)
2 (0.35 % of base) : 16456.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier0-FullOpts)
1 (0.31 % of base) : 14940.dasm - System.Net.SocketAddress:.ctor(System.Net.IPAddress):this (Tier1)
1 (0.25 % of base) : 20519.dasm - System.Text.RegularExpressions.RegexCharClass:AddCategoryFromName(System.String,ubyte,ubyte,System.String,int):this (Tier0-FullOpts)
14 (0.23 % of base) : 18979.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (Tier0-FullOpts)
2 (0.20 % of base) : 9243.dasm - System.Reflection.InvokerEmitUtil:EmitCallAndReturnHandling(System.Reflection.Emit.ILGenerator,System.Reflection.MethodBase,ubyte,ubyte) (Tier1)
4 (0.05 % of base) : 32394.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (Tier0-FullOpts)
3 (0.02 % of base) : 27527.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
Top method improvements (percentages):
-32 (-47.76 % of base) : 3274.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
-20 (-15.87 % of base) : 17441.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier0-FullOpts)
-22 (-10.58 % of base) : 3752.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier0-FullOpts)
-43 (-10.31 % of base) : 33876.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (Tier0-FullOpts)
-4 (-3.60 % of base) : 10837.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (Tier0-FullOpts)
-8 (-3.40 % of base) : 26548.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier0-FullOpts)
-4 (-3.28 % of base) : 20560.dasm - System.Buffers.ReadOnlySequence`1[ubyte]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment`1[ubyte],System.Object,int,long,int):System.SequencePosition (Tier0-FullOpts)
-8 (-3.08 % of base) : 1038.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier0-FullOpts)
-6 (-3.08 % of base) : 31724.dasm - System.Xml.XmlElement:WriteElementTo(System.Xml.XmlWriter,System.Xml.XmlElement) (Tier0-FullOpts)
-4 (-2.76 % of base) : 1714.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier0-FullOpts)
-12 (-2.39 % of base) : 18825.dasm - System.Text.Json.Reflection.ReflectionExtensions:TryGetDeserializationConstructor(System.Type,ubyte,byref):ubyte (Tier0-FullOpts)
-26 (-2.25 % of base) : 5174.dasm - System.Text.RegularExpressions.RegexNode:ReduceAtomic():System.Text.RegularExpressions.RegexNode:this (Tier0-FullOpts)
-4 (-2.19 % of base) : 43317.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (Tier0-FullOpts)
-8 (-2.12 % of base) : 36192.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MetadataOrSourceAssemblySymbol:GetDeclaredSpecialTypeMember(int):Microsoft.CodeAnalysis.CSharp.Symbol:this (Tier0-FullOpts)
-4 (-1.95 % of base) : 29021.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier0-FullOpts)
-9 (-1.88 % of base) : 42671.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:LeaveParameter(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location):this (Tier1)
-8 (-1.86 % of base) : 18397.dasm - System.Diagnostics.Tracing.EventSource:LogEventArgsMismatches(int,System.Object[]):this (Tier0-FullOpts)
-6 (-1.79 % of base) : 26747.dasm - System.Globalization.DateTimeFormatInfo:get_DateTimeOffsetPattern():System.String:this (Tier0-FullOpts)
-10 (-1.77 % of base) : 29886.dasm - Microsoft.Extensions.Configuration.ConfigurationKeyComparer:Compare(System.String,System.String):int:this (Tier0-FullOpts)
-24 (-1.71 % of base) : 46756.dasm - V8.Crypto.BigInteger:modPow(V8.Crypto.BigInteger,V8.Crypto.BigInteger):V8.Crypto.BigInteger:this (Tier0-FullOpts)
coreclr_tests.run.windows.x86.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 309197550 (overridden on cmd)
Total bytes of diff: 309195755 (overridden on cmd)
Total bytes of delta: -1795 (-0.00 % of base)
diff is a regression.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
133 : 330141.dasm (8.17 % of base)
132 : 190688.dasm (9.13 % of base)
132 : 190690.dasm (9.13 % of base)
119 : 568825.dasm (2.55 % of base)
98 : 301726.dasm (2.36 % of base)
98 : 564038.dasm (2.36 % of base)
91 : 327619.dasm (5.69 % of base)
88 : 165818.dasm (2.87 % of base)
88 : 167894.dasm (2.87 % of base)
88 : 419356.dasm (2.83 % of base)
75 : 185978.dasm (7.49 % of base)
70 : 189465.dasm (2.33 % of base)
70 : 450605.dasm (2.33 % of base)
60 : 571206.dasm (1.84 % of base)
59 : 165834.dasm (1.82 % of base)
59 : 167910.dasm (1.82 % of base)
56 : 566678.dasm (2.81 % of base)
54 : 419369.dasm (1.62 % of base)
54 : 571296.dasm (1.13 % of base)
53 : 302592.dasm (2.68 % of base)
Top file improvements (bytes):
-210 : 20251.dasm (-26.02 % of base)
-188 : 167305.dasm (-28.53 % of base)
-105 : 549219.dasm (-4.79 % of base)
-66 : 20250.dasm (-24.72 % of base)
-61 : 20249.dasm (-14.81 % of base)
-56 : 568785.dasm (-1.75 % of base)
-44 : 282661.dasm (-6.14 % of base)
-44 : 545906.dasm (-6.14 % of base)
-35 : 405671.dasm (-22.88 % of base)
-35 : 426243.dasm (-22.88 % of base)
-35 : 426244.dasm (-31.53 % of base)
-35 : 431388.dasm (-34.31 % of base)
-35 : 431115.dasm (-31.53 % of base)
-34 : 396715.dasm (-7.91 % of base)
-34 : 396723.dasm (-7.91 % of base)
-34 : 132758.dasm (-7.91 % of base)
-34 : 132749.dasm (-7.91 % of base)
-33 : 236801.dasm (-21.43 % of base)
-33 : 302606.dasm (-3.85 % of base)
-32 : 431532.dasm (-48.48 % of base)
74 total files with Code Size differences (39 improved, 35 regressed), 20 unchanged.
Top method regressions (bytes):
133 (8.17 % of base) : 330141.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)
132 (9.13 % of base) : 190688.dasm - BenchmarksGame.pidigits:compose_l(int,int,int,int):this (FullOpts)
132 (9.13 % of base) : 190690.dasm - BenchmarksGame.pidigits:compose_r(int,int,int,int):this (FullOpts)
119 (2.55 % of base) : 568825.dasm - Internal.JitInterface.CorInfoImpl:getMethodInfo(uint,uint,uint):ubyte:this (Tier1)
98 (2.36 % of base) : 301726.dasm - Microsoft.Build.Evaluation.Evaluator`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:ReadNewTargetElement(Microsoft.Build.Construction.ProjectTargetElement,ubyte,Microsoft.Build.Evaluation.EvaluationProfiler):Microsoft.Build.Execution.ProjectTargetInstance (FullOpts)
98 (2.36 % of base) : 564038.dasm - Microsoft.Build.Evaluation.Evaluator`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:ReadNewTargetElement(Microsoft.Build.Construction.ProjectTargetElement,ubyte,Microsoft.Build.Evaluation.EvaluationProfiler):Microsoft.Build.Execution.ProjectTargetInstance (Tier0-FullOpts)
91 (5.69 % of base) : 327619.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)
88 (2.87 % of base) : 165818.dasm - NetClient.StringTests:Marshal_LPString():this (FullOpts)
88 (2.87 % of base) : 167894.dasm - NetClient.StringTests:Marshal_LPString():this (FullOpts)
88 (2.83 % of base) : 419356.dasm - NetClient.StringTests:Marshal_LPString():this (Tier0-FullOpts)
75 (7.49 % of base) : 185978.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
70 (2.33 % of base) : 189465.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (FullOpts)
70 (2.33 % of base) : 450605.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (Tier0-FullOpts)
60 (1.84 % of base) : 571206.dasm - Internal.JitInterface.CorInfoImpl:getClassAttribsInternal(Internal.TypeSystem.TypeDesc):uint:this (Tier1)
59 (1.82 % of base) : 165834.dasm - NetClient.StringTests:Marshal_LPWString():this (FullOpts)
59 (1.82 % of base) : 167910.dasm - NetClient.StringTests:Marshal_LPWString():this (FullOpts)
56 (2.81 % of base) : 566678.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.AttributePresenceFilterNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (Tier0-FullOpts)
54 (1.13 % of base) : 571296.dasm - Internal.JitInterface.CorInfoImpl:getMethodInfo(uint,uint,uint):ubyte:this (Tier1)
54 (1.62 % of base) : 419369.dasm - NetClient.StringTests:Marshal_LPWString():this (Tier0-FullOpts)
53 (2.68 % of base) : 302592.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.AttributePresenceFilterNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
Top method improvements (bytes):
-210 (-26.02 % of base) : 20251.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (FullOpts)
-188 (-28.53 % of base) : 167305.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
-105 (-4.79 % of base) : 549219.dasm - System.Reflection.PortableExecutable.PEReader:.ctor(System.IO.Stream,int,int):this (Tier1)
-66 (-24.72 % of base) : 20250.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:isNumber(System.Object):ubyte (FullOpts)
-61 (-14.81 % of base) : 20249.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:toFormattedString(System.String,System.Object):System.String (FullOpts)
-56 (-1.75 % of base) : 568785.dasm - Internal.JitInterface.CorInfoImpl:getFieldInfo(byref,uint,int,uint):this (Tier1)
-44 (-6.14 % of base) : 282661.dasm - Driver`2[System.__Canon,System.__Canon]:BasicAdd(System.__Canon[],System.__Canon[]):this (FullOpts)
-44 (-6.14 % of base) : 545906.dasm - Driver`2[System.__Canon,System.__Canon]:BasicAdd(System.__Canon[],System.__Canon[]):this (Tier0-FullOpts)
-35 (-22.88 % of base) : 426243.dasm - System.Double:Equals(System.Object):ubyte:this (Instrumented Tier1)
-35 (-31.53 % of base) : 426244.dasm - System.Int64:Equals(System.Object):ubyte:this (Instrumented Tier1)
-35 (-22.88 % of base) : 405671.dasm - System.Single:Equals(System.Object):ubyte:this (Instrumented Tier1)
-35 (-34.31 % of base) : 431388.dasm - System.Single:Equals(System.Object):ubyte:this (Tier1)
-35 (-31.53 % of base) : 431115.dasm - System.UInt64:Equals(System.Object):ubyte:this (Instrumented Tier1)
-34 (-7.91 % of base) : 132749.dasm - IntelHardwareIntrinsicTest._Avx2.Program+GatherMaskVector128+TestTable`2[float,int]:CheckResult(System.Func`3[float,float,ubyte],int[]):ubyte:this (FullOpts)
-34 (-7.91 % of base) : 396715.dasm - IntelHardwareIntrinsicTest._Avx2.Program+GatherMaskVector128+TestTable`2[float,int]:CheckResult(System.Func`3[float,float,ubyte],int[]):ubyte:this (Tier0-FullOpts)
-34 (-7.91 % of base) : 132758.dasm - IntelHardwareIntrinsicTest._Avx2.Program+GatherMaskVector256+TestTable`2[float,int]:CheckResult(System.Func`3[float,float,ubyte],int[]):ubyte:this (FullOpts)
-34 (-7.91 % of base) : 396723.dasm - IntelHardwareIntrinsicTest._Avx2.Program+GatherMaskVector256+TestTable`2[float,int]:CheckResult(System.Func`3[float,float,ubyte],int[]):ubyte:this (Tier0-FullOpts)
-33 (-3.85 % of base) : 302606.dasm - Internal.TypeSystem.Ecma.EcmaMethod:GetImportAttributesFromBestFitMappingAttribute(System.Reflection.Metadata.CustomAttributeHandleCollection):short:this (FullOpts)
-33 (-21.43 % of base) : 236801.dasm - Runtime_40440+LargeStruct:Equals(System.Object):ubyte:this (FullOpts)
-32 (-48.48 % of base) : 431532.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
Top method regressions (percentages):
8 (11.43 % of base) : 236896.dasm - Runtime_49101:Test(int,int,int,int,int,int,int,int,int,float,float,float,float,float,float,float,float,float,System.Numerics.Vector3):int (FullOpts)
50 (9.14 % of base) : 570327.dasm - ILCompiler.ReadyToRunHashCode:TypeHashCode(Internal.TypeSystem.TypeDesc):int (Tier1)
132 (9.13 % of base) : 190688.dasm - BenchmarksGame.pidigits:compose_l(int,int,int,int):this (FullOpts)
132 (9.13 % of base) : 190690.dasm - BenchmarksGame.pidigits:compose_r(int,int,int,int):this (FullOpts)
133 (8.17 % of base) : 330141.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)
75 (7.49 % of base) : 185978.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
91 (5.69 % of base) : 327619.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)
33 (5.17 % of base) : 454875.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateRtFields(System.RuntimeType+RuntimeTypeCache+Filter,uint,int,System.RuntimeType,byref):this (Tier1)
47 (4.37 % of base) : 167923.dasm - NetClient.StringTests:Marshal_BStrString():this (FullOpts)
47 (4.35 % of base) : 165847.dasm - NetClient.StringTests:Marshal_BStrString():this (FullOpts)
47 (4.20 % of base) : 419377.dasm - NetClient.StringTests:Marshal_BStrString():this (Tier0-FullOpts)
4 (4.08 % of base) : 467268.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature):System.Reflection.ParameterInfo[] (Tier1)
3 (3.80 % of base) : 458730.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
3 (3.80 % of base) : 566312.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
3 (3.80 % of base) : 449355.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
3 (3.80 % of base) : 483179.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
3 (3.80 % of base) : 562067.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
3 (3.80 % of base) : 562778.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
3 (3.80 % of base) : 543653.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
3 (3.80 % of base) : 570687.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
Top method improvements (percentages):
-32 (-48.48 % of base) : 431532.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-30 (-46.88 % of base) : 439284.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-30 (-46.88 % of base) : 309121.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-30 (-46.88 % of base) : 431392.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-30 (-46.88 % of base) : 487154.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-30 (-46.88 % of base) : 431398.dasm - System.UInt32:Equals(System.Object):ubyte:this (Tier1)
-31 (-44.93 % of base) : 431395.dasm - System.Byte:Equals(System.Object):ubyte:this (Tier1)
-31 (-44.93 % of base) : 431396.dasm - System.Int16:Equals(System.Object):ubyte:this (Tier1)
-31 (-44.93 % of base) : 431397.dasm - System.SByte:Equals(System.Object):ubyte:this (Tier1)
-31 (-44.93 % of base) : 431394.dasm - System.UInt16:Equals(System.Object):ubyte:this (Tier1)
-31 (-38.75 % of base) : 431393.dasm - System.Int64:Equals(System.Object):ubyte:this (Tier1)
-31 (-38.75 % of base) : 431399.dasm - System.UInt64:Equals(System.Object):ubyte:this (Tier1)
-35 (-34.31 % of base) : 431388.dasm - System.Single:Equals(System.Object):ubyte:this (Tier1)
-35 (-31.53 % of base) : 426244.dasm - System.Int64:Equals(System.Object):ubyte:this (Instrumented Tier1)
-35 (-31.53 % of base) : 431115.dasm - System.UInt64:Equals(System.Object):ubyte:this (Instrumented Tier1)
-28 (-29.17 % of base) : 326952.dasm - System.Byte:Equals(System.Object):ubyte:this (Instrumented Tier1)
-28 (-29.17 % of base) : 405680.dasm - System.SByte:Equals(System.Object):ubyte:this (Instrumented Tier1)
-188 (-28.53 % of base) : 167305.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
-25 (-28.09 % of base) : 174537.dasm - System.Int32:Equals(System.Object):ubyte:this (Instrumented Tier1)
-25 (-28.09 % of base) : 405688.dasm - System.UInt32:Equals(System.Object):ubyte:this (Instrumented Tier1)
libraries.crossgen2.windows.x86.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 31713985 (overridden on cmd)
Total bytes of diff: 31713223 (overridden on cmd)
Total bytes of delta: -762 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
198 : 58113.dasm (4.80 % of base)
33 : 111896.dasm (3.12 % of base)
33 : 125645.dasm (3.12 % of base)
25 : 23401.dasm (3.51 % of base)
22 : 20953.dasm (2.10 % of base)
17 : 217702.dasm (0.56 % of base)
17 : 138161.dasm (4.01 % of base)
17 : 140500.dasm (1.95 % of base)
16 : 6897.dasm (1.07 % of base)
12 : 183647.dasm (2.38 % of base)
12 : 198099.dasm (0.92 % of base)
12 : 215389.dasm (2.38 % of base)
12 : 73932.dasm (1.87 % of base)
11 : 232207.dasm (5.91 % of base)
11 : 50714.dasm (0.31 % of base)
9 : 219569.dasm (1.55 % of base)
9 : 227192.dasm (3.31 % of base)
9 : 227193.dasm (3.31 % of base)
8 : 196830.dasm (0.49 % of base)
8 : 22183.dasm (1.06 % of base)
Top file improvements (bytes):
-85 : 74617.dasm (-2.38 % of base)
-85 : 74659.dasm (-2.38 % of base)
-70 : 73877.dasm (-6.72 % of base)
-58 : 85078.dasm (-4.47 % of base)
-34 : 230910.dasm (-5.59 % of base)
-34 : 84959.dasm (-5.57 % of base)
-31 : 179177.dasm (-0.72 % of base)
-26 : 226942.dasm (-20.47 % of base)
-26 : 231425.dasm (-4.73 % of base)
-24 : 222943.dasm (-4.11 % of base)
-24 : 179561.dasm (-5.74 % of base)
-24 : 189238.dasm (-2.54 % of base)
-24 : 189620.dasm (-2.75 % of base)
-24 : 231738.dasm (-5.74 % of base)
-23 : 22065.dasm (-11.33 % of base)
-22 : 71840.dasm (-3.25 % of base)
-22 : 25158.dasm (-4.64 % of base)
-21 : 135715.dasm (-0.90 % of base)
-21 : 23429.dasm (-2.13 % of base)
-20 : 178852.dasm (-15.75 % of base)
73 total files with Code Size differences (36 improved, 37 regressed), 20 unchanged.
Top method regressions (bytes):
198 (4.80 % of base) : 58113.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
33 (3.12 % of base) : 111896.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
33 (3.12 % of base) : 125645.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
25 (3.51 % of base) : 23401.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
22 (2.10 % of base) : 20953.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
17 (4.01 % of base) : 138161.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:SetSlotUnassigned(int,byref):this (FullOpts)
17 (1.95 % of base) : 140500.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
17 (0.56 % of base) : 217702.dasm - System.Diagnostics.Process:StartWithCreateProcess(System.Diagnostics.ProcessStartInfo):ubyte:this (FullOpts)
16 (1.07 % of base) : 6897.dasm - System.Text.StringBuilder:Replace(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,int):System.Text.StringBuilder:this (FullOpts)
12 (0.92 % of base) : 198099.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)
12 (2.38 % of base) : 183647.dasm - System.Configuration.ClientSettingsStore:ReadSettingsFromFile(System.String,System.String,ubyte):System.Collections.IDictionary (FullOpts)
12 (2.38 % of base) : 215389.dasm - System.Configuration.ClientSettingsStore:ReadSettingsFromFile(System.String,System.String,ubyte):System.Collections.IDictionary (FullOpts)
12 (1.87 % of base) : 73932.dasm - System.Data.BinaryNode:ResultSqlType(int,int,int):int (FullOpts)
11 (0.31 % of base) : 50714.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol:CheckModifiers(ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
11 (5.91 % of base) : 232207.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
9 (1.55 % of base) : 219569.dasm - System.DirectoryServices.AccountManagement.PrincipalContext:.ctor(int,System.String,System.String,int,System.String,System.String):this (FullOpts)
9 (3.31 % of base) : 227193.dasm - System.IO.Pipelines.Pipe:CancelPendingFlush():this (FullOpts)
9 (3.31 % of base) : 227192.dasm - System.IO.Pipelines.Pipe:CancelPendingRead():this (FullOpts)
8 (0.49 % of base) : 196830.dasm - Microsoft.VisualBasic.CompilerServices.StringType:StrLikeText(System.String,System.String):ubyte (FullOpts)
8 (1.06 % of base) : 22183.dasm - System.TimeZoneInfo:TryGetEndOfDstIfYearStartWithDst(int,System.TimeSpan,System.TimeZoneInfo,byref):ubyte (FullOpts)
Top method improvements (bytes):
-85 (-2.38 % of base) : 74659.dasm - System.Data.RBTree`1[int]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-85 (-2.38 % of base) : 74617.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-70 (-6.72 % of base) : 73877.dasm - System.Data.Select:AnalyzeExpression(System.Data.BinaryNode):this (FullOpts)
-58 (-4.47 % of base) : 85078.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
-34 (-5.59 % of base) : 230910.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
-34 (-5.57 % of base) : 84959.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
-31 (-0.72 % of base) : 179177.dasm - System.Globalization.FormatProvider+Number:NumberToStringFormat(byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
-26 (-4.73 % of base) : 231425.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
-26 (-20.47 % of base) : 226942.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
-24 (-5.74 % of base) : 179561.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-24 (-5.74 % of base) : 231738.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-24 (-4.11 % of base) : 222943.dasm - System.Net.Http.AuthenticationHelper+DigestResponse:GetNextValue(System.String,int,ubyte,byref):System.String (FullOpts)
-24 (-2.75 % of base) : 189620.dasm - System.Runtime.Serialization.Json.ReflectionJsonClassWriter:ReflectionWriteMembers(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.DataContracts.ClassDataContract,System.Runtime.Serialization.DataContracts.ClassDataContract,int,System.Xml.XmlDictionaryString[]):int:this (FullOpts)
-24 (-2.54 % of base) : 189238.dasm - System.Runtime.Serialization.ReflectionXmlClassWriter:ReflectionWriteMembers(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.DataContracts.ClassDataContract,System.Runtime.Serialization.DataContracts.ClassDataContract,int,System.Xml.XmlDictionaryString[]):int:this (FullOpts)
-23 (-11.33 % of base) : 22065.dasm - System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
-22 (-4.64 % of base) : 25158.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
-22 (-3.25 % of base) : 71840.dasm - System.Data.Common.DataAdapter:Fill(System.Data.DataTable[],System.Data.IDataReader,int,int):int:this (FullOpts)
-21 (-0.90 % of base) : 135715.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[Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyData[System.__Canon,System.__Canon]],int):this (FullOpts)
-21 (-2.13 % of base) : 23429.dasm - System.Threading.PortableThreadPool+WaitThread:ProcessRemovals():int:this (FullOpts)
-20 (-15.75 % of base) : 178852.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
Top method regressions (percentages):
3 (12.50 % of base) : 75902.dasm - System.Security.Cryptography.SHA1CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
3 (12.50 % of base) : 75933.dasm - System.Security.Cryptography.SHA256CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
3 (12.50 % of base) : 75964.dasm - System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
3 (12.50 % of base) : 75995.dasm - System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
3 (8.57 % of base) : 201008.dasm - System.Diagnostics.Eventing.Reader.EventLogWatcher:set_Enabled(ubyte):this (FullOpts)
3 (8.57 % of base) : 75491.dasm - System.Security.Cryptography.KeyedHashAlgorithm:Dispose(ubyte):this (FullOpts)
6 (7.06 % of base) : 18577.dasm - System.Threading.Tasks.Task`1[int]:.ctor(ubyte,int,int,System.Threading.CancellationToken):this (FullOpts)
6 (7.06 % of base) : 19134.dasm - System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]:.ctor(ubyte,System.Threading.Tasks.VoidTaskResult,int,System.Threading.CancellationToken):this (FullOpts)
6 (6.98 % of base) : 17736.dasm - System.Threading.Tasks.Task`1[ubyte]:.ctor(ubyte,ubyte,int,System.Threading.CancellationToken):this (FullOpts)
6 (6.45 % of base) : 21566.dasm - System.Threading.Tasks.Task`1[long]:.ctor(ubyte,long,int,System.Threading.CancellationToken):this (FullOpts)
6 (6.38 % of base) : 19273.dasm - System.Threading.Tasks.Task`1[System.__Canon]:.ctor(ubyte,System.__Canon,int,System.Threading.CancellationToken):this (FullOpts)
11 (5.91 % of base) : 232207.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
3 (5.26 % of base) : 76173.dasm - System.Security.Cryptography.UniversalCryptoDecryptor:Dispose(ubyte):this (FullOpts)
3 (5.08 % of base) : 197562.dasm - Microsoft.VisualBasic.CompilerServices.StringType:StrLikeCompareBinary(ubyte,ubyte,ushort,ushort):ubyte (FullOpts)
3 (4.84 % of base) : 169842.dasm - System.Net.Mail.AlternateView:Dispose(ubyte):this (FullOpts)
198 (4.80 % of base) : 58113.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
3 (4.48 % of base) : 71629.dasm - System.Data.SqlTypes.SqlBoolean:Equals(System.Data.SqlTypes.SqlBoolean):ubyte:this (FullOpts)
3 (4.48 % of base) : 231488.dasm - System.Net.WebSockets.HttpWebSocket:ThrowIfConnectionAborted(System.IO.Stream,ubyte) (FullOpts)
17 (4.01 % of base) : 138161.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:SetSlotUnassigned(int,byref):this (FullOpts)
25 (3.51 % of base) : 23401.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
Top method improvements (percentages):
-26 (-20.47 % of base) : 226942.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
-20 (-15.75 % of base) : 178852.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-23 (-11.33 % of base) : 22065.dasm - System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
-8 (-7.84 % of base) : 209248.dasm - System.Transactions.CheapUnfairReaderWriterLock:EnterWriteLock():this (FullOpts)
-11 (-7.69 % of base) : 74403.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
-4 (-7.69 % of base) : 233957.dasm - System.Runtime.InteropServices.ComEventsMethod:Remove(System.Runtime.InteropServices.ComEventsMethod,System.Runtime.InteropServices.ComEventsMethod):System.Runtime.InteropServices.ComEventsMethod (FullOpts)
-4 (-7.27 % of base) : 87841.dasm - System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
-11 (-7.19 % of base) : 185163.dasm - System.Configuration.Internal.WriteFileContext:ReplaceFile(System.String,System.String):this (FullOpts)
-4 (-7.14 % of base) : 180395.dasm - System.Xml.Linq.XObject:SkipNotify():ubyte:this (FullOpts)
-4 (-6.78 % of base) : 180169.dasm - System.Xml.Linq.XObject:get_BaseUri():System.String:this (FullOpts)
-9 (-6.77 % of base) : 216845.dasm - System.Configuration.Internal.WriteFileContext:ReplaceFile(System.String,System.String) (FullOpts)
-70 (-6.72 % of base) : 73877.dasm - System.Data.Select:AnalyzeExpression(System.Data.BinaryNode):this (FullOpts)
-16 (-6.37 % of base) : 140490.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)
-4 (-6.15 % of base) : 233651.dasm - System.Runtime.InteropServices.ComEventsSink:Remove(System.Runtime.InteropServices.ComEventsSink,System.Runtime.InteropServices.ComEventsSink):System.Runtime.InteropServices.ComEventsSink (FullOpts)
-24 (-5.74 % of base) : 179561.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-24 (-5.74 % of base) : 231738.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
-34 (-5.59 % of base) : 230910.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
-34 (-5.57 % of base) : 84959.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
-11 (-5.56 % of base) : 74402.dasm - System.Data.ExpressionParser:ScanName(ushort,ushort,System.String):this (FullOpts)
-14 (-5.32 % of base) : 195712.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
libraries.pmi.windows.x86.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 49253151 (overridden on cmd)
Total bytes of diff: 49251971 (overridden on cmd)
Total bytes of delta: -1180 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
75 : 148749.dasm (7.49 % of base)
75 : 110570.dasm (7.49 % of base)
70 : 270996.dasm (2.36 % of base)
63 : 38799.dasm (5.69 % of base)
58 : 49685.dasm (5.12 % of base)
52 : 36913.dasm (6.39 % of base)
49 : 36970.dasm (5.65 % of base)
44 : 36708.dasm (3.14 % of base)
42 : 36860.dasm (6.40 % of base)
42 : 36883.dasm (6.24 % of base)
42 : 36889.dasm (6.01 % of base)
42 : 36856.dasm (6.43 % of base)
41 : 185541.dasm (2.05 % of base)
41 : 213240.dasm (1.78 % of base)
40 : 61448.dasm (1.34 % of base)
39 : 209718.dasm (1.61 % of base)
37 : 36852.dasm (3.00 % of base)
35 : 212484.dasm (5.30 % of base)
34 : 78545.dasm (2.07 % of base)
33 : 36884.dasm (4.44 % of base)
Top file improvements (bytes):
-210 : 21394.dasm (-26.02 % of base)
-196 : 191230.dasm (-28.12 % of base)
-85 : 70958.dasm (-2.38 % of base)
-85 : 71019.dasm (-2.38 % of base)
-75 : 21344.dasm (-12.98 % of base)
-71 : 36706.dasm (-2.61 % of base)
-66 : 21343.dasm (-24.72 % of base)
-61 : 21342.dasm (-14.81 % of base)
-51 : 212497.dasm (-1.22 % of base)
-50 : 71190.dasm (-3.98 % of base)
-43 : 165420.dasm (-10.31 % of base)
-39 : 40903.dasm (-2.24 % of base)
-37 : 107343.dasm (-1.10 % of base)
-36 : 228803.dasm (-16.51 % of base)
-34 : 258235.dasm (-4.52 % of base)
-33 : 186555.dasm (-42.31 % of base)
-33 : 201925.dasm (-3.85 % of base)
-33 : 279591.dasm (-40.74 % of base)
-33 : 279611.dasm (-31.43 % of base)
-33 : 279631.dasm (-40.74 % of base)
74 total files with Code Size differences (37 improved, 37 regressed), 20 unchanged.
Top method regressions (bytes):
75 (7.49 % of base) : 148749.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
75 (7.49 % of base) : 110570.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
70 (2.36 % of base) : 270996.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (FullOpts)
63 (5.69 % of base) : 38799.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:RewriteNoPiaEventAssignmentOperator(Microsoft.CodeAnalysis.CSharp.BoundEventAssignmentOperator,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
58 (5.12 % of base) : 49685.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getFormatAndCloseBrace|434_1(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)
52 (6.39 % of base) : 36913.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitFunctionPointerInvocation(Microsoft.CodeAnalysis.CSharp.BoundFunctionPointerInvocation):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
49 (5.65 % of base) : 36970.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitObjectElementInitializer>g__visitMemberInitializer|169_0(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator,ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
44 (3.14 % of base) : 36708.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArrayAccess(Microsoft.CodeAnalysis.CSharp.BoundArrayAccess):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
42 (6.01 % of base) : 36889.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitDynamicIndexerAccess(Microsoft.CodeAnalysis.CSharp.BoundDynamicIndexerAccess):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
42 (6.24 % of base) : 36883.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitDynamicMemberAccess(Microsoft.CodeAnalysis.CSharp.BoundDynamicMemberAccess):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
42 (6.43 % of base) : 36856.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitPointerIndirectionOperator(Microsoft.CodeAnalysis.CSharp.BoundPointerIndirectionOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
42 (6.40 % of base) : 36860.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitRefValueOperator(Microsoft.CodeAnalysis.CSharp.BoundRefValueOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
41 (2.05 % of base) : 185541.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.AttributePresenceFilterNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
41 (1.78 % of base) : 213240.dasm - Microsoft.Build.Evaluation.Project+ProjectImpl:BuildGlobResultFromIncludeItem(Microsoft.Build.Construction.ProjectItemElement,System.Collections.Generic.IReadOnlyDictionary`2[System.String,Microsoft.Build.Evaluation.Project+ProjectImpl+CumulativeRemoveElementData]):Microsoft.Build.Evaluation.GlobResult:this (FullOpts)
40 (1.34 % of base) : 61448.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:ComputeImplementationForInterfaceMember(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,byref):Microsoft.CodeAnalysis.CSharp.Symbol (FullOpts)
39 (1.61 % of base) : 209718.dasm - Microsoft.Build.Execution.ProjectInstance:Initialize(Microsoft.Build.Construction.ProjectRootElement,System.Collections.Generic.IDictionary`2[System.String,System.String],System.String,System.String,int,Microsoft.Build.Execution.BuildParameters,Microsoft.Build.BackEnd.Logging.ILoggingService,Microsoft.Build.Framework.BuildEventContext,Microsoft.Build.BackEnd.SdkResolution.ISdkResolverService,int,System.Nullable`1[int],Microsoft.Build.Evaluation.Context.EvaluationContext):this (FullOpts)
37 (3.00 % of base) : 36852.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitBadExpression(Microsoft.CodeAnalysis.CSharp.BoundBadExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
35 (5.30 % of base) : 212484.dasm - Microsoft.Build.Shared.FileMatcher:IsMatch(System.ReadOnlySpan`1[ushort],System.String):ubyte (FullOpts)
34 (2.07 % of base) : 78545.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BuildAndVerifyUsingInfo(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.ValueTuple`3[Microsoft.CodeAnalysis.VisualBasic.BoundRValuePlaceholder,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.BoundExpression]],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
33 (4.44 % of base) : 36884.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitDynamicInvocation(Microsoft.CodeAnalysis.CSharp.BoundDynamicInvocation):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
Top method improvements (bytes):
-210 (-26.02 % of base) : 21394.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (FullOpts)
-196 (-28.12 % of base) : 191230.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
-85 (-2.38 % of base) : 70958.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-85 (-2.38 % of base) : 71019.dasm - System.Data.RBTree`1[ubyte]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-75 (-12.98 % of base) : 21344.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:isInteger(System.Object):ubyte (FullOpts)
-71 (-2.61 % of base) : 36706.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:BestTypeForLambdaReturns(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte]],Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Conversions,byref):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations (FullOpts)
-66 (-24.72 % of base) : 21343.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:isNumber(System.Object):ubyte (FullOpts)
-61 (-14.81 % of base) : 21342.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:toFormattedString(System.String,System.Object):System.String (FullOpts)
-51 (-1.22 % of base) : 212497.dasm - Microsoft.Build.Shared.FileMatcher:GetFilesImplementation(System.String,System.String,System.Collections.Generic.List`1[System.String]):System.ValueTuple`3[System.String[],int,System.String]:this (FullOpts)
-50 (-3.98 % of base) : 71190.dasm - System.Data.Select:AnalyzeExpression(System.Data.BinaryNode):this (FullOpts)
-43 (-10.31 % of base) : 165420.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
-39 (-2.24 % of base) : 40903.dasm - Microsoft.CodeAnalysis.CSharp.CSharpSyntaxRewriter:VisitMethodDeclaration(Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax):Microsoft.CodeAnalysis.SyntaxNode:this (FullOpts)
-37 (-1.10 % of base) : 107343.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+DocumentationCommentCompiler+IncludeElementExpander:RewriteIncludeElement(System.Xml.Linq.XElement,System.String,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax,byref):System.Xml.Linq.XNode[]:this (FullOpts)
-36 (-16.51 % of base) : 228803.dasm - System.ComponentModel.Composition.Hosting.ScopingExtensions:ContainsPartMetadata[int](System.ComponentModel.Composition.Primitives.ComposablePartDefinition,System.String,int):ubyte (FullOpts)
-34 (-4.52 % of base) : 258235.dasm - System.Net.Http.AuthenticationHelper+DigestResponse:GetNextValue(System.String,int,ubyte,byref):System.String (FullOpts)
-33 (-42.31 % of base) : 186555.dasm - ILCompiler.IBC.IBCProfileParser+IBCBlobKey:Equals(System.Object):ubyte:this (FullOpts)
-33 (-3.85 % of base) : 201925.dasm - Internal.TypeSystem.Ecma.EcmaMethod:GetImportAttributesFromBestFitMappingAttribute(System.Reflection.Metadata.CustomAttributeHandleCollection):short:this (FullOpts)
-33 (-40.74 % of base) : 279631.dasm - System.Speech.Synthesis.TtsEngine.ContourPoint:Equals(System.Object):ubyte:this (FullOpts)
-33 (-31.43 % of base) : 279611.dasm - System.Speech.Synthesis.TtsEngine.FragmentState:Equals(System.Object):ubyte:this (FullOpts)
-33 (-40.74 % of base) : 279591.dasm - System.Speech.Synthesis.TtsEngine.SpeechEventInfo:Equals(System.Object):ubyte:this (FullOpts)
Top method regressions (percentages):
3 (12.50 % of base) : 181001.dasm - System.Security.Cryptography.SHA1CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
3 (12.50 % of base) : 181033.dasm - System.Security.Cryptography.SHA256CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
3 (12.50 % of base) : 181065.dasm - System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
3 (12.50 % of base) : 181097.dasm - System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
14 (11.76 % of base) : 162523.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
14 (11.76 % of base) : 206692.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
14 (11.76 % of base) : 124467.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
3 (8.57 % of base) : 237568.dasm - System.Diagnostics.Eventing.Reader.EventLogWatcher:set_Enabled(ubyte):this (FullOpts)
3 (8.57 % of base) : 180236.dasm - System.Security.Cryptography.HMAC:Dispose(ubyte):this (FullOpts)
3 (8.57 % of base) : 180445.dasm - System.Security.Cryptography.KeyedHashAlgorithm:Dispose(ubyte):this (FullOpts)
20 (7.49 % of base) : 36857.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitPointerElementAccess(Microsoft.CodeAnalysis.CSharp.BoundPointerElementAccess):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
75 (7.49 % of base) : 148749.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
75 (7.49 % of base) : 110570.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
14 (7.37 % of base) : 295838.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
15 (7.18 % of base) : 36572.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetLvalueResultType(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations):this (FullOpts)
10 (6.85 % of base) : 274267.dasm - System.Numerics.BigInteger:op_Multiply(System.Numerics.BigInteger,System.Numerics.BigInteger):System.Numerics.BigInteger (FullOpts)
10 (6.58 % of base) : 274183.dasm - System.Numerics.BigInteger:Multiply(System.Numerics.BigInteger,System.Numerics.BigInteger):System.Numerics.BigInteger (FullOpts)
42 (6.43 % of base) : 36856.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitPointerIndirectionOperator(Microsoft.CodeAnalysis.CSharp.BoundPointerIndirectionOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
42 (6.40 % of base) : 36860.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitRefValueOperator(Microsoft.CodeAnalysis.CSharp.BoundRefValueOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
52 (6.39 % of base) : 36913.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitFunctionPointerInvocation(Microsoft.CodeAnalysis.CSharp.BoundFunctionPointerInvocation):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
Top method improvements (percentages):
-33 (-42.31 % of base) : 186555.dasm - ILCompiler.IBC.IBCProfileParser+IBCBlobKey:Equals(System.Object):ubyte:this (FullOpts)
-33 (-40.74 % of base) : 279631.dasm - System.Speech.Synthesis.TtsEngine.ContourPoint:Equals(System.Object):ubyte:this (FullOpts)
-33 (-40.74 % of base) : 279591.dasm - System.Speech.Synthesis.TtsEngine.SpeechEventInfo:Equals(System.Object):ubyte:this (FullOpts)
-33 (-31.43 % of base) : 279611.dasm - System.Speech.Synthesis.TtsEngine.FragmentState:Equals(System.Object):ubyte:this (FullOpts)
-196 (-28.12 % of base) : 191230.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
-30 (-26.79 % of base) : 191928.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.TypeTable+KeyPair`2[ubyte,System.Nullable`1[int]]:Equals(System.Object):ubyte:this (FullOpts)
-30 (-26.79 % of base) : 144730.dasm - Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+IdOfIncompleteAction:Equals(System.Object):ubyte:this (FullOpts)
-210 (-26.02 % of base) : 21394.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (FullOpts)
-66 (-24.72 % of base) : 21343.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:isNumber(System.Object):ubyte (FullOpts)
-28 (-23.73 % of base) : 233904.dasm - System.Data.Odbc.OdbcParameter:GetParameterScale(System.Object):ubyte:this (FullOpts)
-26 (-20.63 % of base) : 281911.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
-12 (-17.39 % of base) : 177130.dasm - System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
-21 (-16.80 % of base) : 21358.dasm - Microsoft.FSharp.Core.PrintfImpl+Integer:eliminateNative(System.Object):System.Object (FullOpts)
-36 (-16.51 % of base) : 228803.dasm - System.ComponentModel.Composition.Hosting.ScopingExtensions:ContainsPartMetadata[int](System.ComponentModel.Composition.Primitives.ComposablePartDefinition,System.String,int):ubyte (FullOpts)
-20 (-15.87 % of base) : 274154.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-21 (-15.11 % of base) : 279645.dasm - System.Speech.Synthesis.TtsEngine.ProsodyNumber:Equals(System.Object):ubyte:this (FullOpts)
-27 (-14.84 % of base) : 144723.dasm - Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+EventUID:Equals(System.Object):ubyte:this (FullOpts)
-61 (-14.81 % of base) : 21342.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:toFormattedString(System.String,System.Object):System.String (FullOpts)
-22 (-14.19 % of base) : 202920.dasm - R2RDump.Disassembler:TryParseAbsoluteAddress(System.String,byref,byref,byref):ubyte:this (FullOpts)
-26 (-13.98 % of base) : 191924.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.TypeTable+KeyPair`2[System.__Canon,System.Nullable`1[int]]:Equals(System.Object):ubyte:this (FullOpts)
libraries_tests.run.windows.x86.Release.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 185471045 (overridden on cmd)
Total bytes of diff: 185467756 (overridden on cmd)
Total bytes of delta: -3289 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
158 : 407074.dasm (3.36 % of base)
130 : 84083.dasm (3.79 % of base)
127 : 78143.dasm (2.46 % of base)
116 : 406710.dasm (3.13 % of base)
116 : 573705.dasm (16.25 % of base)
110 : 84079.dasm (3.21 % of base)
95 : 281976.dasm (3.17 % of base)
92 : 570108.dasm (8.55 % of base)
90 : 82787.dasm (4.41 % of base)
89 : 479519.dasm (2.72 % of base)
86 : 617764.dasm (6.09 % of base)
84 : 478453.dasm (4.12 % of base)
84 : 618047.dasm (2.53 % of base)
79 : 577680.dasm (3.10 % of base)
72 : 56360.dasm (1.76 % of base)
70 : 576394.dasm (1.99 % of base)
67 : 334103.dasm (3.29 % of base)
67 : 341776.dasm (3.29 % of base)
66 : 542547.dasm (2.81 % of base)
66 : 592035.dasm (1.89 % of base)
Top file improvements (bytes):
-163 : 578640.dasm (-3.76 % of base)
-135 : 56966.dasm (-3.43 % of base)
-121 : 572444.dasm (-5.78 % of base)
-117 : 406650.dasm (-1.77 % of base)
-108 : 57195.dasm (-4.85 % of base)
-100 : 269808.dasm (-2.55 % of base)
-96 : 56822.dasm (-1.76 % of base)
-85 : 221946.dasm (-2.38 % of base)
-85 : 221650.dasm (-2.38 % of base)
-83 : 585488.dasm (-4.29 % of base)
-82 : 84077.dasm (-2.60 % of base)
-78 : 577683.dasm (-1.25 % of base)
-77 : 51283.dasm (-2.16 % of base)
-71 : 577209.dasm (-1.83 % of base)
-70 : 272212.dasm (-2.07 % of base)
-68 : 597898.dasm (-1.20 % of base)
-66 : 504493.dasm (-3.48 % of base)
-64 : 585564.dasm (-3.83 % of base)
-63 : 549394.dasm (-3.68 % of base)
-63 : 83198.dasm (-1.68 % of base)
84 total files with Code Size differences (43 improved, 41 regressed), 20 unchanged.
Top method regressions (bytes):
158 (3.36 % of base) : 407074.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateTypeDefTableMod():this (Tier0-FullOpts)
130 (3.79 % of base) : 84083.dasm - Microsoft.Interop.StatelessMarshallerShapeHelper+LinearCollection+<>c__DisplayClass6_0:<GetManagedValuesDestination>b__0(Microsoft.CodeAnalysis.IMethodSymbol):ubyte:this (Tier1)
127 (2.46 % of base) : 78143.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetAttribute(Microsoft.CodeAnalysis.CSharp.BoundAttribute,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:this (Tier1)
116 (16.25 % of base) : 573705.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckConstraintLanguageVersionAndRuntimeSupportForOperator(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
116 (3.13 % of base) : 406710.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateAssemblyRefTable():this (Tier0-FullOpts)
110 (3.21 % of base) : 84079.dasm - Microsoft.Interop.StatelessMarshallerShapeHelper+LinearCollection+<>c__DisplayClass2_0:<GetManagedValuesSource>b__0(Microsoft.CodeAnalysis.IMethodSymbol):ubyte:this (Tier1)
95 (3.17 % of base) : 281976.dasm - System.IO.Tests.Directory_GetFileSystemEntries_str_str:SearchPatternDotIsStar():this (Tier1)
92 (8.55 % of base) : 570108.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ReportDiagnosticsIfObsolete(Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.SyntaxNodeOrToken,ubyte):this (Tier1)
90 (4.41 % of base) : 82787.dasm - Microsoft.Interop.StatefulMarshallerShapeHelper+<>c__DisplayClass4_0:<GetToManagedMethod>b__0(Microsoft.CodeAnalysis.IMethodSymbol):ubyte:this (Tier1)
89 (2.72 % of base) : 479519.dasm - System.Security.Cryptography.ECDsaCng:GenerateKey(System.Security.Cryptography.ECCurve):this (Tier1)
86 (6.09 % of base) : 617764.dasm - System.Threading.Tests.AsyncLocalTests+<AddUpdateAndRemoveManyLocals_ReferenceType>d__14:MoveNext():this (Tier0-FullOpts)
84 (4.12 % of base) : 478453.dasm - System.Text.UnicodeEncoding:GetBytes(uint,int,uint,int,System.Text.EncoderNLS):int:this (Tier1)
84 (2.53 % of base) : 618047.dasm - System.Threading.Tests.AsyncLocalTests+<AddUpdateAndRemoveManyLocals_ReferenceType_NotifyOnChange>d__15:MoveNext():this (Tier0-FullOpts)
79 (3.10 % of base) : 577680.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:DeclareLocal(Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol):this (Tier1)
72 (1.76 % of base) : 56360.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindFieldAccess(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
70 (1.99 % of base) : 576394.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitStaticCallExpression(Microsoft.CodeAnalysis.CSharp.BoundCall,int):this (Tier1)
67 (3.29 % of base) : 334103.dasm - System.Text.UnicodeEncoding:GetBytes(uint,int,uint,int,System.Text.EncoderNLS):int:this (Tier1)
67 (3.29 % of base) : 341776.dasm - System.Text.UnicodeEncoding:GetBytes(uint,int,uint,int,System.Text.EncoderNLS):int:this (Tier1)
66 (7.07 % of base) : 159750.dasm - Microsoft.Extensions.Options.Generators.Emitter:EmitRangeAttribute(System.String,System.String,System.String,System.String,ubyte):this (Tier1)
66 (2.81 % of base) : 542547.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:ReadPartialSegmentSizeOne(ubyte,int,System.String) (Tier0-FullOpts)
Top method improvements (bytes):
-163 (-3.76 % of base) : 578640.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindConstantPatternWithFallbackToTypePattern(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundPattern:this (Tier1)
-135 (-3.43 % of base) : 56966.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindElementAccessCore(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
-121 (-5.78 % of base) : 572444.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol:CalculateUseSiteDiagnostic(byref):ubyte:this (Tier1)
-117 (-1.77 % of base) : 406650.dasm - System.Reflection.Metadata.Decoding.Tests.SignatureDecoderTests:SimpleSignatureProviderCoverage():this (Tier0-FullOpts)
-108 (-4.85 % of base) : 57195.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol:CalculateUseSiteDiagnostic(byref):ubyte:this (Tier1)
-100 (-2.55 % of base) : 269808.dasm - System.Globalization.Tests.GraphemeBreakTest:RunStringInfoTestCase(System.String,System.Range[]) (Tier0-FullOpts)
-96 (-1.76 % of base) : 56822.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindVariableDeclaration(Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclaratorSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration:this (Tier1)
-85 (-2.38 % of base) : 221650.dasm - System.Data.RBTree`1[int]:RBDeleteFixup(int,int,int,int):int:this (Tier0-FullOpts)
-85 (-2.38 % of base) : 221946.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (Tier0-FullOpts)
-83 (-4.29 % of base) : 585488.dasm - System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitExpressionConditional|7(System.Text.RegularExpressions.RegexNode):this (Tier1)
-82 (-2.60 % of base) : 84077.dasm - Microsoft.Interop.StatelessMarshallerShapeHelper+LinearCollection+<>c__DisplayClass0_0:<AllocateContainerForUnmanagedElements>b__0(Microsoft.CodeAnalysis.IMethodSymbol):ubyte:this (Tier1)
-78 (-1.25 % of base) : 577683.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitLocalDeclaration(Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
-77 (-2.16 % of base) : 51283.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:AreParameterAnnotationsCompatible(ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int,ubyte):ubyte (Tier1)
-71 (-1.83 % of base) : 577209.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:DefineLocal(Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol,Microsoft.CodeAnalysis.SyntaxNode):Microsoft.CodeAnalysis.CodeGen.LocalDefinition:this (Tier1)
-70 (-2.07 % of base) : 272212.dasm - System.Globalization.Tests.GraphemeBreakTest:RunStringInfoTestCase(System.String,System.Range[]) (Tier0-FullOpts)
-68 (-1.20 % of base) : 597898.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:FindEntryPoint(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Threading.CancellationToken,byref):Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:this (Tier0-FullOpts)
-66 (-3.48 % of base) : 504493.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<ReadSimpleGenericIList>d__154:MoveNext():this (Tier0-FullOpts)
-64 (-3.83 % of base) : 585564.dasm - System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitBackreferenceConditional|6(System.Text.RegularExpressions.RegexNode):this (Tier1)
-63 (-1.68 % of base) : 83198.dasm - Microsoft.Interop.ManualTypeMarshallingHelper:GetStatefulMarshallerDataForType(Microsoft.CodeAnalysis.ITypeSymbol,int,Microsoft.CodeAnalysis.ITypeSymbol,ubyte,Microsoft.CodeAnalysis.Compilation,System.Func`2[Microsoft.CodeAnalysis.ITypeSymbol,Microsoft.Interop.MarshallingInfo]):System.Nullable`1[Microsoft.Interop.CustomTypeMarshallerData] (Tier1)
-63 (-3.68 % of base) : 549394.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<ReadSimpleGenericIList>d__193:MoveNext():this (Tier0-FullOpts)
Top method regressions (percentages):
116 (16.25 % of base) : 573705.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckConstraintLanguageVersionAndRuntimeSupportForOperator(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
7 (12.07 % of base) : 570185.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:get_HasSetsRequiredMembers():ubyte:this (Tier1)
52 (12.01 % of base) : 153940.dasm - Microsoft.CodeAnalysis.CSharp.LazyMissingNonNullTypesContextDiagnosticInfo:GetRawDiagnosticInfos(Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.DiagnosticInfo]) (Tier1)
20 (11.43 % of base) : 574837.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:MayRequireTracking(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol):ubyte:this (Tier1)
36 (10.81 % of base) : 579948.dasm - Microsoft.Cci.MetadataWriter:GetMetadataName(Microsoft.Cci.INamedTypeReference,int):System.String (Tier1)
7 (10.61 % of base) : 374568.dasm - System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
7 (10.61 % of base) : 495778.dasm - System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
7 (10.61 % of base) : 592571.dasm - System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
18 (10.29 % of base) : 156469.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:MayRequireTracking(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol):ubyte:this (Tier1)
59 (8.65 % of base) : 575014.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:WriteConsideredUse(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
3 (8.57 % of base) : 482538.dasm - System.Security.Cryptography.HMAC:Dispose(ubyte):this (Tier1)
92 (8.55 % of base) : 570108.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ReportDiagnosticsIfObsolete(Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.SyntaxNodeOrToken,ubyte):this (Tier1)
22 (8.49 % of base) : 330330.dasm - System.Net.Http.Headers.RangeItemHeaderValue:.ctor(System.Nullable`1[long],System.Nullable`1[long]):this (Tier1)
50 (7.55 % of base) : 114832.dasm - Microsoft.Extensions.Hosting.HostFactoryResolver+HostingListener:OnNext(System.Collections.Generic.KeyValuePair`2[System.String,System.Object]):this (Tier1)
14 (7.37 % of base) : 102465.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (Tier0-FullOpts)
66 (7.07 % of base) : 159750.dasm - Microsoft.Extensions.Options.Generators.Emitter:EmitRangeAttribute(System.String,System.String,System.String,System.String,ubyte):this (Tier1)
8 (6.84 % of base) : 51203.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
8 (6.84 % of base) : 580213.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
8 (6.84 % of base) : 81656.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
7 (6.80 % of base) : 233870.dasm - System.Diagnostics.Activity:set_Current(System.Diagnostics.Activity) (Tier1)
Top method improvements (percentages):
-29 (-46.03 % of base) : 182222.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-29 (-46.03 % of base) : 302360.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-29 (-46.03 % of base) : 323951.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-29 (-46.03 % of base) : 375828.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-29 (-46.03 % of base) : 462141.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-29 (-46.03 % of base) : 563140.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-29 (-46.03 % of base) : 236886.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-29 (-46.03 % of base) : 555160.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
-29 (-46.03 % of base) : 558830.dasm - System.UInt32:Equals(System.Object):ubyte:this (Tier1)
-32 (-45.71 % of base) : 397645.dasm - System.UInt16:Equals(System.Object):ubyte:this (Tier1)
-30 (-44.12 % of base) : 152297.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)
-30 (-44.12 % of base) : 131777.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)
-30 (-44.12 % of base) : 44911.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)
-30 (-44.12 % of base) : 71182.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)
-30 (-44.12 % of base) : 145215.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)
-30 (-44.12 % of base) : 555469.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)
-30 (-44.12 % of base) : 398054.dasm - System.Byte:Equals(System.Object):ubyte:this (Tier1)
-30 (-44.12 % of base) : 558734.dasm - System.Byte:Equals(System.Object):ubyte:this (Tier1)
-30 (-44.12 % of base) : 558738.dasm - System.Char:Equals(System.Object):ubyte:this (Tier1)
-30 (-44.12 % of base) : 558811.dasm - System.Int16:Equals(System.Object):ubyte:this (Tier1)
librariestestsnotieredcompilation.run.windows.x86.Release.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 103778092 (overridden on cmd)
Total bytes of diff: 103777994 (overridden on cmd)
Total bytes of delta: -98 (-0.00 % of base)
diff is a regression.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
278 : 15948.dasm (5.90 % of base)
254 : 188970.dasm (7.01 % of base)
156 : 189154.dasm (3.33 % of base)
128 : 31412.dasm (8.56 % of base)
86 : 312065.dasm (6.09 % of base)
76 : 312086.dasm (3.06 % of base)
75 : 52503.dasm (7.49 % of base)
75 : 45957.dasm (7.49 % of base)
75 : 54972.dasm (7.49 % of base)
62 : 189193.dasm (1.59 % of base)
62 : 189249.dasm (2.34 % of base)
61 : 105676.dasm (1.99 % of base)
56 : 303444.dasm (1.96 % of base)
55 : 173512.dasm (2.40 % of base)
55 : 188980.dasm (1.99 % of base)
55 : 189296.dasm (1.60 % of base)
55 : 278043.dasm (3.50 % of base)
52 : 149479.dasm (1.65 % of base)
52 : 189173.dasm (1.11 % of base)
50 : 172164.dasm (2.13 % of base)
Top file improvements (bytes):
-202 : 121265.dasm (-25.28 % of base)
-188 : 25514.dasm (-28.53 % of base)
-172 : 268460.dasm (-6.40 % of base)
-117 : 188325.dasm (-1.77 % of base)
-96 : 272687.dasm (-5.02 % of base)
-85 : 94132.dasm (-2.38 % of base)
-85 : 93772.dasm (-2.38 % of base)
-68 : 83390.dasm (-6.18 % of base)
-52 : 251081.dasm (-2.92 % of base)
-52 : 275188.dasm (-2.92 % of base)
-52 : 276498.dasm (-2.92 % of base)
-52 : 251074.dasm (-2.92 % of base)
-51 : 294111.dasm (-7.96 % of base)
-51 : 294112.dasm (-7.74 % of base)
-50 : 93903.dasm (-3.98 % of base)
-43 : 63312.dasm (-10.31 % of base)
-39 : 7814.dasm (-2.24 % of base)
-37 : 304680.dasm (-3.03 % of base)
-34 : 211722.dasm (-1.77 % of base)
-34 : 218499.dasm (-1.71 % of base)
75 total files with Code Size differences (40 improved, 35 regressed), 20 unchanged.
Top method regressions (bytes):
278 (5.90 % of base) : 15948.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
254 (7.01 % of base) : 188970.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateAssemblyRefTable():this (FullOpts)
156 (3.33 % of base) : 189154.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateTypeDefTableMod():this (FullOpts)
128 (8.56 % of base) : 31412.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:VisitIsPatternExpression(Microsoft.CodeAnalysis.CSharp.BoundIsPatternExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
86 (6.09 % of base) : 312065.dasm - System.Threading.Tests.AsyncLocalTests+<AddUpdateAndRemoveManyLocals_ReferenceType>d__14:MoveNext():this (FullOpts)
76 (3.06 % of base) : 312086.dasm - System.Threading.Tests.AsyncLocalTests+<AddUpdateAndRemoveManyLocals_ReferenceType_NotifyOnChange>d__15:MoveNext():this (FullOpts)
75 (7.49 % of base) : 52503.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
75 (7.49 % of base) : 45957.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
75 (7.49 % of base) : 54972.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
62 (1.59 % of base) : 189193.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateTypeDefTable():this (FullOpts)
62 (2.34 % of base) : 189249.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateTypeRefTableMod():this (FullOpts)
61 (1.99 % of base) : 105676.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (FullOpts)
56 (1.96 % of base) : 303444.dasm - System.Text.RegularExpressions.Tests.GetGroupNamesTests:GroupNamesAndNumbers(System.String,System.String,System.String[],int[],System.String[],int):this (FullOpts)
55 (3.50 % of base) : 278043.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArrayAccess(Microsoft.CodeAnalysis.CSharp.BoundArrayAccess):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
55 (1.60 % of base) : 189296.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateGenericParamTable():this (FullOpts)
55 (1.99 % of base) : 188980.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateTypeRefTable():this (FullOpts)
55 (2.40 % of base) : 173512.dasm - XPathTests.Common.Utils:XPathNodesetTest(int,System.String,System.String,XPathTests.Common.XPathResult,System.Xml.XmlNamespaceManager,System.String) (FullOpts)
52 (1.65 % of base) : 149479.dasm - System.Buffers.Text.Tests.TestData+<GeneralIntegerParserTestData>d__124`1[ubyte]:MoveNext():ubyte:this (FullOpts)
52 (1.11 % of base) : 189173.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateFieldDef(System.Reflection.Metadata.MetadataReader,uint,uint,ubyte):this (FullOpts)
50 (2.13 % of base) : 172164.dasm - XmlSerializerTests:XmlMembersMapping_MultipleMembers_XmlAnyElement() (FullOpts)
Top method improvements (bytes):
-202 (-25.28 % of base) : 121265.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (FullOpts)
-188 (-28.53 % of base) : 25514.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
-172 (-6.40 % of base) : 268460.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:AllowSingleSegment(System.String,System.String,int) (FullOpts)
-117 (-1.77 % of base) : 188325.dasm - System.Reflection.Metadata.Decoding.Tests.SignatureDecoderTests:SimpleSignatureProviderCoverage():this (FullOpts)
-96 (-5.02 % of base) : 272687.dasm - System.Text.Json.Tests.Utf8JsonWriterTests:WritePartialHelloWorld(System.Text.Json.JsonWriterOptions):this (FullOpts)
-85 (-2.38 % of base) : 93772.dasm - System.Data.RBTree`1[int]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-85 (-2.38 % of base) : 94132.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
-68 (-6.18 % of base) : 83390.dasm - System.ComponentModel.Composition.Hosting.ScopeExtensionsTests:ContainsMetadata():this (FullOpts)
-52 (-2.92 % of base) : 251074.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<ReadSimpleGenericICollection>d__164:MoveNext():this (FullOpts)
-52 (-2.92 % of base) : 276498.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<ReadSimpleGenericICollection>d__203:MoveNext():this (FullOpts)
-52 (-2.92 % of base) : 251081.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<ReadSimpleGenericIList>d__154:MoveNext():this (FullOpts)
-52 (-2.92 % of base) : 275188.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<ReadSimpleGenericIList>d__193:MoveNext():this (FullOpts)
-51 (-7.74 % of base) : 294112.dasm - System.Text.RegularExpressions.Tests.RegexEnumerateMatchesTests:EnumerateMatches_Lookahead(int):this (FullOpts)
-51 (-7.96 % of base) : 294111.dasm - System.Text.RegularExpressions.Tests.RegexEnumerateMatchesTests:EnumerateMatches_Lookbehind(int):this (FullOpts)
-50 (-3.98 % of base) : 93903.dasm - System.Data.Select:AnalyzeExpression(System.Data.BinaryNode):this (FullOpts)
-43 (-10.31 % of base) : 63312.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
-39 (-2.24 % of base) : 7814.dasm - Microsoft.CodeAnalysis.CSharp.CSharpSyntaxRewriter:VisitMethodDeclaration(Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax):Microsoft.CodeAnalysis.SyntaxNode:this (FullOpts)
-37 (-3.03 % of base) : 304680.dasm - System.Text.RegularExpressions.RegexNode:ReduceAtomic():System.Text.RegularExpressions.RegexNode:this (FullOpts)
-34 (-1.71 % of base) : 218499.dasm - System.Tests.ByteTests:ToStringTest(ubyte,System.String,System.IFormatProvider,System.String) (FullOpts)
-34 (-1.77 % of base) : 211722.dasm - System.Tests.UInt16Tests:ToStringTest(ushort,System.String,System.IFormatProvider,System.String) (FullOpts)
Top method regressions (percentages):
3 (12.50 % of base) : 160301.dasm - System.Net.NetworkInformation.Tests.PingTest+FinalizingPing:Dispose(ubyte):this (FullOpts)
3 (12.50 % of base) : 227130.dasm - System.Security.Cryptography.SHA1CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
3 (12.50 % of base) : 227369.dasm - System.Security.Cryptography.SHA256CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
3 (12.50 % of base) : 227363.dasm - System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
3 (12.50 % of base) : 227355.dasm - System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
3 (8.57 % of base) : 232334.dasm - System.Security.Cryptography.HMAC:Dispose(ubyte):this (FullOpts)
128 (8.56 % of base) : 31412.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:VisitIsPatternExpression(Microsoft.CodeAnalysis.CSharp.BoundIsPatternExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
75 (7.49 % of base) : 52503.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
75 (7.49 % of base) : 45957.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
75 (7.49 % of base) : 54972.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
14 (7.37 % of base) : 35095.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
254 (7.01 % of base) : 188970.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateAssemblyRefTable():this (FullOpts)
10 (6.85 % of base) : 201151.dasm - System.Numerics.BigInteger:op_Multiply(System.Numerics.BigInteger,System.Numerics.BigInteger):System.Numerics.BigInteger (FullOpts)
86 (6.09 % of base) : 312065.dasm - System.Threading.Tests.AsyncLocalTests+<AddUpdateAndRemoveManyLocals_ReferenceType>d__14:MoveNext():this (FullOpts)
22 (6.04 % of base) : 44949.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
22 (6.04 % of base) : 54638.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
22 (6.04 % of base) : 50809.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
18 (5.96 % of base) : 55105.dasm - System.Collections.Generic.SortedSet`1+Enumerator[System.Collections.Generic.KeyValuePair`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]]:MoveNext():ubyte:this (FullOpts)
278 (5.90 % of base) : 15948.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
3 (5.88 % of base) : 181642.dasm - XmlCoreTest.Common.CustomWriter:Dispose(ubyte):this (FullOpts)
Top method improvements (percentages):
-32 (-48.48 % of base) : 203179.dasm - System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs:Equals(System.Object):ubyte:this (FullOpts)
-188 (-28.53 % of base) : 25514.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
-30 (-26.79 % of base) : 95859.dasm - System.Data.Tests.DataRowTest2+Address:Equals(System.Object):ubyte:this (FullOpts)
-202 (-25.28 % of base) : 121265.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (FullOpts)
-23 (-21.90 % of base) : 3010.dasm - Microsoft.VisualStudio.Composition.ExportProvider:GetOrderMetadata(System.Collections.Generic.IReadOnlyDictionary`2[System.String,System.Object]):int (FullOpts)
-26 (-20.63 % of base) : 97737.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
-20 (-15.87 % of base) : 32042.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
-22 (-10.58 % of base) : 218.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-22 (-10.58 % of base) : 277850.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-43 (-10.31 % of base) : 63312.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
-22 (-9.28 % of base) : 304654.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-11 (-7.97 % of base) : 94633.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
-51 (-7.96 % of base) : 294111.dasm - System.Text.RegularExpressions.Tests.RegexEnumerateMatchesTests:EnumerateMatches_Lookbehind(int):this (FullOpts)
-51 (-7.74 % of base) : 294112.dasm - System.Text.RegularExpressions.Tests.RegexEnumerateMatchesTests:EnumerateMatches_Lookahead(int):this (FullOpts)
-4 (-7.27 % of base) : 760.dasm - System.Xml.Linq.XObject:SkipNotify():ubyte:this (FullOpts)
-4 (-7.14 % of base) : 64425.dasm - System.Xml.Linq.XObject:get_BaseUri():System.String:this (FullOpts)
-13 (-7.07 % of base) : 45601.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
-17 (-6.85 % of base) : 177145.dasm - System.Xml.XmlTextReaderImpl:.ctor(System.IO.Stream,int,System.Xml.XmlParserContext):this (FullOpts)
-16 (-6.69 % of base) : 310680.dasm - System.Threading.Tasks.Tests.TaskRtTests:<FromResult_KnownResults_Cached>g__AssertCached|5_0[int](int) (FullOpts)
-9 (-6.62 % of base) : 92079.dasm - System.Configuration.Internal.WriteFileContext:ReplaceFile(System.String,System.String) (FullOpts)
realworld.run.windows.x86.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 11345019 (overridden on cmd)
Total bytes of diff: 11345692 (overridden on cmd)
Total bytes of delta: 673 (0.01 % of base)
diff is a regression.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
312 : 24340.dasm (6.70 % of base)
128 : 25967.dasm (8.57 % of base)
75 : 28446.dasm (7.49 % of base)
52 : 16614.dasm (1.45 % of base)
49 : 27255.dasm (5.77 % of base)
44 : 25642.dasm (3.20 % of base)
42 : 26989.dasm (6.58 % of base)
42 : 14563.dasm (3.70 % of base)
40 : 23140.dasm (1.35 % of base)
34 : 13011.dasm (1.12 % of base)
30 : 21635.dasm (1.64 % of base)
24 : 23521.dasm (1.49 % of base)
22 : 21646.dasm (6.04 % of base)
20 : 2901.dasm (0.80 % of base)
20 : 11422.dasm (1.49 % of base)
20 : 27007.dasm (7.49 % of base)
19 : 21205.dasm (0.38 % of base)
19 : 2144.dasm (1.82 % of base)
18 : 25073.dasm (5.96 % of base)
15 : 22000.dasm (1.11 % of base)
Top file improvements (bytes):
-107 : 15973.dasm (-4.57 % of base)
-71 : 27813.dasm (-2.66 % of base)
-35 : 19569.dasm (-3.73 % of base)
-31 : 6947.dasm (-44.93 % of base)
-31 : 11682.dasm (-38.75 % of base)
-31 : 6637.dasm (-44.93 % of base)
-30 : 7766.dasm (-46.88 % of base)
-22 : 20653.dasm (-10.58 % of base)
-19 : 17977.dasm (-2.41 % of base)
-13 : 21965.dasm (-7.03 % of base)
-13 : 27349.dasm (-0.37 % of base)
-12 : 22153.dasm (-0.45 % of base)
-10 : 562.dasm (-1.58 % of base)
-9 : 21196.dasm (-0.48 % of base)
-9 : 25279.dasm (-1.88 % of base)
-8 : 24977.dasm (-2.30 % of base)
-8 : 876.dasm (-0.15 % of base)
-8 : 22787.dasm (-0.41 % of base)
-8 : 404.dasm (-3.08 % of base)
-7 : 20423.dasm (-0.44 % of base)
57 total files with Code Size differences (26 improved, 31 regressed), 20 unchanged.
Top method regressions (bytes):
312 (6.70 % of base) : 24340.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
128 (8.57 % of base) : 25967.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:VisitIsPatternExpression(Microsoft.CodeAnalysis.CSharp.BoundIsPatternExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
75 (7.49 % of base) : 28446.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
52 (1.45 % of base) : 16614.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:ApplyInto[float,float,float](byref,byref,byref,System.Func`4[int,float,float,float]) (FullOpts)
49 (5.77 % of base) : 27255.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitObjectElementInitializer>g__visitMemberInitializer|169_0(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator,ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
44 (3.20 % of base) : 25642.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArrayAccess(Microsoft.CodeAnalysis.CSharp.BoundArrayAccess):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
42 (6.58 % of base) : 26989.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitPointerIndirectionOperator(Microsoft.CodeAnalysis.CSharp.BoundPointerIndirectionOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
42 (3.70 % of base) : 14563.dasm - SixLabors.ImageSharp.Processing.Processors.Dithering.PaletteDitherProcessor`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:.ctor(SixLabors.ImageSharp.Configuration,SixLabors.ImageSharp.Processing.Processors.Dithering.PaletteDitherProcessor,SixLabors.ImageSharp.Image`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.Rectangle):this (FullOpts)
40 (1.35 % of base) : 23140.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:ComputeImplementationForInterfaceMember(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,byref):Microsoft.CodeAnalysis.CSharp.Symbol (FullOpts)
34 (1.12 % of base) : 13011.dasm - FSharp.Compiler.CheckExpressions:TcRecdExpr(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.TypedTree+TType,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`5[FSharp.Compiler.Syntax.SynType,FSharp.Compiler.Syntax.SynExpr,FSharp.Compiler.Text.Range,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.Text.Range,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Position]]],FSharp.Compiler.Text.Range]],Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.Syntax.SynExpr,System.Tuple`2[FSharp.Compiler.Text.Range,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Position]]]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynExprRecordField],FSharp.Compiler.Text.Range):System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)
30 (1.64 % of base) : 21635.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitMemberAccess(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbol):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
24 (1.49 % of base) : 23521.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterOperator(Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature,Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,byref):int:this (FullOpts)
22 (6.04 % of base) : 21646.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
20 (0.80 % of base) : 2901.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:openPEFileReader[System.__Canon](System.String,FSharp.Compiler.AbstractIL.ILBinaryReader+BinaryFile,System.__Canon,ubyte):System.Tuple`6[int,int,System.Tuple`8[ushort,System.Tuple`2[int,int],ubyte,ubyte,ubyte,ubyte,ubyte,System.Tuple`5[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.IL+ILPlatform],ubyte,int,int,int]],FSharp.Compiler.AbstractIL.ILBinaryReader+PEReader,FSharp.Compiler.IO.ReadOnlyByteMemory,Microsoft.FSharp.Core.FSharpOption`1[System.Object]] (FullOpts)
20 (1.49 % of base) : 11422.dasm - FSharp.Compiler.LexFilter:rulesForBothSoftWhiteAndHardWhite$cont@2481(FSharp.Compiler.LexFilter+LexFilterImpl,FSharp.Compiler.LexFilter+TokenTup,ubyte,FSharp.Compiler.LexFilter+TokenTup,Microsoft.FSharp.Core.Unit) (FullOpts)
20 (7.49 % of base) : 27007.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitPointerElementAccess(Microsoft.CodeAnalysis.CSharp.BoundPointerElementAccess):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
19 (0.38 % of base) : 21205.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
19 (1.82 % of base) : 2144.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
18 (5.96 % of base) : 25073.dasm - System.Collections.Generic.SortedSet`1+Enumerator[System.Collections.Generic.KeyValuePair`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]]:MoveNext():ubyte:this (FullOpts)
15 (1.11 % of base) : 22000.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol:LookupTopLevelMetadataTypeWithNoPiaLocalTypeUnification(byref,byref):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
Top method improvements (bytes):
-107 (-4.57 % of base) : 15973.dasm - Microsoft.ML.Data.SchemaDefinition:Create(System.Type,int):Microsoft.ML.Data.SchemaDefinition (FullOpts)
-71 (-2.66 % of base) : 27813.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:BestTypeForLambdaReturns(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte]],Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Conversions,byref):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations (FullOpts)
-35 (-3.73 % of base) : 19569.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
-31 (-44.93 % of base) : 6947.dasm - System.Boolean:Equals(System.Object):ubyte:this (FullOpts)
-31 (-44.93 % of base) : 6637.dasm - System.Byte:Equals(System.Object):ubyte:this (FullOpts)
-31 (-38.75 % of base) : 11682.dasm - System.Int64:Equals(System.Object):ubyte:this (FullOpts)
-30 (-46.88 % of base) : 7766.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
-22 (-10.58 % of base) : 20653.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-19 (-2.41 % of base) : 17977.dasm - Roslyn.Utilities.CommandLineUtilities:SplitCommandLineIntoArguments(System.ReadOnlySpan`1[ushort],ubyte,System.Text.StringBuilder,System.Collections.Generic.List`1[System.String],byref) (FullOpts)
-13 (-0.37 % of base) : 27349.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitDeconstructMethodArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],Microsoft.CodeAnalysis.CSharp.Conversion,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
-13 (-7.03 % of base) : 21965.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
-12 (-0.45 % of base) : 22153.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-10 (-1.58 % of base) : 562.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiByte_Vector(uint,uint):uint (FullOpts)
-9 (-0.48 % of base) : 21196.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetSpecialType(byte):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
-9 (-1.88 % of base) : 25279.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:LeaveParameter(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location):this (FullOpts)
-8 (-2.30 % of base) : 24977.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MetadataOrSourceAssemblySymbol:GetDeclaredSpecialTypeMember(int):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
-8 (-0.41 % of base) : 22787.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbolBase:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-8 (-0.15 % of base) : 876.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
-8 (-3.08 % of base) : 404.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-7 (-0.44 % of base) : 20423.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+UsingsFromOptionsAndDiagnostics:FromOptions(Microsoft.CodeAnalysis.CSharp.CSharpCompilation):Microsoft.CodeAnalysis.CSharp.CSharpCompilation+UsingsFromOptionsAndDiagnostics (FullOpts)
Top method regressions (percentages):
128 (8.57 % of base) : 25967.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:VisitIsPatternExpression(Microsoft.CodeAnalysis.CSharp.BoundIsPatternExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
20 (7.49 % of base) : 27007.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitPointerElementAccess(Microsoft.CodeAnalysis.CSharp.BoundPointerElementAccess):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
75 (7.49 % of base) : 28446.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
312 (6.70 % of base) : 24340.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
42 (6.58 % of base) : 26989.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitPointerIndirectionOperator(Microsoft.CodeAnalysis.CSharp.BoundPointerIndirectionOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
22 (6.04 % of base) : 21646.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
18 (5.96 % of base) : 25073.dasm - System.Collections.Generic.SortedSet`1+Enumerator[System.Collections.Generic.KeyValuePair`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]]:MoveNext():ubyte:this (FullOpts)
49 (5.77 % of base) : 27255.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitObjectElementInitializer>g__visitMemberInitializer|169_0(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator,ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
2 (4.44 % of base) : 17168.dasm - System.Net.Http.HttpConnectionPool:GetSslOptionsForRequest(System.Net.Http.HttpRequestMessage):System.Net.Security.SslClientAuthenticationOptions:this (FullOpts)
42 (3.70 % of base) : 14563.dasm - SixLabors.ImageSharp.Processing.Processors.Dithering.PaletteDitherProcessor`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:.ctor(SixLabors.ImageSharp.Configuration,SixLabors.ImageSharp.Processing.Processors.Dithering.PaletteDitherProcessor,SixLabors.ImageSharp.Image`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.Rectangle):this (FullOpts)
3 (3.49 % of base) : 17719.dasm - System.Net.Http.HttpConnection+HttpContentReadStream:Dispose(ubyte):this (FullOpts)
44 (3.20 % of base) : 25642.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArrayAccess(Microsoft.CodeAnalysis.CSharp.BoundArrayAccess):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
2 (3.17 % of base) : 12977.dasm - FSharp.Compiler.NameResolution:LookupTypeNameInEnvNoArity(FSharp.Compiler.NameResolution+FullyQualifiedFlag,System.String,FSharp.Compiler.NameResolution+NameResolutionEnv):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+EntityRef] (FullOpts)
3 (3.03 % of base) : 24583.dasm - Microsoft.CodeAnalysis.CSharp.Binder:WithCheckedOrUncheckedRegion(ubyte):Microsoft.CodeAnalysis.CSharp.Binder:this (FullOpts)
12 (2.91 % of base) : 19362.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getInterpolationCloseToken|434_2(Microsoft.CodeAnalysis.GreenNode,byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
3 (2.88 % of base) : 33670.dasm - System.Management.Automation.CompiledScriptBlockData:Compile(ubyte):ubyte:this (FullOpts)
2 (2.56 % of base) : 33380.dasm - System.Management.Automation.LocationGlobber:IsProviderDirectPath(System.String):ubyte (FullOpts)
14 (2.10 % of base) : 14524.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterHuffman+Tree:BuildLength(System.ReadOnlySpan`1[int]):this (FullOpts)
19 (1.82 % of base) : 2144.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
6 (1.80 % of base) : 29579.dasm - Microsoft.CodeAnalysis.CSharp.IteratorRewriter:EnsureSpecialPropertyGetter(int,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
Top method improvements (percentages):
-30 (-46.88 % of base) : 7766.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
-31 (-44.93 % of base) : 6947.dasm - System.Boolean:Equals(System.Object):ubyte:this (FullOpts)
-31 (-44.93 % of base) : 6637.dasm - System.Byte:Equals(System.Object):ubyte:this (FullOpts)
-31 (-38.75 % of base) : 11682.dasm - System.Int64:Equals(System.Object):ubyte:this (FullOpts)
-22 (-10.58 % of base) : 20653.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
-13 (-7.03 % of base) : 21965.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
-107 (-4.57 % of base) : 15973.dasm - Microsoft.ML.Data.SchemaDefinition:Create(System.Type,int):Microsoft.ML.Data.SchemaDefinition (FullOpts)
-35 (-3.73 % of base) : 19569.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
-4 (-3.60 % of base) : 17641.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
-8 (-3.08 % of base) : 404.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
-4 (-2.76 % of base) : 661.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
-71 (-2.66 % of base) : 27813.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:BestTypeForLambdaReturns(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte]],Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Conversions,byref):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations (FullOpts)
-2 (-2.50 % of base) : 24729.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetSymbol[System.__Canon](Microsoft.CodeAnalysis.ISymbol):System.__Canon (FullOpts)
-19 (-2.41 % of base) : 17977.dasm - Roslyn.Utilities.CommandLineUtilities:SplitCommandLineIntoArguments(System.ReadOnlySpan`1[ushort],ubyte,System.Text.StringBuilder,System.Collections.Generic.List`1[System.String],byref) (FullOpts)
-8 (-2.30 % of base) : 24977.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MetadataOrSourceAssemblySymbol:GetDeclaredSpecialTypeMember(int):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
-9 (-1.88 % of base) : 25279.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:LeaveParameter(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location):this (FullOpts)
-10 (-1.58 % of base) : 562.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiByte_Vector(uint,uint):uint (FullOpts)
-4 (-1.28 % of base) : 26668.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:ResetStack():this (FullOpts)
-4 (-1.27 % of base) : 8851.dasm - System.Xml.Linq.XContainer+<GetDescendants>d__38:MoveNext():ubyte:this (FullOpts)
-2 (-1.06 % of base) : 3137.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (FullOpts)