Assembly Diffs
linux arm
Diffs are based on 1,910,835 contexts (830,139 MinOpts, 1,080,696 FullOpts).
MISSED contexts: base: 71,332 (3.36%), diff: 214,008 (10.07%)
Overall (-83,756 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.linux.arm.checked.mch |
9,001,894 |
-1,330 |
| benchmarks.run_pgo.linux.arm.checked.mch |
44,895,420 |
-32,684 |
| benchmarks.run_tiered.linux.arm.checked.mch |
13,975,686 |
-936 |
| coreclr_tests.run.linux.arm.checked.mch |
297,649,552 |
-2,656 |
| libraries.pmi.linux.arm.checked.mch |
36,552,836 |
-10,380 |
| libraries_tests.run.linux.arm.Release.mch |
203,563,396 |
-20,844 |
| librariestestsnotieredcompilation.run.linux.arm.Release.mch |
76,220,792 |
-12,598 |
| realworld.run.linux.arm.checked.mch |
10,142,178 |
-2,328 |
FullOpts (-83,756 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.linux.arm.checked.mch |
8,615,300 |
-1,330 |
| benchmarks.run_pgo.linux.arm.checked.mch |
33,017,088 |
-32,684 |
| benchmarks.run_tiered.linux.arm.checked.mch |
5,762,530 |
-936 |
| coreclr_tests.run.linux.arm.checked.mch |
85,198,920 |
-2,656 |
| libraries.pmi.linux.arm.checked.mch |
36,446,612 |
-10,380 |
| libraries_tests.run.linux.arm.Release.mch |
82,582,680 |
-20,844 |
| librariestestsnotieredcompilation.run.linux.arm.Release.mch |
66,150,024 |
-12,598 |
| realworld.run.linux.arm.checked.mch |
9,707,138 |
-2,328 |
Example diffs
benchmarks.run.linux.arm.checked.mch
-28 (-51.85%) : 7898.dasm - System.Collections.ContainsKeyTrue`2+<>c[System.Canon,System.Canon]:b10_1(System.Canon):System.__Canon:this (FullOpts)
@@ -2,57 +2,40 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; FullOpts code
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 2.25) ref -> r4 this class-hnd single-def <System.Collections.ContainsKeyTrue`2+<>c[System.__Canon,System.__Canon]>
-; V01 arg1 [V01,T01] ( 4, 3.12) ref -> r1 class-hnd single-def <System.__Canon>
+; V00 this [V00,T00] ( 3, 3 ) ref -> r4 this class-hnd single-def <System.Collections.ContainsKeyTrue`2+<>c[System.__Canon,System.__Canon]>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> r1 class-hnd single-def <System.__Canon>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) int -> r2 "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> r0 class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M11807_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r11,lr}
- sub sp, 12
- add r11, sp, 16
- str r0, [r11-0x0C]
+ push {r2,r3,r4,lr}
+ str r0, [sp+0x04]
mov r4, r0
; gcrRegs +[r4]
- ;; size=16 bbWeight=1 PerfScore 5.00
-G_M11807_IG02: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r1]
- mov r0, r1
- ; gcrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M11807_IG05
;; size=6 bbWeight=1 PerfScore 3.00
-G_M11807_IG03: ; bbWeight=0.25, gcrefRegs=0013 {r0 r1 r4}, byrefRegs=0000 {}, byref, isz
- ldr r3, [r0]
- ldr r2, [r4]
- ldr r2, [r2+0x24]
- ldr r2, [r2]
- ldr r2, [r2+0x04]
- cmp r3, r2
- beq SHORT G_M11807_IG05
- ;; size=14 bbWeight=0.25 PerfScore 1.75
-G_M11807_IG04: ; bbWeight=0.12, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r0]
- mov r0, r2
+G_M11807_IG02: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r1]
+ ldr r0, [r4]
+ ldr r0, [r0+0x24]
+ ldr r0, [r0]
+ ldr r0, [r0+0x04]
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_CHKCASTANY
; gcrRegs -[r1] +[r0]
- ;; size=12 bbWeight=0.12 PerfScore 0.50
-G_M11807_IG05: ; bbWeight=1, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref, epilog, nogc
- add sp, 12
- pop {r4,r11,pc}
- ;; size=6 bbWeight=1 PerfScore 2.00
+ ; gcr arg pop 0
+ ;; size=18 bbWeight=1 PerfScore 7.00
+G_M11807_IG03: ; bbWeight=1, epilog, nogc, extend
+ pop {r2,r3,r4,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 54, prolog size 14, PerfScore 12.25, instruction count 21, allocated bytes for code 54 (MethodHash=4ad6d1e0) for method System.Collections.ContainsKeyTrue`2+<>c[System.__Canon,System.__Canon]:<Setup>b__10_1(System.__Canon):System.__Canon:this (FullOpts)
+; Total bytes of code 26, prolog size 4, PerfScore 11.00, instruction count 11, allocated bytes for code 26 (MethodHash=4ad6d1e0) for method System.Collections.ContainsKeyTrue`2+<>c[System.__Canon,System.__Canon]:<Setup>b__10_1(System.__Canon):System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
@@ -64,11 +47,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 27 (0x0001b) Actual length = 54 (0x000036)
+ Function Length : 13 (0x0000d) Actual length = 26 (0x00001a)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- 03 add sp, sp, #12 ; opsize 16
- A8 10 pop {r4,r11,lr} ; opsize 32
+ ED 1C pop {r2,r3,r4,lr} ; opsize 16
+ FF end
FF end
-22 (-47.83%) : 3931.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (FullOpts)
@@ -2,58 +2,39 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; FullOpts code
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) int -> r0 single-def
-; V01 arg0 [V01,T02] ( 4, 3.12) ref -> r1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) int -> r0 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> r1 class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 1.25) int -> r0 "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> r3 class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 8
+; Lcl frame size = 12
G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r2,r3,r11,lr}
- add r11, sp, 8
- str r0, [r11-0x04]
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r1]
- mov r3, r1
- ; gcrRegs +[r3]
- cmp r3, 0
- beq SHORT G_M8451_IG05
+ push {lr}
+ sub sp, 12
+ str r0, [sp+0x04]
;; size=6 bbWeight=1 PerfScore 3.00
-G_M8451_IG03: ; bbWeight=0.25, gcrefRegs=000A {r1 r3}, byrefRegs=0000 {}, byref, isz
- ldr r2, [r3]
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r1]
ldr r0, [r0+0x20]
ldr r0, [r0]
- cmp r2, r0
- beq SHORT G_M8451_IG05
- ;; size=10 bbWeight=0.25 PerfScore 1.25
-G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r3]
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_CHKCASTANY
; gcrRegs -[r1] +[r0]
- mov r3, r0
- ; gcrRegs +[r3]
- ;; size=12 bbWeight=0.12 PerfScore 0.50
-G_M8451_IG05: ; bbWeight=1, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r0]
- mov r0, r3
- ; gcrRegs +[r0]
- ;; size=2 bbWeight=1 PerfScore 1.00
-G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
- pop {r2,r3,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
+ ; gcr arg pop 0
+ ;; size=14 bbWeight=1 PerfScore 5.00
+G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
+ add sp, 12
+ pop {pc}
+ ;; size=4 bbWeight=1 PerfScore 2.00
-; Total bytes of code 46, prolog size 12, PerfScore 9.75, instruction count 17, allocated bytes for code 46 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 24, prolog size 6, PerfScore 10.00, instruction count 10, allocated bytes for code 24 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -65,11 +46,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 23 (0x00017) Actual length = 46 (0x00002e)
+ Function Length : 12 (0x0000c) Actual length = 24 (0x000018)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 0C pop {r2,r3,r11,lr} ; opsize 32
- FF end
+ 03 add sp, sp, #12 ; opsize 16
+ ED 00 pop {lr} ; opsize 16
FF end
-32 (-41.03%) : 412.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (FullOpts)
@@ -2,64 +2,50 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; FullOpts code
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) int -> r4 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) int -> r0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> r1 single-def "CASTCLASS eval op1"
-; V03 tmp2 [V03,T03] ( 3, 1.25) int -> r2 "fgMakeTemp is creating a new local variable"
-; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> r0 class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> r1 single-def "argument with side effect"
+; V03 cse0 [V03,T02] ( 3, 3 ) int -> r4 "CSE - aggressive"
;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r11,lr}
- sub sp, 12
- add r11, sp, 16
- str r0, [r11-0x0C]
- mov r4, r0
- ;; size=16 bbWeight=1 PerfScore 5.00
-G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r4+0x20]
- ldr r0, [r0]
+ push {r2,r3,r4,lr}
+ str r0, [sp+0x04]
+ ;; size=4 bbWeight=1 PerfScore 2.00
+G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr r4, [r0+0x20]
+ ldr r0, [r4]
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[r0]
+ ; gcr arg pop 0
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
+ ; gcr arg pop 0
mov r1, r0
; gcrRegs +[r1]
- mov r0, r1
- cmp r0, 0
- beq SHORT G_M13946_IG05
- ;; size=34 bbWeight=1 PerfScore 13.00
-G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
- ldr r3, [r0]
- ldr r2, [r4+0x20]
- ldr r2, [r2]
- cmp r3, r2
- beq SHORT G_M13946_IG05
- ;; size=10 bbWeight=0.25 PerfScore 1.25
-G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
+ ldr r0, [r4]
; gcrRegs -[r0]
- mov r0, r2
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_CHKCASTANY
; gcrRegs -[r1] +[r0]
- ;; size=12 bbWeight=0.12 PerfScore 0.50
-G_M13946_IG05: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
- add sp, 12
- pop {r4,r11,pc}
- ;; size=6 bbWeight=1 PerfScore 2.00
+ ; gcr arg pop 0
+ ;; size=40 bbWeight=1 PerfScore 14.00
+G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
+ pop {r2,r3,r4,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 78, prolog size 14, PerfScore 21.75, instruction count 29, allocated bytes for code 78 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
+; Total bytes of code 46, prolog size 4, PerfScore 17.00, instruction count 17, allocated bytes for code 46 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -71,11 +57,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 39 (0x00027) Actual length = 78 (0x00004e)
+ Function Length : 23 (0x00017) Actual length = 46 (0x00002e)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- 03 add sp, sp, #12 ; opsize 16
- A8 10 pop {r4,r11,lr} ; opsize 32
+ ED 1C pop {r2,r3,r4,lr} ; opsize 16
+ FF end
FF end
+10 (+10.42%) : 17815.dasm - PerfLabTests.CastingPerf:IntObj():this (FullOpts)
@@ -8,78 +8,72 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf>
-; V01 loc0 [V01,T02] ( 4, 13 ) int -> r4
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> r4
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> r1 "CASTCLASS eval op1"
-; V04 tmp2 [V04,T05] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> r3 class-hnd "spilling QMark2" <<unknown class>>
-; V06 cse0 [V06,T03] ( 3, 6 ) int -> r5 "CSE - aggressive"
-; V07 cse1 [V07,T06] ( 2, 5 ) ref -> r7 hoist "CSE - aggressive"
-; V08 cse2 [V08,T04] ( 3, 6 ) int -> r6 "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> r5 "CSE - aggressive"
+; V04 cse1 [V04,T01] ( 3, 6 ) ref -> r7 "CSE - aggressive"
+; V05 cse2 [V05,T03] ( 3, 6 ) int -> r6 "CSE - aggressive"
+; TEMP_01 ref -> [r11-0x14]
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M36328_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r11,lr}
- add r11, sp, 16
- ;; size=8 bbWeight=1 PerfScore 2.00
+ push {r2,r3,r4,r5,r6,r7,r11,lr}
+ add r11, sp, 24
+ movs r1, 0
+ str r1, [sp+0x04]
+ ;; size=12 bbWeight=1 PerfScore 4.00
G_M36328_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movs r4, 0
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- ldr r5, [r0]
+ movw r1, 0xd1ff
+ movt r1, 0xd1ff
+ ldr r5, [r1]
cmp r5, 0
- ble SHORT G_M36328_IG07
+ ble SHORT G_M36328_IG04
movw r6, 0xd1ff
movt r6, 0xd1ff
ldr r7, [r6]
; gcrRegs +[r7]
- ;; size=26 bbWeight=1 PerfScore 9.00
-G_M36328_IG03: ; bbWeight=4, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
mov r1, r7
; gcrRegs +[r1]
- mov r3, r1
- ; gcrRegs +[r3]
- cmp r3, 0
- beq SHORT G_M36328_IG06
- ;; size=8 bbWeight=4 PerfScore 16.00
-G_M36328_IG04: ; bbWeight=1, gcrefRegs=008A {r1 r3 r7}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r3]
- movw r2, 0xd1ff
- movt r2, 0xd1ff
- cmp r0, r2
- beq SHORT G_M36328_IG06
- ;; size=14 bbWeight=1 PerfScore 5.00
-G_M36328_IG05: ; bbWeight=0.50, gcrefRegs=0082 {r1 r7}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r3]
- mov r0, r2
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_CHKCASTARRAY
; gcrRegs -[r1] +[r0]
; gcr arg pop 0
- mov r3, r0
- ; gcrRegs +[r3]
- ;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M36328_IG06: ; bbWeight=4, gcrefRegs=0088 {r3 r7}, byrefRegs=0000 {}, byref, isz
+ ;; size=46 bbWeight=1 PerfScore 15.00
+G_M36328_IG03: ; bbWeight=4, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
+ mov r1, r7
+ ; gcrRegs +[r1]
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ blx r3 // CORINFO_HELP_CHKCASTARRAY
+ ; gcrRegs -[r1] +[r0]
+ ; gcr arg pop 0
+ str r0, [sp+0x04]
sub r0, r6, 28
- mov r1, r3
+ ; gcrRegs -[r0]
+ ldr r1, [sp+0x04]
; gcrRegs +[r1]
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[r1 r3]
+ ; gcrRegs -[r1]
adds r4, r4, 1
cmp r4, r5
blt SHORT G_M36328_IG03
- ;; size=22 bbWeight=4 PerfScore 32.00
-G_M36328_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=44 bbWeight=4 PerfScore 60.00
+G_M36328_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r7]
- pop {r4,r5,r6,r7,r11,pc}
+ pop {r2,r3,r4,r5,r6,r7,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 96, prolog size 8, PerfScore 67.50, instruction count 34, allocated bytes for code 96 (MethodHash=58d37217) for method PerfLabTests.CastingPerf:IntObj():this (FullOpts)
+; Total bytes of code 106, prolog size 12, PerfScore 80.00, instruction count 35, allocated bytes for code 106 (MethodHash=58d37217) for method PerfLabTests.CastingPerf:IntObj():this (FullOpts)
; ============================================================
Unwind Info:
@@ -91,11 +85,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 48 (0x00030) Actual length = 96 (0x000060)
+ Function Length : 53 (0x00035) Actual length = 106 (0x00006a)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 F0 pop {r4,r5,r6,r7,r11,lr} ; opsize 32
+ A8 FC pop {r2,r3,r4,r5,r6,r7,r11,lr} ; opsize 32
FF end
FF end
+10 (+10.64%) : 40859.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (FullOpts)
@@ -8,78 +8,72 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf>
-; V01 loc0 [V01,T02] ( 4, 13 ) int -> r4
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> r4
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> r1 "CASTCLASS eval op1"
-; V04 tmp2 [V04,T05] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> r3 class-hnd "spilling QMark2" <<unknown class>>
-; V06 cse0 [V06,T03] ( 3, 6 ) int -> r5 "CSE - aggressive"
-; V07 cse1 [V07,T06] ( 2, 5 ) ref -> r7 hoist "CSE - aggressive"
-; V08 cse2 [V08,T04] ( 3, 6 ) int -> r6 "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> r5 "CSE - aggressive"
+; V04 cse1 [V04,T01] ( 3, 6 ) ref -> r7 "CSE - aggressive"
+; V05 cse2 [V05,T03] ( 3, 6 ) int -> r6 "CSE - aggressive"
+; TEMP_01 ref -> [r11-0x14]
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M896_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r11,lr}
- add r11, sp, 16
- ;; size=8 bbWeight=1 PerfScore 2.00
+ push {r2,r3,r4,r5,r6,r7,r11,lr}
+ add r11, sp, 24
+ movs r1, 0
+ str r1, [sp+0x04]
+ ;; size=12 bbWeight=1 PerfScore 4.00
G_M896_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movs r4, 0
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- ldr r5, [r0]
+ movw r1, 0xd1ff
+ movt r1, 0xd1ff
+ ldr r5, [r1]
cmp r5, 0
- ble SHORT G_M896_IG07
+ ble SHORT G_M896_IG04
movw r6, 0xd1ff
movt r6, 0xd1ff
ldr r7, [r6]
; gcrRegs +[r7]
- ;; size=26 bbWeight=1 PerfScore 9.00
-G_M896_IG03: ; bbWeight=4, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
mov r1, r7
; gcrRegs +[r1]
- mov r3, r1
- ; gcrRegs +[r3]
- cmp r3, 0
- beq SHORT G_M896_IG06
- ;; size=8 bbWeight=4 PerfScore 16.00
-G_M896_IG04: ; bbWeight=1, gcrefRegs=008A {r1 r3 r7}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r3]
- movw r2, 0xd1ff
- movt r2, 0xd1ff
- cmp r0, r2
- beq SHORT G_M896_IG06
- ;; size=14 bbWeight=1 PerfScore 5.00
-G_M896_IG05: ; bbWeight=0.50, gcrefRegs=0082 {r1 r7}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r3]
- mov r0, r2
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_CHKCASTARRAY
; gcrRegs -[r1] +[r0]
; gcr arg pop 0
- mov r3, r0
- ; gcrRegs +[r3]
- ;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M896_IG06: ; bbWeight=4, gcrefRegs=0088 {r3 r7}, byrefRegs=0000 {}, byref, isz
+ ;; size=46 bbWeight=1 PerfScore 15.00
+G_M896_IG03: ; bbWeight=4, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
+ mov r1, r7
+ ; gcrRegs +[r1]
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ blx r3 // CORINFO_HELP_CHKCASTARRAY
+ ; gcrRegs -[r1] +[r0]
+ ; gcr arg pop 0
+ str r0, [sp+0x04]
adds r0, r6, 4
- mov r1, r3
+ ; gcrRegs -[r0]
+ ldr r1, [sp+0x04]
; gcrRegs +[r1]
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[r1 r3]
+ ; gcrRegs -[r1]
adds r4, r4, 1
cmp r4, r5
blt SHORT G_M896_IG03
- ;; size=20 bbWeight=4 PerfScore 32.00
-G_M896_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=42 bbWeight=4 PerfScore 60.00
+G_M896_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r7]
- pop {r4,r5,r6,r7,r11,pc}
+ pop {r2,r3,r4,r5,r6,r7,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 94, prolog size 8, PerfScore 67.50, instruction count 34, allocated bytes for code 94 (MethodHash=984afc7f) for method PerfLabTests.CastingPerf:ObjObjIsFoo():this (FullOpts)
+; Total bytes of code 104, prolog size 12, PerfScore 80.00, instruction count 35, allocated bytes for code 104 (MethodHash=984afc7f) for method PerfLabTests.CastingPerf:ObjObjIsFoo():this (FullOpts)
; ============================================================
Unwind Info:
@@ -91,11 +85,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 47 (0x0002f) Actual length = 94 (0x00005e)
+ Function Length : 52 (0x00034) Actual length = 104 (0x000068)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 F0 pop {r4,r5,r6,r7,r11,lr} ; opsize 32
+ A8 FC pop {r2,r3,r4,r5,r6,r7,r11,lr} ; opsize 32
FF end
FF end
+10 (+10.64%) : 44815.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (FullOpts)
@@ -8,78 +8,72 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf>
-; V01 loc0 [V01,T02] ( 4, 13 ) int -> r4
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> r4
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> r1 "CASTCLASS eval op1"
-; V04 tmp2 [V04,T05] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> r3 class-hnd "spilling QMark2" <<unknown class>>
-; V06 cse0 [V06,T03] ( 3, 6 ) int -> r5 "CSE - aggressive"
-; V07 cse1 [V07,T06] ( 2, 5 ) ref -> r7 hoist "CSE - aggressive"
-; V08 cse2 [V08,T04] ( 3, 6 ) int -> r6 "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> r5 "CSE - aggressive"
+; V04 cse1 [V04,T01] ( 3, 6 ) ref -> r7 "CSE - aggressive"
+; V05 cse2 [V05,T03] ( 3, 6 ) int -> r6 "CSE - aggressive"
+; TEMP_01 ref -> [r11-0x14]
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M40467_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r11,lr}
- add r11, sp, 16
- ;; size=8 bbWeight=1 PerfScore 2.00
+ push {r2,r3,r4,r5,r6,r7,r11,lr}
+ add r11, sp, 24
+ movs r1, 0
+ str r1, [sp+0x04]
+ ;; size=12 bbWeight=1 PerfScore 4.00
G_M40467_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movs r4, 0
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- ldr r5, [r0]
+ movw r1, 0xd1ff
+ movt r1, 0xd1ff
+ ldr r5, [r1]
cmp r5, 0
- ble SHORT G_M40467_IG07
+ ble SHORT G_M40467_IG04
movw r6, 0xd1ff
movt r6, 0xd1ff
ldr r7, [r6]
; gcrRegs +[r7]
- ;; size=26 bbWeight=1 PerfScore 9.00
-G_M40467_IG03: ; bbWeight=4, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
mov r1, r7
; gcrRegs +[r1]
- mov r3, r1
- ; gcrRegs +[r3]
- cmp r3, 0
- beq SHORT G_M40467_IG06
- ;; size=8 bbWeight=4 PerfScore 16.00
-G_M40467_IG04: ; bbWeight=1, gcrefRegs=008A {r1 r3 r7}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r3]
- movw r2, 0xd1ff
- movt r2, 0xd1ff
- cmp r0, r2
- beq SHORT G_M40467_IG06
- ;; size=14 bbWeight=1 PerfScore 5.00
-G_M40467_IG05: ; bbWeight=0.50, gcrefRegs=0082 {r1 r7}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r3]
- mov r0, r2
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_CHKCASTARRAY
; gcrRegs -[r1] +[r0]
; gcr arg pop 0
- mov r3, r0
- ; gcrRegs +[r3]
- ;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M40467_IG06: ; bbWeight=4, gcrefRegs=0088 {r3 r7}, byrefRegs=0000 {}, byref, isz
+ ;; size=46 bbWeight=1 PerfScore 15.00
+G_M40467_IG03: ; bbWeight=4, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
+ mov r1, r7
+ ; gcrRegs +[r1]
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ blx r3 // CORINFO_HELP_CHKCASTARRAY
+ ; gcrRegs -[r1] +[r0]
+ ; gcr arg pop 0
+ str r0, [sp+0x04]
adds r0, r6, 4
- mov r1, r3
+ ; gcrRegs -[r0]
+ ldr r1, [sp+0x04]
; gcrRegs +[r1]
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[r1 r3]
+ ; gcrRegs -[r1]
adds r4, r4, 1
cmp r4, r5
blt SHORT G_M40467_IG03
- ;; size=20 bbWeight=4 PerfScore 32.00
-G_M40467_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=42 bbWeight=4 PerfScore 60.00
+G_M40467_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r7]
- pop {r4,r5,r6,r7,r11,pc}
+ pop {r2,r3,r4,r5,r6,r7,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 94, prolog size 8, PerfScore 67.50, instruction count 34, allocated bytes for code 94 (MethodHash=dc5f61ec) for method PerfLabTests.CastingPerf:FooObjIsFoo2():this (FullOpts)
+; Total bytes of code 104, prolog size 12, PerfScore 80.00, instruction count 35, allocated bytes for code 104 (MethodHash=dc5f61ec) for method PerfLabTests.CastingPerf:FooObjIsFoo2():this (FullOpts)
; ============================================================
Unwind Info:
@@ -91,11 +85,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 47 (0x0002f) Actual length = 94 (0x00005e)
+ Function Length : 52 (0x00034) Actual length = 104 (0x000068)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 F0 pop {r4,r5,r6,r7,r11,lr} ; opsize 32
+ A8 FC pop {r2,r3,r4,r5,r6,r7,r11,lr} ; opsize 32
FF end
FF end
benchmarks.run_pgo.linux.arm.checked.mch
-22 (-47.83%) : 131625.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (Tier1)
@@ -3,58 +3,39 @@
; Tier1 code
; optimized code
; optimized using Dynamic PGO
-; r11 based frame
+; sp based frame
; partially interruptible
; with Dynamic PGO: edge weights are valid, and fgCalledCount is 204
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.50) int -> r0 single-def
-; V01 arg0 [V01,T02] ( 4, 3.25) ref -> r1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) int -> r0 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> r1 class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 2.50) int -> r0 "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 7.50) ref -> r3 class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 8
+; Lcl frame size = 12
G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r2,r3,r11,lr}
- add r11, sp, 8
- str r0, [r11-0x04]
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r1]
- mov r3, r1
- ; gcrRegs +[r3]
- cmp r3, 0
- beq SHORT G_M8451_IG05
+ push {lr}
+ sub sp, 12
+ str r0, [sp+0x04]
;; size=6 bbWeight=1 PerfScore 3.00
-G_M8451_IG03: ; bbWeight=0.50, gcrefRegs=000A {r1 r3}, byrefRegs=0000 {}, byref, isz
- ldr r2, [r3]
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r1]
ldr r0, [r0+0x20]
ldr r0, [r0]
- cmp r2, r0
- beq SHORT G_M8451_IG05
- ;; size=10 bbWeight=0.50 PerfScore 2.50
-G_M8451_IG04: ; bbWeight=0.25, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r3]
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_CHKCASTANY
; gcrRegs -[r1] +[r0]
- mov r3, r0
- ; gcrRegs +[r3]
- ;; size=12 bbWeight=0.25 PerfScore 1.00
-G_M8451_IG05: ; bbWeight=1, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r0]
- mov r0, r3
- ; gcrRegs +[r0]
- ;; size=2 bbWeight=1 PerfScore 1.00
-G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
- pop {r2,r3,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
+ ; gcr arg pop 0
+ ;; size=14 bbWeight=1 PerfScore 5.00
+G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
+ add sp, 12
+ pop {pc}
+ ;; size=4 bbWeight=1 PerfScore 2.00
-; Total bytes of code 46, prolog size 12, PerfScore 11.50, instruction count 17, allocated bytes for code 46 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
+; Total bytes of code 24, prolog size 6, PerfScore 10.00, instruction count 10, allocated bytes for code 24 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
; ============================================================
Unwind Info:
@@ -66,11 +47,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 23 (0x00017) Actual length = 46 (0x00002e)
+ Function Length : 12 (0x0000c) Actual length = 24 (0x000018)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 0C pop {r2,r3,r11,lr} ; opsize 32
- FF end
+ 03 add sp, sp, #12 ; opsize 16
+ ED 00 pop {lr} ; opsize 16
FF end
-22 (-47.83%) : 84130.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (Tier1)
@@ -3,58 +3,39 @@
; Tier1 code
; optimized code
; optimized using Dynamic PGO
-; r11 based frame
+; sp based frame
; partially interruptible
; with Dynamic PGO: edge weights are valid, and fgCalledCount is 100
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.50) int -> r0 single-def
-; V01 arg0 [V01,T02] ( 4, 3.25) ref -> r1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) int -> r0 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> r1 class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 2.50) int -> r0 "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 7.50) ref -> r3 class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 8
+; Lcl frame size = 12
G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r2,r3,r11,lr}
- add r11, sp, 8
- str r0, [r11-0x04]
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r1]
- mov r3, r1
- ; gcrRegs +[r3]
- cmp r3, 0
- beq SHORT G_M8451_IG05
+ push {lr}
+ sub sp, 12
+ str r0, [sp+0x04]
;; size=6 bbWeight=1 PerfScore 3.00
-G_M8451_IG03: ; bbWeight=0.50, gcrefRegs=000A {r1 r3}, byrefRegs=0000 {}, byref, isz
- ldr r2, [r3]
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r1]
ldr r0, [r0+0x20]
ldr r0, [r0]
- cmp r2, r0
- beq SHORT G_M8451_IG05
- ;; size=10 bbWeight=0.50 PerfScore 2.50
-G_M8451_IG04: ; bbWeight=0.25, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r3]
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_CHKCASTANY
; gcrRegs -[r1] +[r0]
- mov r3, r0
- ; gcrRegs +[r3]
- ;; size=12 bbWeight=0.25 PerfScore 1.00
-G_M8451_IG05: ; bbWeight=1, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r0]
- mov r0, r3
- ; gcrRegs +[r0]
- ;; size=2 bbWeight=1 PerfScore 1.00
-G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
- pop {r2,r3,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
+ ; gcr arg pop 0
+ ;; size=14 bbWeight=1 PerfScore 5.00
+G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
+ add sp, 12
+ pop {pc}
+ ;; size=4 bbWeight=1 PerfScore 2.00
-; Total bytes of code 46, prolog size 12, PerfScore 11.50, instruction count 17, allocated bytes for code 46 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
+; Total bytes of code 24, prolog size 6, PerfScore 10.00, instruction count 10, allocated bytes for code 24 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
; ============================================================
Unwind Info:
@@ -66,11 +47,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 23 (0x00017) Actual length = 46 (0x00002e)
+ Function Length : 12 (0x0000c) Actual length = 24 (0x000018)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 0C pop {r2,r3,r11,lr} ; opsize 32
- FF end
+ 03 add sp, sp, #12 ; opsize 16
+ ED 00 pop {lr} ; opsize 16
FF end
-22 (-47.83%) : 152610.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (Tier1)
@@ -3,58 +3,39 @@
; Tier1 code
; optimized code
; optimized using Dynamic PGO
-; r11 based frame
+; sp based frame
; partially interruptible
; with Dynamic PGO: edge weights are valid, and fgCalledCount is 128
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.50) int -> r0 single-def
-; V01 arg0 [V01,T02] ( 4, 3.25) ref -> r1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) int -> r0 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> r1 class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 2.50) int -> r0 "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 7.50) ref -> r3 class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 8
+; Lcl frame size = 12
G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r2,r3,r11,lr}
- add r11, sp, 8
- str r0, [r11-0x04]
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r1]
- mov r3, r1
- ; gcrRegs +[r3]
- cmp r3, 0
- beq SHORT G_M8451_IG05
+ push {lr}
+ sub sp, 12
+ str r0, [sp+0x04]
;; size=6 bbWeight=1 PerfScore 3.00
-G_M8451_IG03: ; bbWeight=0.50, gcrefRegs=000A {r1 r3}, byrefRegs=0000 {}, byref, isz
- ldr r2, [r3]
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r1]
ldr r0, [r0+0x20]
ldr r0, [r0]
- cmp r2, r0
- beq SHORT G_M8451_IG05
- ;; size=10 bbWeight=0.50 PerfScore 2.50
-G_M8451_IG04: ; bbWeight=0.25, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r3]
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_CHKCASTANY
; gcrRegs -[r1] +[r0]
- mov r3, r0
- ; gcrRegs +[r3]
- ;; size=12 bbWeight=0.25 PerfScore 1.00
-G_M8451_IG05: ; bbWeight=1, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r0]
- mov r0, r3
- ; gcrRegs +[r0]
- ;; size=2 bbWeight=1 PerfScore 1.00
-G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
- pop {r2,r3,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
+ ; gcr arg pop 0
+ ;; size=14 bbWeight=1 PerfScore 5.00
+G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
+ add sp, 12
+ pop {pc}
+ ;; size=4 bbWeight=1 PerfScore 2.00
-; Total bytes of code 46, prolog size 12, PerfScore 11.50, instruction count 17, allocated bytes for code 46 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
+; Total bytes of code 24, prolog size 6, PerfScore 10.00, instruction count 10, allocated bytes for code 24 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
; ============================================================
Unwind Info:
@@ -66,11 +47,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 23 (0x00017) Actual length = 46 (0x00002e)
+ Function Length : 12 (0x0000c) Actual length = 24 (0x000018)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 0C pop {r2,r3,r11,lr} ; opsize 32
- FF end
+ 03 add sp, sp, #12 ; opsize 16
+ ED 00 pop {lr} ; opsize 16
FF end
+26 (+16.88%) : 24428.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
@@ -5,7 +5,7 @@
; optimized using Dynamic PGO
; r11 based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 4
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 4
; 4 inlinees with PGO data; 10 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
@@ -14,62 +14,79 @@
; V02 tmp1 [V02,T06] ( 3, 2 ) ref -> r0 "guarded devirt return temp"
;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
; V04 tmp3 [V04,T05] ( 4, 2 ) ubyte -> r3 "Inline return value spill temp"
-;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V06 tmp5 [V06,T09] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
-;* V07 tmp6 [V07 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.TypeHandle>
-; V08 tmp7 [V08,T07] ( 3, 2 ) int -> r7
-; V09 tmp8 [V09,T08] ( 2, 2 ) ubyte -> r3 "Inline stloc first use temp"
-;* V10 tmp9 [V10 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TypeHandle>
-;* V11 tmp10 [V11 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V12 tmp11 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V13 tmp12 [V13,T03] ( 2, 4 ) byref -> r0 single-def "Inlining Arg"
-;* V14 tmp13 [V14,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V15 tmp14 [V15,T11] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V16 tmp15 [V16 ] ( 0, 0 ) int -> zero-ref "field V07.m_asTAddr (fldOffset=0x0)" P-INDEP
-; V17 tmp16 [V17,T04] ( 3, 3 ) int -> r0 "field V10.m_asTAddr (fldOffset=0x0)" P-INDEP
-; V18 cse0 [V18,T01] ( 3, 3 ) int -> r5 "CSE - aggressive"
-; V19 cse1 [V19,T02] ( 3, 3 ) int -> r6 "CSE - aggressive"
+; V05 tmp4 [V05,T02] ( 4, 4 ) ref -> r5 class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
+;* V06 tmp5 [V06 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.TypeHandle>
+; V07 tmp6 [V07,T07] ( 3, 2 ) int -> r6
+; V08 tmp7 [V08,T08] ( 2, 2 ) ubyte -> r3 "Inline stloc first use temp"
+;* V09 tmp8 [V09 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TypeHandle>
+;* V10 tmp9 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V11 tmp10 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V12 tmp11 [V12,T03] ( 2, 4 ) byref -> r0 single-def "Inlining Arg"
+;* V13 tmp12 [V13,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V14 tmp13 [V14 ] ( 0, 0 ) int -> zero-ref "field V06.m_asTAddr (fldOffset=0x0)" P-INDEP
+; V15 tmp14 [V15,T04] ( 3, 3 ) int -> r0 "field V09.m_asTAddr (fldOffset=0x0)" P-INDEP
+; V16 rat0 [V16,T01] ( 5, 7.50) ref -> r5 class-hnd "replacement local" <System.RuntimeType>
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M8853_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r11,lr}
+ push {r3,r4,r5,r6,r11,lr}
add r11, sp, 16
mov r4, r0
; gcrRegs +[r4]
;; size=10 bbWeight=1 PerfScore 3.00
G_M8853_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r5, [r4]
- movw r6, 0xd1ff
- movt r6, 0xd1ff
- cmp r5, r6
- bne SHORT G_M8853_IG11
- ldr r0, [r4+0x0C]
+ ldrsb r0, [r4]
+ mov r5, r4
+ ; gcrRegs +[r5]
+ cmp r5, 0
+ beq SHORT G_M8853_IG05
+ ;; size=10 bbWeight=1 PerfScore 4.00
+G_M8853_IG03: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ ldr r0, [r5]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r0, r3
+ beq SHORT G_M8853_IG05
+ ;; size=14 bbWeight=0.50 PerfScore 2.50
+G_M8853_IG04: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r5]
+ movs r5, 0
+ ;; size=2 bbWeight=0.25 PerfScore 0.25
+G_M8853_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r5]
+ cmp r5, 0
+ beq SHORT G_M8853_IG11
+ ldr r0, [r5+0x0C]
ands r3, r0, 2
cmp r3, 0
bne SHORT G_M8853_IG10
ldr r0, [r0]
and r0, r0, 0xf0000
cmp r0, 0xc0000
- beq SHORT G_M8853_IG03
- movs r7, 0
- b SHORT G_M8853_IG04
- ;; size=40 bbWeight=1 PerfScore 15.00
-G_M8853_IG03: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- movs r7, 1
+ beq SHORT G_M8853_IG06
+ movs r6, 0
+ b SHORT G_M8853_IG07
+ ;; size=30 bbWeight=1 PerfScore 12.00
+G_M8853_IG06: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+ movs r6, 1
;; size=2 bbWeight=1 PerfScore 1.00
-G_M8853_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- uxtb r3, r7
+G_M8853_IG07: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ uxtb r3, r6
cmp r3, 0
bne SHORT G_M8853_IG14
;; size=6 bbWeight=1 PerfScore 3.00
-G_M8853_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M8853_IG08: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r5]
movw r0, 0xd1ff
movt r0, 0xd1ff
cmp r4, r0
- beq SHORT G_M8853_IG07
- cmp r5, r6
- bne SHORT G_M8853_IG09
+ beq SHORT G_M8853_IG16
+ ldr r0, [r4]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r0, r3
+ bne SHORT G_M8853_IG18
mov r0, r4
; gcrRegs +[r0]
movw r3, 0xd1ff
@@ -77,34 +94,17 @@ G_M8853_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
ldr r3, [r3]
blx r3 // <unknown method>
; gcrRegs -[r4]
- ;; size=30 bbWeight=1 PerfScore 11.00
-G_M8853_IG06: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
- pop {r4,r5,r6,r7,r11,pc}
+ ;; size=40 bbWeight=1 PerfScore 14.00
+G_M8853_IG09: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M8853_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r0]
- movs r0, 0
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M8853_IG08: ; bbWeight=0, epilog, nogc, extend
- pop {r4,r5,r6,r7,r11,pc}
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M8853_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[r4]
- mov r0, r4
- ; gcrRegs +[r0]
- ldr r3, [r4]
- ldr r3, [r3+0x58]
- ldr r3, [r3+0x10]
- blx r3 // <unknown method>
- ; gcrRegs -[r4]
- b SHORT G_M8853_IG06
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M8853_IG10: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0] +[r4]
- movs r7, 0
- b SHORT G_M8853_IG04
+G_M8853_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[r0] +[r4-r5]
+ movs r6, 0
+ b SHORT G_M8853_IG07
;; size=4 bbWeight=0 PerfScore 0.00
G_M8853_IG11: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r5]
mov r0, r4
; gcrRegs +[r0]
ldr r3, [r4]
@@ -123,7 +123,7 @@ G_M8853_IG12: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
;; size=2 bbWeight=0 PerfScore 0.00
G_M8853_IG13: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r3, 0
- beq SHORT G_M8853_IG05
+ beq SHORT G_M8853_IG08
;; size=4 bbWeight=0 PerfScore 0.00
G_M8853_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r4]
@@ -131,10 +131,27 @@ G_M8853_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movt r0, 0xd1ff
;; size=8 bbWeight=0 PerfScore 0.00
G_M8853_IG15: ; bbWeight=0, epilog, nogc, extend
- pop {r4,r5,r6,r7,r11,pc}
+ pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=0 PerfScore 0.00
+G_M8853_IG16: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ movs r0, 0
+ ;; size=2 bbWeight=0 PerfScore 0.00
+G_M8853_IG17: ; bbWeight=0, epilog, nogc, extend
+ pop {r3,r4,r5,r6,r11,pc}
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M8853_IG18: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[r4]
+ mov r0, r4
+ ; gcrRegs +[r0]
+ ldr r3, [r4]
+ ldr r3, [r3+0x58]
+ ldr r3, [r3+0x10]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r4]
+ b SHORT G_M8853_IG09
+ ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 154, prolog size 8, PerfScore 34.00, instruction count 60, allocated bytes for code 154 (MethodHash=a7e7dd6a) for method System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
+; Total bytes of code 180, prolog size 8, PerfScore 40.75, instruction count 70, allocated bytes for code 180 (MethodHash=a7e7dd6a) for method System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
; ============================================================
Unwind Info:
@@ -146,7 +163,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 77 (0x0004d) Actual length = 154 (0x00009a)
+ Function Length : 90 (0x0005a) Actual length = 180 (0x0000b4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -162,7 +179,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 F0 pop {r4,r5,r6,r7,r11,lr} ; opsize 32
+ A8 78 pop {r3,r4,r5,r6,r11,lr} ; opsize 32
FF end
FF end
+28 (+18.42%) : 82477.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
@@ -14,62 +14,67 @@
; V02 tmp1 [V02,T05] ( 3, 2 ) ref -> r0 "guarded devirt return temp"
;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
; V04 tmp3 [V04,T06] ( 3, 2 ) ubyte -> r3 "Inline return value spill temp"
-;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V06 tmp5 [V06,T09] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
-;* V07 tmp6 [V07 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.TypeHandle>
-; V08 tmp7 [V08,T07] ( 3, 2 ) int -> r7
-; V09 tmp8 [V09,T08] ( 2, 2 ) ubyte -> r3 "Inline stloc first use temp"
-;* V10 tmp9 [V10 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TypeHandle>
-;* V11 tmp10 [V11 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V12 tmp11 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V13 tmp12 [V13,T01] ( 2, 4 ) byref -> r0 single-def "Inlining Arg"
-;* V14 tmp13 [V14,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V15 tmp14 [V15,T11] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V16 tmp15 [V16 ] ( 0, 0 ) int -> zero-ref "field V07.m_asTAddr (fldOffset=0x0)" P-INDEP
-; V17 tmp16 [V17,T04] ( 3, 3 ) int -> r0 "field V10.m_asTAddr (fldOffset=0x0)" P-INDEP
-; V18 cse0 [V18,T02] ( 3, 3 ) int -> r5 "CSE - aggressive"
-; V19 cse1 [V19,T03] ( 3, 3 ) int -> r6 "CSE - aggressive"
+; V05 tmp4 [V05,T02] ( 4, 4 ) ref -> r5 class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
+;* V06 tmp5 [V06 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.TypeHandle>
+; V07 tmp6 [V07,T07] ( 3, 2 ) int -> r6
+; V08 tmp7 [V08,T08] ( 2, 2 ) ubyte -> r3 "Inline stloc first use temp"
+;* V09 tmp8 [V09 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TypeHandle>
+;* V10 tmp9 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V11 tmp10 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V12 tmp11 [V12,T03] ( 2, 4 ) byref -> r0 single-def "Inlining Arg"
+;* V13 tmp12 [V13,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V14 tmp13 [V14 ] ( 0, 0 ) int -> zero-ref "field V06.m_asTAddr (fldOffset=0x0)" P-INDEP
+; V15 tmp14 [V15,T04] ( 3, 3 ) int -> r0 "field V09.m_asTAddr (fldOffset=0x0)" P-INDEP
+; V16 rat0 [V16,T01] ( 5, 7.50) ref -> r5 class-hnd "replacement local" <System.RuntimeType>
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M8853_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r11,lr}
+ push {r3,r4,r5,r6,r11,lr}
add r11, sp, 16
mov r4, r0
; gcrRegs +[r4]
;; size=10 bbWeight=1 PerfScore 3.00
G_M8853_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r5, [r4]
- movw r6, 0xd1ff
- movt r6, 0xd1ff
- cmp r5, r6
- bne SHORT G_M8853_IG11
- ldr r0, [r4+0x0C]
+ ldrsb r0, [r4]
+ mov r5, r4
+ ; gcrRegs +[r5]
+ cmp r5, 0
+ bne SHORT G_M8853_IG10
+ ;; size=10 bbWeight=1 PerfScore 4.00
+G_M8853_IG03: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ cmp r5, 0
+ beq SHORT G_M8853_IG15
+ ldr r0, [r5+0x0C]
ands r3, r0, 2
cmp r3, 0
- bne SHORT G_M8853_IG15
+ bne SHORT G_M8853_IG14
ldr r0, [r0]
and r0, r0, 0xf0000
cmp r0, 0xc0000
- beq SHORT G_M8853_IG03
- movs r7, 0
- b SHORT G_M8853_IG04
- ;; size=40 bbWeight=1 PerfScore 15.00
-G_M8853_IG03: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- movs r7, 1
+ beq SHORT G_M8853_IG04
+ movs r6, 0
+ b SHORT G_M8853_IG05
+ ;; size=30 bbWeight=1 PerfScore 12.00
+G_M8853_IG04: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+ movs r6, 1
;; size=2 bbWeight=1 PerfScore 1.00
-G_M8853_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- uxtb r3, r7
+G_M8853_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+ uxtb r3, r6
;; size=2 bbWeight=1 PerfScore 1.00
-G_M8853_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M8853_IG06: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r5]
cmp r3, 0
- bne SHORT G_M8853_IG09
+ bne SHORT G_M8853_IG12
movw r0, 0xd1ff
movt r0, 0xd1ff
cmp r4, r0
- beq SHORT G_M8853_IG07
- cmp r5, r6
- bne SHORT G_M8853_IG14
+ beq SHORT G_M8853_IG08
+ ldr r0, [r4]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r0, r3
+ bne SHORT G_M8853_IG18
mov r0, r4
; gcrRegs +[r0]
movw r3, 0xd1ff
@@ -77,26 +82,45 @@ G_M8853_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
ldr r3, [r3]
blx r3 // <unknown method>
; gcrRegs -[r4]
- ;; size=34 bbWeight=1 PerfScore 13.00
-G_M8853_IG06: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
- pop {r4,r5,r6,r7,r11,pc}
+ ;; size=44 bbWeight=1 PerfScore 16.00
+G_M8853_IG07: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M8853_IG07: ; bbWeight=0.92, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M8853_IG08: ; bbWeight=0.92, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0]
movs r0, 0
;; size=2 bbWeight=0.92 PerfScore 0.92
-G_M8853_IG08: ; bbWeight=0.92, epilog, nogc, extend
- pop {r4,r5,r6,r7,r11,pc}
+G_M8853_IG09: ; bbWeight=0.92, epilog, nogc, extend
+ pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=0.92 PerfScore 0.92
-G_M8853_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M8853_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[r4-r5]
+ ldr r0, [r5]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r0, r3
+ beq SHORT G_M8853_IG03
+ ;; size=14 bbWeight=0.50 PerfScore 2.50
+G_M8853_IG11: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r5]
+ movs r5, 0
+ b SHORT G_M8853_IG03
+ ;; size=4 bbWeight=0.25 PerfScore 0.50
+G_M8853_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r4]
movw r0, 0xd1ff
movt r0, 0xd1ff
;; size=8 bbWeight=0 PerfScore 0.00
-G_M8853_IG10: ; bbWeight=0, epilog, nogc, extend
- pop {r4,r5,r6,r7,r11,pc}
+G_M8853_IG13: ; bbWeight=0, epilog, nogc, extend
+ pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=0 PerfScore 0.00
-G_M8853_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[r4]
+G_M8853_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[r4-r5]
+ movs r6, 0
+ b SHORT G_M8853_IG05
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M8853_IG15: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r5]
mov r0, r4
; gcrRegs +[r0]
ldr r3, [r4]
@@ -106,17 +130,17 @@ G_M8853_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byre
; gcrRegs -[r0]
and r0, r0, 32
cmp r0, 32
- beq SHORT G_M8853_IG12
+ beq SHORT G_M8853_IG16
movs r3, 0
- b SHORT G_M8853_IG13
+ b SHORT G_M8853_IG17
;; size=22 bbWeight=0 PerfScore 0.00
-G_M8853_IG12: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M8853_IG16: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
movs r3, 1
;; size=2 bbWeight=0 PerfScore 0.00
-G_M8853_IG13: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M8853_IG05
+G_M8853_IG17: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M8853_IG06
;; size=2 bbWeight=0 PerfScore 0.00
-G_M8853_IG14: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M8853_IG18: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
mov r0, r4
; gcrRegs +[r0]
ldr r3, [r4]
@@ -124,15 +148,10 @@ G_M8853_IG14: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
ldr r3, [r3+0x10]
blx r3 // <unknown method>
; gcrRegs -[r4]
- b SHORT G_M8853_IG06
+ b SHORT G_M8853_IG07
;; size=12 bbWeight=0 PerfScore 0.00
-G_M8853_IG15: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0] +[r4]
- movs r7, 0
- b SHORT G_M8853_IG04
- ;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 152, prolog size 8, PerfScore 35.85, instruction count 59, allocated bytes for code 152 (MethodHash=a7e7dd6a) for method System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
+; Total bytes of code 180, prolog size 8, PerfScore 42.85, instruction count 70, allocated bytes for code 180 (MethodHash=a7e7dd6a) for method System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
; ============================================================
Unwind Info:
@@ -144,7 +163,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 76 (0x0004c) Actual length = 152 (0x000098)
+ Function Length : 90 (0x0005a) Actual length = 180 (0x0000b4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -160,7 +179,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 F0 pop {r4,r5,r6,r7,r11,lr} ; opsize 32
+ A8 78 pop {r3,r4,r5,r6,r11,lr} ; opsize 32
FF end
FF end
+28 (+18.42%) : 92934.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
@@ -14,62 +14,67 @@
; V02 tmp1 [V02,T05] ( 3, 2 ) ref -> r0 "guarded devirt return temp"
;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
; V04 tmp3 [V04,T06] ( 3, 2 ) ubyte -> r3 "Inline return value spill temp"
-;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V06 tmp5 [V06,T09] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
-;* V07 tmp6 [V07 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.TypeHandle>
-; V08 tmp7 [V08,T07] ( 3, 2 ) int -> r7
-; V09 tmp8 [V09,T08] ( 2, 2 ) ubyte -> r3 "Inline stloc first use temp"
-;* V10 tmp9 [V10 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TypeHandle>
-;* V11 tmp10 [V11 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V12 tmp11 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V13 tmp12 [V13,T01] ( 2, 4 ) byref -> r0 single-def "Inlining Arg"
-;* V14 tmp13 [V14,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V15 tmp14 [V15,T11] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V16 tmp15 [V16 ] ( 0, 0 ) int -> zero-ref "field V07.m_asTAddr (fldOffset=0x0)" P-INDEP
-; V17 tmp16 [V17,T04] ( 3, 3 ) int -> r0 "field V10.m_asTAddr (fldOffset=0x0)" P-INDEP
-; V18 cse0 [V18,T02] ( 3, 3 ) int -> r5 "CSE - aggressive"
-; V19 cse1 [V19,T03] ( 3, 3 ) int -> r6 "CSE - aggressive"
+; V05 tmp4 [V05,T02] ( 4, 4 ) ref -> r5 class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
+;* V06 tmp5 [V06 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.TypeHandle>
+; V07 tmp6 [V07,T07] ( 3, 2 ) int -> r6
+; V08 tmp7 [V08,T08] ( 2, 2 ) ubyte -> r3 "Inline stloc first use temp"
+;* V09 tmp8 [V09 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TypeHandle>
+;* V10 tmp9 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V11 tmp10 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V12 tmp11 [V12,T03] ( 2, 4 ) byref -> r0 single-def "Inlining Arg"
+;* V13 tmp12 [V13,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V14 tmp13 [V14 ] ( 0, 0 ) int -> zero-ref "field V06.m_asTAddr (fldOffset=0x0)" P-INDEP
+; V15 tmp14 [V15,T04] ( 3, 3 ) int -> r0 "field V09.m_asTAddr (fldOffset=0x0)" P-INDEP
+; V16 rat0 [V16,T01] ( 5, 7.50) ref -> r5 class-hnd "replacement local" <System.RuntimeType>
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M8853_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r11,lr}
+ push {r3,r4,r5,r6,r11,lr}
add r11, sp, 16
mov r4, r0
; gcrRegs +[r4]
;; size=10 bbWeight=1 PerfScore 3.00
G_M8853_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r5, [r4]
- movw r6, 0xd1ff
- movt r6, 0xd1ff
- cmp r5, r6
- bne SHORT G_M8853_IG13
- ldr r0, [r4+0x0C]
+ ldrsb r0, [r4]
+ mov r5, r4
+ ; gcrRegs +[r5]
+ cmp r5, 0
+ bne SHORT G_M8853_IG10
+ ;; size=10 bbWeight=1 PerfScore 4.00
+G_M8853_IG03: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ cmp r5, 0
+ beq SHORT G_M8853_IG15
+ ldr r0, [r5+0x0C]
ands r3, r0, 2
cmp r3, 0
- bne SHORT G_M8853_IG12
+ bne SHORT G_M8853_IG14
ldr r0, [r0]
and r0, r0, 0xf0000
cmp r0, 0xc0000
- beq SHORT G_M8853_IG03
- movs r7, 0
- b SHORT G_M8853_IG04
- ;; size=40 bbWeight=1 PerfScore 15.00
-G_M8853_IG03: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- movs r7, 1
+ beq SHORT G_M8853_IG04
+ movs r6, 0
+ b SHORT G_M8853_IG05
+ ;; size=30 bbWeight=1 PerfScore 12.00
+G_M8853_IG04: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+ movs r6, 1
;; size=2 bbWeight=1 PerfScore 1.00
-G_M8853_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- uxtb r3, r7
+G_M8853_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+ uxtb r3, r6
;; size=2 bbWeight=1 PerfScore 1.00
-G_M8853_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M8853_IG06: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r5]
cmp r3, 0
- bne SHORT G_M8853_IG09
+ bne SHORT G_M8853_IG12
movw r0, 0xd1ff
movt r0, 0xd1ff
cmp r4, r0
- beq SHORT G_M8853_IG07
- cmp r5, r6
- bne SHORT G_M8853_IG11
+ beq SHORT G_M8853_IG08
+ ldr r0, [r4]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r0, r3
+ bne SHORT G_M8853_IG18
mov r0, r4
; gcrRegs +[r0]
movw r3, 0xd1ff
@@ -77,41 +82,45 @@ G_M8853_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
ldr r3, [r3]
blx r3 // <unknown method>
; gcrRegs -[r4]
- ;; size=34 bbWeight=1 PerfScore 13.00
-G_M8853_IG06: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
- pop {r4,r5,r6,r7,r11,pc}
+ ;; size=44 bbWeight=1 PerfScore 16.00
+G_M8853_IG07: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M8853_IG07: ; bbWeight=0.94, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M8853_IG08: ; bbWeight=0.94, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0]
movs r0, 0
;; size=2 bbWeight=0.94 PerfScore 0.94
-G_M8853_IG08: ; bbWeight=0.94, epilog, nogc, extend
- pop {r4,r5,r6,r7,r11,pc}
+G_M8853_IG09: ; bbWeight=0.94, epilog, nogc, extend
+ pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=0.94 PerfScore 0.94
-G_M8853_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M8853_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[r4-r5]
+ ldr r0, [r5]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r0, r3
+ beq SHORT G_M8853_IG03
+ ;; size=14 bbWeight=0.50 PerfScore 2.50
+G_M8853_IG11: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r5]
+ movs r5, 0
+ b SHORT G_M8853_IG03
+ ;; size=4 bbWeight=0.25 PerfScore 0.50
+G_M8853_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r4]
movw r0, 0xd1ff
movt r0, 0xd1ff
;; size=8 bbWeight=0 PerfScore 0.00
-G_M8853_IG10: ; bbWeight=0, epilog, nogc, extend
- pop {r4,r5,r6,r7,r11,pc}
+G_M8853_IG13: ; bbWeight=0, epilog, nogc, extend
+ pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=0 PerfScore 0.00
-G_M8853_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[r4]
- mov r0, r4
- ; gcrRegs +[r0]
- ldr r3, [r4]
- ldr r3, [r3+0x58]
- ldr r3, [r3+0x10]
- blx r3 // <unknown method>
- ; gcrRegs -[r4]
- b SHORT G_M8853_IG06
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M8853_IG12: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0] +[r4]
- movs r7, 0
- b SHORT G_M8853_IG04
+G_M8853_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[r4-r5]
+ movs r6, 0
+ b SHORT G_M8853_IG05
;; size=4 bbWeight=0 PerfScore 0.00
-G_M8853_IG13: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M8853_IG15: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r5]
mov r0, r4
; gcrRegs +[r0]
ldr r3, [r4]
@@ -121,18 +130,28 @@ G_M8853_IG13: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
and r0, r0, 32
cmp r0, 32
- beq SHORT G_M8853_IG14
+ beq SHORT G_M8853_IG16
movs r3, 0
- b SHORT G_M8853_IG15
+ b SHORT G_M8853_IG17
;; size=22 bbWeight=0 PerfScore 0.00
-G_M8853_IG14: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M8853_IG16: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
movs r3, 1
;; size=2 bbWeight=0 PerfScore 0.00
-G_M8853_IG15: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M8853_IG05
+G_M8853_IG17: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M8853_IG06
;; size=2 bbWeight=0 PerfScore 0.00
+G_M8853_IG18: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ mov r0, r4
+ ; gcrRegs +[r0]
+ ldr r3, [r4]
+ ldr r3, [r3+0x58]
+ ldr r3, [r3+0x10]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r4]
+ b SHORT G_M8853_IG07
+ ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 152, prolog size 8, PerfScore 35.88, instruction count 59, allocated bytes for code 152 (MethodHash=a7e7dd6a) for method System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
+; Total bytes of code 180, prolog size 8, PerfScore 42.88, instruction count 70, allocated bytes for code 180 (MethodHash=a7e7dd6a) for method System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
; ============================================================
Unwind Info:
@@ -144,7 +163,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 76 (0x0004c) Actual length = 152 (0x000098)
+ Function Length : 90 (0x0005a) Actual length = 180 (0x0000b4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -160,7 +179,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 F0 pop {r4,r5,r6,r7,r11,lr} ; opsize 32
+ A8 78 pop {r3,r4,r5,r6,r11,lr} ; opsize 32
FF end
FF end
benchmarks.run_tiered.linux.arm.checked.mch
-22 (-47.83%) : 17158.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (Tier1)
@@ -2,58 +2,39 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; Tier1 code
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) int -> r0 single-def
-; V01 arg0 [V01,T02] ( 4, 3.12) ref -> r1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) int -> r0 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> r1 class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 1.25) int -> r0 "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> r3 class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 8
+; Lcl frame size = 12
G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r2,r3,r11,lr}
- add r11, sp, 8
- str r0, [r11-0x04]
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r1]
- mov r3, r1
- ; gcrRegs +[r3]
- cmp r3, 0
- beq SHORT G_M8451_IG05
+ push {lr}
+ sub sp, 12
+ str r0, [sp+0x04]
;; size=6 bbWeight=1 PerfScore 3.00
-G_M8451_IG03: ; bbWeight=0.25, gcrefRegs=000A {r1 r3}, byrefRegs=0000 {}, byref, isz
- ldr r2, [r3]
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r1]
ldr r0, [r0+0x20]
ldr r0, [r0]
- cmp r2, r0
- beq SHORT G_M8451_IG05
- ;; size=10 bbWeight=0.25 PerfScore 1.25
-G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r3]
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_CHKCASTANY
; gcrRegs -[r1] +[r0]
- mov r3, r0
- ; gcrRegs +[r3]
- ;; size=12 bbWeight=0.12 PerfScore 0.50
-G_M8451_IG05: ; bbWeight=1, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r0]
- mov r0, r3
- ; gcrRegs +[r0]
- ;; size=2 bbWeight=1 PerfScore 1.00
-G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
- pop {r2,r3,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
+ ; gcr arg pop 0
+ ;; size=14 bbWeight=1 PerfScore 5.00
+G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
+ add sp, 12
+ pop {pc}
+ ;; size=4 bbWeight=1 PerfScore 2.00
-; Total bytes of code 46, prolog size 12, PerfScore 9.75, instruction count 17, allocated bytes for code 46 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
+; Total bytes of code 24, prolog size 6, PerfScore 10.00, instruction count 10, allocated bytes for code 24 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
; ============================================================
Unwind Info:
@@ -65,11 +46,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 23 (0x00017) Actual length = 46 (0x00002e)
+ Function Length : 12 (0x0000c) Actual length = 24 (0x000018)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 0C pop {r2,r3,r11,lr} ; opsize 32
- FF end
+ 03 add sp, sp, #12 ; opsize 16
+ ED 00 pop {lr} ; opsize 16
FF end
-32 (-41.03%) : 2774.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (Tier1)
@@ -2,64 +2,50 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; Tier1 code
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) int -> r4 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) int -> r0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> r1 single-def "CASTCLASS eval op1"
-; V03 tmp2 [V03,T03] ( 3, 1.25) int -> r2 "fgMakeTemp is creating a new local variable"
-; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> r0 class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> r1 single-def "argument with side effect"
+; V03 cse0 [V03,T02] ( 3, 3 ) int -> r4 "CSE - aggressive"
;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r11,lr}
- sub sp, 12
- add r11, sp, 16
- str r0, [r11-0x0C]
- mov r4, r0
- ;; size=16 bbWeight=1 PerfScore 5.00
-G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r4+0x20]
- ldr r0, [r0]
+ push {r2,r3,r4,lr}
+ str r0, [sp+0x04]
+ ;; size=4 bbWeight=1 PerfScore 2.00
+G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr r4, [r0+0x20]
+ ldr r0, [r4]
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[r0]
+ ; gcr arg pop 0
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
+ ; gcr arg pop 0
mov r1, r0
; gcrRegs +[r1]
- mov r0, r1
- cmp r0, 0
- beq SHORT G_M13946_IG05
- ;; size=34 bbWeight=1 PerfScore 13.00
-G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
- ldr r3, [r0]
- ldr r2, [r4+0x20]
- ldr r2, [r2]
- cmp r3, r2
- beq SHORT G_M13946_IG05
- ;; size=10 bbWeight=0.25 PerfScore 1.25
-G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
+ ldr r0, [r4]
; gcrRegs -[r0]
- mov r0, r2
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_CHKCASTANY
; gcrRegs -[r1] +[r0]
- ;; size=12 bbWeight=0.12 PerfScore 0.50
-G_M13946_IG05: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
- add sp, 12
- pop {r4,r11,pc}
- ;; size=6 bbWeight=1 PerfScore 2.00
+ ; gcr arg pop 0
+ ;; size=40 bbWeight=1 PerfScore 14.00
+G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
+ pop {r2,r3,r4,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 78, prolog size 14, PerfScore 21.75, instruction count 29, allocated bytes for code 78 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
+; Total bytes of code 46, prolog size 4, PerfScore 17.00, instruction count 17, allocated bytes for code 46 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
; ============================================================
Unwind Info:
@@ -71,11 +57,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 39 (0x00027) Actual length = 78 (0x00004e)
+ Function Length : 23 (0x00017) Actual length = 46 (0x00002e)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- 03 add sp, sp, #12 ; opsize 16
- A8 10 pop {r4,r11,lr} ; opsize 32
+ ED 1C pop {r2,r3,r4,lr} ; opsize 16
+ FF end
FF end
-28 (-40.00%) : 17969.dasm - System.Threading.AsyncLocal`1[System.Canon]:get_Value():System.Canon:this (Tier1)
@@ -2,64 +2,50 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; Tier1 code
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 4, 3.25) ref -> r4 this class-hnd single-def <System.Threading.AsyncLocal`1[System.__Canon]>
-; V01 loc0 [V01,T02] ( 3, 2.12) ref -> r1 class-hnd single-def <System.Object>
+; V00 this [V00,T00] ( 4, 4 ) ref -> r4 this class-hnd single-def <System.Threading.AsyncLocal`1[System.__Canon]>
+; V01 loc0 [V01,T01] ( 2, 2 ) ref -> r1 class-hnd single-def <System.Object>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 1.25) int -> r2 "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> r0 class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M1970_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r11,lr}
- sub sp, 12
- add r11, sp, 16
- str r0, [r11-0x0C]
+ push {r2,r3,r4,lr}
+ str r0, [sp+0x04]
mov r4, r0
; gcrRegs +[r4]
- ;; size=16 bbWeight=1 PerfScore 5.00
-G_M1970_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ;; size=6 bbWeight=1 PerfScore 3.00
+G_M1970_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
mov r0, r4
; gcrRegs +[r0]
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // System.Threading.ExecutionContext:GetLocalValue(System.Threading.IAsyncLocal):System.Object
+ ; gcr arg pop 0
mov r1, r0
; gcrRegs +[r1]
- mov r0, r1
- cmp r0, 0
- beq SHORT G_M1970_IG05
- ;; size=22 bbWeight=1 PerfScore 9.00
-G_M1970_IG03: ; bbWeight=0.25, gcrefRegs=0013 {r0 r1 r4}, byrefRegs=0000 {}, byref, isz
- ldr r3, [r0]
- ldr r2, [r4]
- ldr r2, [r2+0x24]
- ldr r2, [r2]
- ldr r2, [r2]
- cmp r3, r2
- beq SHORT G_M1970_IG05
- ;; size=14 bbWeight=0.25 PerfScore 1.75
-G_M1970_IG04: ; bbWeight=0.12, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref
+ ldr r0, [r4]
; gcrRegs -[r0]
- mov r0, r2
+ ldr r0, [r0+0x24]
+ ldr r0, [r0]
+ ldr r0, [r0]
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_CHKCASTANY
; gcrRegs -[r1] +[r0]
- ;; size=12 bbWeight=0.12 PerfScore 0.50
-G_M1970_IG05: ; bbWeight=1, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref, epilog, nogc
- add sp, 12
- pop {r4,r11,pc}
- ;; size=6 bbWeight=1 PerfScore 2.00
+ ; gcr arg pop 0
+ ;; size=34 bbWeight=1 PerfScore 13.00
+G_M1970_IG03: ; bbWeight=1, epilog, nogc, extend
+ pop {r2,r3,r4,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 70, prolog size 14, PerfScore 18.25, instruction count 27, allocated bytes for code 70 (MethodHash=11a2f84d) for method System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
+; Total bytes of code 42, prolog size 4, PerfScore 17.00, instruction count 17, allocated bytes for code 42 (MethodHash=11a2f84d) for method System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
; ============================================================
Unwind Info:
@@ -71,11 +57,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 35 (0x00023) Actual length = 70 (0x000046)
+ Function Length : 21 (0x00015) Actual length = 42 (0x00002a)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- 03 add sp, sp, #12 ; opsize 16
- A8 10 pop {r4,r11,lr} ; opsize 32
+ ED 1C pop {r2,r3,r4,lr} ; opsize 16
+ FF end
FF end
+10 (+10.42%) : 40071.dasm - PerfLabTests.CastingPerf:IntObj():this (Tier0-FullOpts)
@@ -8,78 +8,72 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf>
-; V01 loc0 [V01,T02] ( 4, 13 ) int -> r4
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> r4
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> r1 "CASTCLASS eval op1"
-; V04 tmp2 [V04,T05] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> r3 class-hnd "spilling QMark2" <<unknown class>>
-; V06 cse0 [V06,T03] ( 3, 6 ) int -> r5 "CSE - aggressive"
-; V07 cse1 [V07,T06] ( 2, 5 ) ref -> r7 hoist "CSE - aggressive"
-; V08 cse2 [V08,T04] ( 3, 6 ) int -> r6 "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> r5 "CSE - aggressive"
+; V04 cse1 [V04,T01] ( 3, 6 ) ref -> r7 "CSE - aggressive"
+; V05 cse2 [V05,T03] ( 3, 6 ) int -> r6 "CSE - aggressive"
+; TEMP_01 ref -> [r11-0x14]
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M36328_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r11,lr}
- add r11, sp, 16
- ;; size=8 bbWeight=1 PerfScore 2.00
+ push {r2,r3,r4,r5,r6,r7,r11,lr}
+ add r11, sp, 24
+ movs r1, 0
+ str r1, [sp+0x04]
+ ;; size=12 bbWeight=1 PerfScore 4.00
G_M36328_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movs r4, 0
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- ldr r5, [r0]
+ movw r1, 0xd1ff
+ movt r1, 0xd1ff
+ ldr r5, [r1]
cmp r5, 0
- ble SHORT G_M36328_IG07
+ ble SHORT G_M36328_IG04
movw r6, 0xd1ff
movt r6, 0xd1ff
ldr r7, [r6]
; gcrRegs +[r7]
- ;; size=26 bbWeight=1 PerfScore 9.00
-G_M36328_IG03: ; bbWeight=4, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
mov r1, r7
; gcrRegs +[r1]
- mov r3, r1
- ; gcrRegs +[r3]
- cmp r3, 0
- beq SHORT G_M36328_IG06
- ;; size=8 bbWeight=4 PerfScore 16.00
-G_M36328_IG04: ; bbWeight=1, gcrefRegs=008A {r1 r3 r7}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r3]
- movw r2, 0xd1ff
- movt r2, 0xd1ff
- cmp r0, r2
- beq SHORT G_M36328_IG06
- ;; size=14 bbWeight=1 PerfScore 5.00
-G_M36328_IG05: ; bbWeight=0.50, gcrefRegs=0082 {r1 r7}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r3]
- mov r0, r2
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_CHKCASTARRAY
; gcrRegs -[r1] +[r0]
; gcr arg pop 0
- mov r3, r0
- ; gcrRegs +[r3]
- ;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M36328_IG06: ; bbWeight=4, gcrefRegs=0088 {r3 r7}, byrefRegs=0000 {}, byref, isz
+ ;; size=46 bbWeight=1 PerfScore 15.00
+G_M36328_IG03: ; bbWeight=4, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
+ mov r1, r7
+ ; gcrRegs +[r1]
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ blx r3 // CORINFO_HELP_CHKCASTARRAY
+ ; gcrRegs -[r1] +[r0]
+ ; gcr arg pop 0
+ str r0, [sp+0x04]
sub r0, r6, 28
- mov r1, r3
+ ; gcrRegs -[r0]
+ ldr r1, [sp+0x04]
; gcrRegs +[r1]
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[r1 r3]
+ ; gcrRegs -[r1]
adds r4, r4, 1
cmp r4, r5
blt SHORT G_M36328_IG03
- ;; size=22 bbWeight=4 PerfScore 32.00
-G_M36328_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=44 bbWeight=4 PerfScore 60.00
+G_M36328_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r7]
- pop {r4,r5,r6,r7,r11,pc}
+ pop {r2,r3,r4,r5,r6,r7,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 96, prolog size 8, PerfScore 67.50, instruction count 34, allocated bytes for code 96 (MethodHash=58d37217) for method PerfLabTests.CastingPerf:IntObj():this (Tier0-FullOpts)
+; Total bytes of code 106, prolog size 12, PerfScore 80.00, instruction count 35, allocated bytes for code 106 (MethodHash=58d37217) for method PerfLabTests.CastingPerf:IntObj():this (Tier0-FullOpts)
; ============================================================
Unwind Info:
@@ -91,11 +85,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 48 (0x00030) Actual length = 96 (0x000060)
+ Function Length : 53 (0x00035) Actual length = 106 (0x00006a)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 F0 pop {r4,r5,r6,r7,r11,lr} ; opsize 32
+ A8 FC pop {r2,r3,r4,r5,r6,r7,r11,lr} ; opsize 32
FF end
FF end
+10 (+10.64%) : 74966.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier0-FullOpts)
@@ -8,78 +8,72 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf>
-; V01 loc0 [V01,T02] ( 4, 13 ) int -> r4
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> r4
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> r1 "CASTCLASS eval op1"
-; V04 tmp2 [V04,T05] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> r3 class-hnd "spilling QMark2" <<unknown class>>
-; V06 cse0 [V06,T03] ( 3, 6 ) int -> r5 "CSE - aggressive"
-; V07 cse1 [V07,T06] ( 2, 5 ) ref -> r7 hoist "CSE - aggressive"
-; V08 cse2 [V08,T04] ( 3, 6 ) int -> r6 "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> r5 "CSE - aggressive"
+; V04 cse1 [V04,T01] ( 3, 6 ) ref -> r7 "CSE - aggressive"
+; V05 cse2 [V05,T03] ( 3, 6 ) int -> r6 "CSE - aggressive"
+; TEMP_01 ref -> [r11-0x14]
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M40467_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r11,lr}
- add r11, sp, 16
- ;; size=8 bbWeight=1 PerfScore 2.00
+ push {r2,r3,r4,r5,r6,r7,r11,lr}
+ add r11, sp, 24
+ movs r1, 0
+ str r1, [sp+0x04]
+ ;; size=12 bbWeight=1 PerfScore 4.00
G_M40467_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movs r4, 0
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- ldr r5, [r0]
+ movw r1, 0xd1ff
+ movt r1, 0xd1ff
+ ldr r5, [r1]
cmp r5, 0
- ble SHORT G_M40467_IG07
+ ble SHORT G_M40467_IG04
movw r6, 0xd1ff
movt r6, 0xd1ff
ldr r7, [r6]
; gcrRegs +[r7]
- ;; size=26 bbWeight=1 PerfScore 9.00
-G_M40467_IG03: ; bbWeight=4, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
mov r1, r7
; gcrRegs +[r1]
- mov r3, r1
- ; gcrRegs +[r3]
- cmp r3, 0
- beq SHORT G_M40467_IG06
- ;; size=8 bbWeight=4 PerfScore 16.00
-G_M40467_IG04: ; bbWeight=1, gcrefRegs=008A {r1 r3 r7}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r3]
- movw r2, 0xd1ff
- movt r2, 0xd1ff
- cmp r0, r2
- beq SHORT G_M40467_IG06
- ;; size=14 bbWeight=1 PerfScore 5.00
-G_M40467_IG05: ; bbWeight=0.50, gcrefRegs=0082 {r1 r7}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r3]
- mov r0, r2
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_CHKCASTARRAY
; gcrRegs -[r1] +[r0]
; gcr arg pop 0
- mov r3, r0
- ; gcrRegs +[r3]
- ;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M40467_IG06: ; bbWeight=4, gcrefRegs=0088 {r3 r7}, byrefRegs=0000 {}, byref, isz
+ ;; size=46 bbWeight=1 PerfScore 15.00
+G_M40467_IG03: ; bbWeight=4, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
+ mov r1, r7
+ ; gcrRegs +[r1]
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ blx r3 // CORINFO_HELP_CHKCASTARRAY
+ ; gcrRegs -[r1] +[r0]
+ ; gcr arg pop 0
+ str r0, [sp+0x04]
adds r0, r6, 4
- mov r1, r3
+ ; gcrRegs -[r0]
+ ldr r1, [sp+0x04]
; gcrRegs +[r1]
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[r1 r3]
+ ; gcrRegs -[r1]
adds r4, r4, 1
cmp r4, r5
blt SHORT G_M40467_IG03
- ;; size=20 bbWeight=4 PerfScore 32.00
-G_M40467_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=42 bbWeight=4 PerfScore 60.00
+G_M40467_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r7]
- pop {r4,r5,r6,r7,r11,pc}
+ pop {r2,r3,r4,r5,r6,r7,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 94, prolog size 8, PerfScore 67.50, instruction count 34, allocated bytes for code 94 (MethodHash=dc5f61ec) for method PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier0-FullOpts)
+; Total bytes of code 104, prolog size 12, PerfScore 80.00, instruction count 35, allocated bytes for code 104 (MethodHash=dc5f61ec) for method PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier0-FullOpts)
; ============================================================
Unwind Info:
@@ -91,11 +85,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 47 (0x0002f) Actual length = 94 (0x00005e)
+ Function Length : 52 (0x00034) Actual length = 104 (0x000068)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 F0 pop {r4,r5,r6,r7,r11,lr} ; opsize 32
+ A8 FC pop {r2,r3,r4,r5,r6,r7,r11,lr} ; opsize 32
FF end
FF end
+10 (+10.64%) : 71803.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier0-FullOpts)
@@ -8,78 +8,72 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf>
-; V01 loc0 [V01,T02] ( 4, 13 ) int -> r4
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> r4
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> r1 "CASTCLASS eval op1"
-; V04 tmp2 [V04,T05] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> r3 class-hnd "spilling QMark2" <<unknown class>>
-; V06 cse0 [V06,T03] ( 3, 6 ) int -> r5 "CSE - aggressive"
-; V07 cse1 [V07,T06] ( 2, 5 ) ref -> r7 hoist "CSE - aggressive"
-; V08 cse2 [V08,T04] ( 3, 6 ) int -> r6 "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> r5 "CSE - aggressive"
+; V04 cse1 [V04,T01] ( 3, 6 ) ref -> r7 "CSE - aggressive"
+; V05 cse2 [V05,T03] ( 3, 6 ) int -> r6 "CSE - aggressive"
+; TEMP_01 ref -> [r11-0x14]
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M896_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r11,lr}
- add r11, sp, 16
- ;; size=8 bbWeight=1 PerfScore 2.00
+ push {r2,r3,r4,r5,r6,r7,r11,lr}
+ add r11, sp, 24
+ movs r1, 0
+ str r1, [sp+0x04]
+ ;; size=12 bbWeight=1 PerfScore 4.00
G_M896_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movs r4, 0
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- ldr r5, [r0]
+ movw r1, 0xd1ff
+ movt r1, 0xd1ff
+ ldr r5, [r1]
cmp r5, 0
- ble SHORT G_M896_IG07
+ ble SHORT G_M896_IG04
movw r6, 0xd1ff
movt r6, 0xd1ff
ldr r7, [r6]
; gcrRegs +[r7]
- ;; size=26 bbWeight=1 PerfScore 9.00
-G_M896_IG03: ; bbWeight=4, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
mov r1, r7
; gcrRegs +[r1]
- mov r3, r1
- ; gcrRegs +[r3]
- cmp r3, 0
- beq SHORT G_M896_IG06
- ;; size=8 bbWeight=4 PerfScore 16.00
-G_M896_IG04: ; bbWeight=1, gcrefRegs=008A {r1 r3 r7}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r3]
- movw r2, 0xd1ff
- movt r2, 0xd1ff
- cmp r0, r2
- beq SHORT G_M896_IG06
- ;; size=14 bbWeight=1 PerfScore 5.00
-G_M896_IG05: ; bbWeight=0.50, gcrefRegs=0082 {r1 r7}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r3]
- mov r0, r2
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_CHKCASTARRAY
; gcrRegs -[r1] +[r0]
; gcr arg pop 0
- mov r3, r0
- ; gcrRegs +[r3]
- ;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M896_IG06: ; bbWeight=4, gcrefRegs=0088 {r3 r7}, byrefRegs=0000 {}, byref, isz
+ ;; size=46 bbWeight=1 PerfScore 15.00
+G_M896_IG03: ; bbWeight=4, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
+ mov r1, r7
+ ; gcrRegs +[r1]
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ blx r3 // CORINFO_HELP_CHKCASTARRAY
+ ; gcrRegs -[r1] +[r0]
+ ; gcr arg pop 0
+ str r0, [sp+0x04]
adds r0, r6, 4
- mov r1, r3
+ ; gcrRegs -[r0]
+ ldr r1, [sp+0x04]
; gcrRegs +[r1]
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[r1 r3]
+ ; gcrRegs -[r1]
adds r4, r4, 1
cmp r4, r5
blt SHORT G_M896_IG03
- ;; size=20 bbWeight=4 PerfScore 32.00
-G_M896_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=42 bbWeight=4 PerfScore 60.00
+G_M896_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r7]
- pop {r4,r5,r6,r7,r11,pc}
+ pop {r2,r3,r4,r5,r6,r7,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 94, prolog size 8, PerfScore 67.50, instruction count 34, allocated bytes for code 94 (MethodHash=984afc7f) for method PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier0-FullOpts)
+; Total bytes of code 104, prolog size 12, PerfScore 80.00, instruction count 35, allocated bytes for code 104 (MethodHash=984afc7f) for method PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier0-FullOpts)
; ============================================================
Unwind Info:
@@ -91,11 +85,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 47 (0x0002f) Actual length = 94 (0x00005e)
+ Function Length : 52 (0x00034) Actual length = 104 (0x000068)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 F0 pop {r4,r5,r6,r7,r11,lr} ; opsize 32
+ A8 FC pop {r2,r3,r4,r5,r6,r7,r11,lr} ; opsize 32
FF end
FF end
coreclr_tests.run.linux.arm.checked.mch
-30 (-44.12%) : 228171.dasm - Program+TestDelegateFatFunctionPointers:OtherGenericSystem.__Canon:System.__Canon:this (FullOpts)
@@ -2,65 +2,51 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; FullOpts code
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Program+TestDelegateFatFunctionPointers>
-; V01 TypeCtx [V01,T01] ( 5, 4.25) int -> r4 single-def
-; V02 arg1 [V02,T02] ( 3, 3 ) ref -> r2 class-hnd single-def <System.Object>
+; V01 TypeCtx [V01,T00] ( 4, 4 ) int -> r1 single-def
+; V02 arg1 [V02,T01] ( 3, 3 ) ref -> r2 class-hnd single-def <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 4.25) ref -> r1 single-def "CASTCLASS eval op1"
-; V05 tmp2 [V05,T04] ( 3, 1.25) int -> r2 "fgMakeTemp is creating a new local variable"
-; V06 tmp3 [V06,T00] ( 5, 6.75) ref -> r0 class-hnd "spilling QMark2" <System.__Canon>
+; V04 tmp1 [V04,T02] ( 2, 4 ) ref -> r1 single-def "argument with side effect"
+; V05 cse0 [V05,T03] ( 3, 3 ) int -> r4 "CSE - aggressive"
;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M51557_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r11,lr}
- sub sp, 12
- add r11, sp, 16
- str r1, [r11-0x0C]
- mov r4, r1
- ;; size=16 bbWeight=1 PerfScore 5.00
-G_M51557_IG02: ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref, isz
+ push {r2,r3,r4,lr}
+ str r1, [sp+0x04]
+ ;; size=4 bbWeight=1 PerfScore 2.00
+G_M51557_IG02: ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref
; gcrRegs +[r2]
- ldr r0, [r4+0x20]
- ldr r0, [r0]
+ ldr r0, [r1+0x20]
+ ldr r4, [r0]
+ mov r0, r4
mov r1, r2
; gcrRegs +[r1]
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_ISINSTANCEOFANY
; gcrRegs -[r1-r2] +[r0]
+ ; gcr arg pop 0
mov r1, r0
; gcrRegs +[r1]
- mov r0, r1
- cmp r0, 0
- beq SHORT G_M51557_IG05
- ;; size=24 bbWeight=1 PerfScore 10.00
-G_M51557_IG03: ; bbWeight=0.25, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
- ldr r3, [r0]
- ldr r2, [r4+0x20]
- ldr r2, [r2]
- cmp r3, r2
- beq SHORT G_M51557_IG05
- ;; size=10 bbWeight=0.25 PerfScore 1.25
-G_M51557_IG04: ; bbWeight=0.12, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
+ mov r0, r4
; gcrRegs -[r0]
- mov r0, r2
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_CHKCASTANY
; gcrRegs -[r1] +[r0]
- ;; size=12 bbWeight=0.12 PerfScore 0.50
-G_M51557_IG05: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
- add sp, 12
- pop {r4,r11,pc}
- ;; size=6 bbWeight=1 PerfScore 2.00
+ ; gcr arg pop 0
+ ;; size=32 bbWeight=1 PerfScore 12.00
+G_M51557_IG03: ; bbWeight=1, epilog, nogc, extend
+ pop {r2,r3,r4,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 68, prolog size 14, PerfScore 18.75, instruction count 26, allocated bytes for code 68 (MethodHash=2a46369a) for method Program+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
+; Total bytes of code 38, prolog size 4, PerfScore 15.00, instruction count 15, allocated bytes for code 38 (MethodHash=2a46369a) for method Program+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
@@ -72,11 +58,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 34 (0x00022) Actual length = 68 (0x000044)
+ Function Length : 19 (0x00013) Actual length = 38 (0x000026)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- 03 add sp, sp, #12 ; opsize 16
- A8 10 pop {r4,r11,lr} ; opsize 32
+ ED 1C pop {r2,r3,r4,lr} ; opsize 16
+ FF end
FF end
-28 (-41.18%) : 232644.dasm - System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.Canon]:b11_1(System.Object):this (FullOpts)
@@ -2,65 +2,47 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; FullOpts code
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 2.25) ref -> r4 this class-hnd single-def <System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]>
-; V01 arg1 [V01,T01] ( 4, 3.12) ref -> r1 class-hnd single-def <System.Object>
+; V00 this [V00,T00] ( 3, 3 ) ref -> r4 this class-hnd single-def <System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]>
+; V01 arg1 [V01,T01] ( 3, 3 ) 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,T03] ( 3, 1.25) int -> r2 "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> r0 class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M10356_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r11,lr}
- sub sp, 12
- add r11, sp, 16
- str r0, [r11-0x0C]
+ push {r2,r3,r4,lr}
+ str r0, [sp+0x04]
mov r4, r0
; gcrRegs +[r4]
- ;; size=16 bbWeight=1 PerfScore 5.00
-G_M10356_IG02: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r1]
- mov r0, r1
- ; gcrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M10356_IG05
;; size=6 bbWeight=1 PerfScore 3.00
-G_M10356_IG03: ; bbWeight=0.25, gcrefRegs=0013 {r0 r1 r4}, byrefRegs=0000 {}, byref, isz
- ldr r3, [r0]
- ldr r2, [r4]
- ldr r2, [r2+0x24]
- ldr r2, [r2]
- ldr r2, [r2]
- cmp r3, r2
- beq SHORT G_M10356_IG05
- ;; size=14 bbWeight=0.25 PerfScore 1.75
-G_M10356_IG04: ; bbWeight=0.12, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r0]
- mov r0, r2
+G_M10356_IG02: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r1]
+ ldr r0, [r4]
+ ldr r0, [r0+0x24]
+ ldr r0, [r0]
+ ldr r0, [r0]
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_CHKCASTANY
; gcrRegs -[r1] +[r0]
- ;; size=12 bbWeight=0.12 PerfScore 0.50
-G_M10356_IG05: ; bbWeight=1, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref
+ ; gcr arg pop 0
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
ldr r2, [r0]
blx r3 // System.Net.Sockets.SocketAsyncContext+AsyncOperation:TryCancel():ubyte:this
; gcrRegs -[r0]
- ;; size=14 bbWeight=1 PerfScore 5.00
-G_M10356_IG06: ; bbWeight=1, epilog, nogc, extend
- add sp, 12
- pop {r4,r11,pc}
- ;; size=6 bbWeight=1 PerfScore 2.00
+ ; gcr arg pop 0
+ ;; size=32 bbWeight=1 PerfScore 12.00
+G_M10356_IG03: ; bbWeight=1, epilog, nogc, extend
+ pop {r2,r3,r4,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 68, prolog size 14, PerfScore 17.25, instruction count 26, allocated bytes for code 68 (MethodHash=959bd78b) for method System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]:<StartAsyncOperation>b__11_1(System.Object):this (FullOpts)
+; Total bytes of code 40, prolog size 4, PerfScore 16.00, instruction count 16, allocated bytes for code 40 (MethodHash=959bd78b) for method System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]:<StartAsyncOperation>b__11_1(System.Object):this (FullOpts)
; ============================================================
Unwind Info:
@@ -72,11 +54,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 34 (0x00022) Actual length = 68 (0x000044)
+ Function Length : 20 (0x00014) Actual length = 40 (0x000028)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- 03 add sp, sp, #12 ; opsize 16
- A8 10 pop {r4,r11,lr} ; opsize 32
+ ED 1C pop {r2,r3,r4,lr} ; opsize 16
+ FF end
FF end
-32 (-41.03%) : 227873.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (FullOpts)
@@ -2,64 +2,50 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; FullOpts code
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) int -> r4 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) int -> r0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> r1 single-def "CASTCLASS eval op1"
-; V03 tmp2 [V03,T03] ( 3, 1.25) int -> r2 "fgMakeTemp is creating a new local variable"
-; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> r0 class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> r1 single-def "argument with side effect"
+; V03 cse0 [V03,T02] ( 3, 3 ) int -> r4 "CSE - aggressive"
;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r11,lr}
- sub sp, 12
- add r11, sp, 16
- str r0, [r11-0x0C]
- mov r4, r0
- ;; size=16 bbWeight=1 PerfScore 5.00
-G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r4+0x20]
- ldr r0, [r0]
+ push {r2,r3,r4,lr}
+ str r0, [sp+0x04]
+ ;; size=4 bbWeight=1 PerfScore 2.00
+G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr r4, [r0+0x20]
+ ldr r0, [r4]
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[r0]
+ ; gcr arg pop 0
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
+ ; gcr arg pop 0
mov r1, r0
; gcrRegs +[r1]
- mov r0, r1
- cmp r0, 0
- beq SHORT G_M13946_IG05
- ;; size=34 bbWeight=1 PerfScore 13.00
-G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
- ldr r3, [r0]
- ldr r2, [r4+0x20]
- ldr r2, [r2]
- cmp r3, r2
- beq SHORT G_M13946_IG05
- ;; size=10 bbWeight=0.25 PerfScore 1.25
-G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
+ ldr r0, [r4]
; gcrRegs -[r0]
- mov r0, r2
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_CHKCASTANY
; gcrRegs -[r1] +[r0]
- ;; size=12 bbWeight=0.12 PerfScore 0.50
-G_M13946_IG05: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
- add sp, 12
- pop {r4,r11,pc}
- ;; size=6 bbWeight=1 PerfScore 2.00
+ ; gcr arg pop 0
+ ;; size=40 bbWeight=1 PerfScore 14.00
+G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
+ pop {r2,r3,r4,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 78, prolog size 14, PerfScore 21.75, instruction count 29, allocated bytes for code 78 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
+; Total bytes of code 46, prolog size 4, PerfScore 17.00, instruction count 17, allocated bytes for code 46 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -71,11 +57,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 39 (0x00027) Actual length = 78 (0x00004e)
+ Function Length : 23 (0x00017) Actual length = 46 (0x00002e)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- 03 add sp, sp, #12 ; opsize 16
- A8 10 pop {r4,r11,lr} ; opsize 32
+ ED 1C pop {r2,r3,r4,lr} ; opsize 16
+ FF end
FF end
+18 (+2.43%) : 95699.dasm - DisabledRuntimeMarshalling.PInvokeAssemblyMarshallingDisabled.PInvokes:g_AssertThrowsCorrectException|61(System.Action) (FullOpts)
@@ -10,73 +10,71 @@
;
; V00 arg0 [V00,T00] ( 4, 4 ) ref -> r3 class-hnd single-def <System.Action>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
-; V02 loc1 [V02,T10] ( 3, 0 ) ubyte -> r0
+; V02 loc1 [V02,T08] ( 3, 0 ) ubyte -> r0
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
; V04 loc3 [V04 ] ( 25, 0 ) struct (24) [sp+0x00] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06,T03] ( 4, 0 ) ref -> r4 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-; V07 tmp2 [V07,T15] ( 2, 0 ) ref -> r1 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+; V07 tmp2 [V07,T13] ( 2, 0 ) ref -> r1 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
; V08 tmp3 [V08,T02] ( 5, 0 ) ref -> r4 class-hnd single-def "dup spill" <<unknown class>>
;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref single-def
-; V10 tmp5 [V10,T11] ( 3, 0 ) int -> r0
-; V11 tmp6 [V11,T07] ( 2, 0 ) ref -> r0 class-hnd "spilling QMark2" <<unknown class>>
-; V12 tmp7 [V12,T08] ( 2, 0 ) ref -> r4 class-hnd "spilling QMark2" <<unknown class>>
-;* V13 tmp8 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
-;* V14 tmp9 [V14 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V15 tmp10 [V15,T04] ( 4, 0 ) int -> r0 "Inlining Arg"
-;* V16 tmp11 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V17 tmp12 [V17,T12] ( 3, 0 ) int -> r6 "Inlining Arg"
-; V18 tmp13 [V18,T16] ( 2, 0 ) byref -> r5 single-def "Inlining Arg"
-;* V19 tmp14 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V20 tmp15 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V21 tmp16 [V21,T24] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-;* V22 tmp17 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-;* V23 tmp18 [V23 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V24 tmp19 [V24,T17] ( 2, 0 ) byref -> r1 single-def "Inlining Arg"
-;* V25 tmp20 [V25 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V26 tmp21 [V26,T05] ( 4, 0 ) int -> r0 "Inlining Arg"
-;* V27 tmp22 [V27 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V28 tmp23 [V28,T13] ( 3, 0 ) int -> r6 "Inlining Arg"
-; V29 tmp24 [V29,T18] ( 2, 0 ) byref -> r5 single-def "Inlining Arg"
-;* V30 tmp25 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V31 tmp26 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V32 tmp27 [V32,T25] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-;* V33 tmp28 [V33 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-;* V34 tmp29 [V34 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V35 tmp30 [V35,T19] ( 2, 0 ) byref -> r1 single-def "Inlining Arg"
-;* V36 tmp31 [V36 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V37 tmp32 [V37,T06] ( 4, 0 ) int -> r4 "Inlining Arg"
-;* V38 tmp33 [V38 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V39 tmp34 [V39,T14] ( 3, 0 ) int -> r4 "Inlining Arg"
-; V40 tmp35 [V40,T20] ( 2, 0 ) byref -> r5 single-def "Inlining Arg"
-;* V41 tmp36 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V42 tmp37 [V42 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V43 tmp38 [V43,T26] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-;* V44 tmp39 [V44 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-;* V45 tmp40 [V45 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V46 tmp41 [V46,T21] ( 2, 0 ) byref -> r1 single-def "Inlining Arg"
-;* V47 tmp42 [V47 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP
-;* V48 tmp43 [V48 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x4)" P-INDEP
-;* V49 tmp44 [V49 ] ( 0, 0 ) byref -> zero-ref single-def "field V16._reference (fldOffset=0x0)" P-INDEP
-;* V50 tmp45 [V50 ] ( 0, 0 ) int -> zero-ref single-def "field V16._length (fldOffset=0x4)" P-INDEP
-;* V51 tmp46 [V51 ] ( 0, 0 ) byref -> zero-ref single-def "field V22._reference (fldOffset=0x0)" P-INDEP
-;* V52 tmp47 [V52 ] ( 0, 0 ) int -> zero-ref single-def "field V22._length (fldOffset=0x4)" P-INDEP
-;* V53 tmp48 [V53 ] ( 0, 0 ) byref -> zero-ref "field V25._reference (fldOffset=0x0)" P-INDEP
-;* V54 tmp49 [V54 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x4)" P-INDEP
-;* V55 tmp50 [V55 ] ( 0, 0 ) byref -> zero-ref single-def "field V27._reference (fldOffset=0x0)" P-INDEP
-;* V56 tmp51 [V56 ] ( 0, 0 ) int -> zero-ref single-def "field V27._length (fldOffset=0x4)" P-INDEP
-;* V57 tmp52 [V57 ] ( 0, 0 ) byref -> zero-ref single-def "field V33._reference (fldOffset=0x0)" P-INDEP
-;* V58 tmp53 [V58 ] ( 0, 0 ) int -> zero-ref single-def "field V33._length (fldOffset=0x4)" P-INDEP
-;* V59 tmp54 [V59 ] ( 0, 0 ) byref -> zero-ref "field V36._reference (fldOffset=0x0)" P-INDEP
-;* V60 tmp55 [V60 ] ( 0, 0 ) int -> zero-ref "field V36._length (fldOffset=0x4)" P-INDEP
-;* V61 tmp56 [V61 ] ( 0, 0 ) byref -> zero-ref single-def "field V38._reference (fldOffset=0x0)" P-INDEP
-;* V62 tmp57 [V62 ] ( 0, 0 ) int -> zero-ref single-def "field V38._length (fldOffset=0x4)" P-INDEP
-;* V63 tmp58 [V63 ] ( 0, 0 ) byref -> zero-ref single-def "field V44._reference (fldOffset=0x0)" P-INDEP
-;* V64 tmp59 [V64 ] ( 0, 0 ) int -> zero-ref single-def "field V44._length (fldOffset=0x4)" P-INDEP
-; V65 tmp60 [V65,T09] ( 3, 0 ) ref -> r0 single-def "argument with side effect"
-; V66 tmp61 [V66,T22] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
-; V67 tmp62 [V67,T23] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
-; V68 PSPSym [V68,T01] ( 1, 1 ) int -> [sp+0x1C] do-not-enreg[V] "PSPSym"
+; V10 tmp5 [V10,T09] ( 3, 0 ) int -> r0
+;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
+;* V12 tmp7 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
+; V13 tmp8 [V13,T04] ( 4, 0 ) int -> r0 "Inlining Arg"
+;* V14 tmp9 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
+; V15 tmp10 [V15,T10] ( 3, 0 ) int -> r6 "Inlining Arg"
+; V16 tmp11 [V16,T14] ( 2, 0 ) byref -> r5 single-def "Inlining Arg"
+;* V17 tmp12 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V18 tmp13 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V19 tmp14 [V19,T22] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V20 tmp15 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
+;* V21 tmp16 [V21 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
+; V22 tmp17 [V22,T15] ( 2, 0 ) byref -> r1 single-def "Inlining Arg"
+;* V23 tmp18 [V23 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
+; V24 tmp19 [V24,T05] ( 4, 0 ) int -> r0 "Inlining Arg"
+;* V25 tmp20 [V25 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
+; V26 tmp21 [V26,T11] ( 3, 0 ) int -> r6 "Inlining Arg"
+; V27 tmp22 [V27,T16] ( 2, 0 ) byref -> r5 single-def "Inlining Arg"
+;* V28 tmp23 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V29 tmp24 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V30 tmp25 [V30,T23] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V31 tmp26 [V31 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
+;* V32 tmp27 [V32 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
+; V33 tmp28 [V33,T17] ( 2, 0 ) byref -> r1 single-def "Inlining Arg"
+;* V34 tmp29 [V34 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
+; V35 tmp30 [V35,T06] ( 4, 0 ) int -> r4 "Inlining Arg"
+;* V36 tmp31 [V36 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
+; V37 tmp32 [V37,T12] ( 3, 0 ) int -> r4 "Inlining Arg"
+; V38 tmp33 [V38,T18] ( 2, 0 ) byref -> r5 single-def "Inlining Arg"
+;* V39 tmp34 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V40 tmp35 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V41 tmp36 [V41,T24] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V42 tmp37 [V42 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
+;* V43 tmp38 [V43 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
+; V44 tmp39 [V44,T19] ( 2, 0 ) byref -> r1 single-def "Inlining Arg"
+;* V45 tmp40 [V45 ] ( 0, 0 ) byref -> zero-ref "field V12._reference (fldOffset=0x0)" P-INDEP
+;* V46 tmp41 [V46 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x4)" P-INDEP
+;* V47 tmp42 [V47 ] ( 0, 0 ) byref -> zero-ref single-def "field V14._reference (fldOffset=0x0)" P-INDEP
+;* V48 tmp43 [V48 ] ( 0, 0 ) int -> zero-ref single-def "field V14._length (fldOffset=0x4)" P-INDEP
+;* V49 tmp44 [V49 ] ( 0, 0 ) byref -> zero-ref single-def "field V20._reference (fldOffset=0x0)" P-INDEP
+;* V50 tmp45 [V50 ] ( 0, 0 ) int -> zero-ref single-def "field V20._length (fldOffset=0x4)" P-INDEP
+;* V51 tmp46 [V51 ] ( 0, 0 ) byref -> zero-ref "field V23._reference (fldOffset=0x0)" P-INDEP
+;* V52 tmp47 [V52 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x4)" P-INDEP
+;* V53 tmp48 [V53 ] ( 0, 0 ) byref -> zero-ref single-def "field V25._reference (fldOffset=0x0)" P-INDEP
+;* V54 tmp49 [V54 ] ( 0, 0 ) int -> zero-ref single-def "field V25._length (fldOffset=0x4)" P-INDEP
+;* V55 tmp50 [V55 ] ( 0, 0 ) byref -> zero-ref single-def "field V31._reference (fldOffset=0x0)" P-INDEP
+;* V56 tmp51 [V56 ] ( 0, 0 ) int -> zero-ref single-def "field V31._length (fldOffset=0x4)" P-INDEP
+;* V57 tmp52 [V57 ] ( 0, 0 ) byref -> zero-ref "field V34._reference (fldOffset=0x0)" P-INDEP
+;* V58 tmp53 [V58 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x4)" P-INDEP
+;* V59 tmp54 [V59 ] ( 0, 0 ) byref -> zero-ref single-def "field V36._reference (fldOffset=0x0)" P-INDEP
+;* V60 tmp55 [V60 ] ( 0, 0 ) int -> zero-ref single-def "field V36._length (fldOffset=0x4)" P-INDEP
+;* V61 tmp56 [V61 ] ( 0, 0 ) byref -> zero-ref single-def "field V42._reference (fldOffset=0x0)" P-INDEP
+;* V62 tmp57 [V62 ] ( 0, 0 ) int -> zero-ref single-def "field V42._length (fldOffset=0x4)" P-INDEP
+; V63 tmp58 [V63,T07] ( 3, 0 ) ref -> r0 single-def "argument with side effect"
+; V64 tmp59 [V64,T20] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
+; V65 tmp60 [V65,T21] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
+; V66 PSPSym [V66,T01] ( 1, 1 ) int -> [sp+0x1C] do-not-enreg[V] "PSPSym"
;
; Lcl frame size = 32
@@ -163,21 +161,33 @@ G_M36108_IG07: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
; gcr arg pop 0
cmp r0, 0
bne SHORT G_M36108_IG08
- mov r0, r4
- ldr r0, [r0]
+ mov r1, r4
+ ; gcrRegs +[r1]
+ movw r0, 0xd1ff
; gcrRegs -[r0]
- movw r1, 0xd1ff
- movt r1, 0xd1ff
- cmp r0, r1
- beq SHORT G_M36108_IG08
- ldr r0, [r4]
- movw r1, 0xd1ff
- movt r1, 0xd1ff
- cmp r0, r1
- bne SHORT G_M36108_IG09
- ;; size=54 bbWeight=0 PerfScore 0.00
+ movt r0, 0xd1ff
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs -[r1] +[r0]
+ ; gcr arg pop 0
+ cmp r0, 0
+ bne SHORT G_M36108_IG08
+ mov r1, r4
+ ; gcrRegs +[r1]
+ movw r0, 0xd1ff
+ ; gcrRegs -[r0]
+ movt r0, 0xd1ff
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs -[r1 r4] +[r0]
+ ; gcr arg pop 0
+ cmp r0, 0
+ beq SHORT G_M36108_IG09
+ ;; size=72 bbWeight=0 PerfScore 0.00
G_M36108_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r4]
+ ; gcrRegs -[r0]
movs r0, 1
b SHORT G_M36108_IG10
;; size=4 bbWeight=0 PerfScore 0.00
@@ -459,7 +469,7 @@ G_M36108_IG29: ; bbWeight=0, funclet epilog, nogc, extend
pop {r2,r3,r4,r5,r6,r10,r11,pc}
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 742, prolog size 30, PerfScore 17.00, instruction count 252, allocated bytes for code 742 (MethodHash=e9c572f3) for method DisabledRuntimeMarshalling.PInvokeAssemblyMarshallingDisabled.PInvokes:<Varargs_NotSupported>g__AssertThrowsCorrectException|6_1(System.Action) (FullOpts)
+; Total bytes of code 760, prolog size 30, PerfScore 17.00, instruction count 257, allocated bytes for code 760 (MethodHash=e9c572f3) for method DisabledRuntimeMarshalling.PInvokeAssemblyMarshallingDisabled.PInvokes:<Varargs_NotSupported>g__AssertThrowsCorrectException|6_1(System.Action) (FullOpts)
; ============================================================
Unwind Info:
@@ -492,7 +502,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 59 (0x0003b) Actual length = 118 (0x000076)
+ Function Length : 68 (0x00044) Actual length = 136 (0x000088)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
+28 (+18.42%) : 328825.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
@@ -11,65 +11,82 @@
;
; V00 arg0 [V00,T00] ( 11, 7 ) ref -> r4 class-hnd single-def <System.Type>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T05] ( 3, 2 ) ref -> r0 "guarded devirt return temp"
+; V02 tmp1 [V02,T06] ( 3, 2 ) ref -> r0 "guarded devirt return temp"
;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
-; V04 tmp3 [V04,T06] ( 3, 2 ) ubyte -> r3 "Inline return value spill temp"
-;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V06 tmp5 [V06,T09] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
-;* V07 tmp6 [V07 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.TypeHandle>
-; V08 tmp7 [V08,T07] ( 3, 2 ) int -> r7
-; V09 tmp8 [V09,T08] ( 2, 2 ) ubyte -> r3 "Inline stloc first use temp"
-;* V10 tmp9 [V10 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TypeHandle>
-;* V11 tmp10 [V11 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V12 tmp11 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V13 tmp12 [V13,T01] ( 2, 4 ) byref -> r0 single-def "Inlining Arg"
-;* V14 tmp13 [V14,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V15 tmp14 [V15,T11] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V16 tmp15 [V16 ] ( 0, 0 ) int -> zero-ref "field V07.m_asTAddr (fldOffset=0x0)" P-INDEP
-; V17 tmp16 [V17,T04] ( 3, 3 ) int -> r0 "field V10.m_asTAddr (fldOffset=0x0)" P-INDEP
-; V18 cse0 [V18,T02] ( 3, 3 ) int -> r5 "CSE - aggressive"
-; V19 cse1 [V19,T03] ( 3, 3 ) int -> r6 "CSE - aggressive"
+; V04 tmp3 [V04,T05] ( 4, 2 ) ubyte -> r3 "Inline return value spill temp"
+; V05 tmp4 [V05,T02] ( 4, 4 ) ref -> r5 class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
+;* V06 tmp5 [V06 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.TypeHandle>
+; V07 tmp6 [V07,T07] ( 3, 2 ) int -> r6
+; V08 tmp7 [V08,T08] ( 2, 2 ) ubyte -> r3 "Inline stloc first use temp"
+;* V09 tmp8 [V09 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TypeHandle>
+;* V10 tmp9 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V11 tmp10 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V12 tmp11 [V12,T03] ( 2, 4 ) byref -> r0 single-def "Inlining Arg"
+;* V13 tmp12 [V13,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V14 tmp13 [V14 ] ( 0, 0 ) int -> zero-ref "field V06.m_asTAddr (fldOffset=0x0)" P-INDEP
+; V15 tmp14 [V15,T04] ( 3, 3 ) int -> r0 "field V09.m_asTAddr (fldOffset=0x0)" P-INDEP
+; V16 rat0 [V16,T01] ( 5, 7.50) ref -> r5 class-hnd "replacement local" <System.RuntimeType>
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M8853_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r11,lr}
+ push {r3,r4,r5,r6,r11,lr}
add r11, sp, 16
mov r4, r0
; gcrRegs +[r4]
;; size=10 bbWeight=1 PerfScore 3.00
G_M8853_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r5, [r4]
- movw r6, 0xd1ff
- movt r6, 0xd1ff
- cmp r5, r6
- bne SHORT G_M8853_IG11
- ldr r0, [r4+0x0C]
+ ldrsb r0, [r4]
+ mov r5, r4
+ ; gcrRegs +[r5]
+ cmp r5, 0
+ beq SHORT G_M8853_IG05
+ ;; size=10 bbWeight=1 PerfScore 4.00
+G_M8853_IG03: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ ldr r0, [r5]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r0, r3
+ beq SHORT G_M8853_IG05
+ ;; size=14 bbWeight=0.50 PerfScore 2.50
+G_M8853_IG04: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r5]
+ movs r5, 0
+ ;; size=2 bbWeight=0.25 PerfScore 0.25
+G_M8853_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r5]
+ cmp r5, 0
+ beq SHORT G_M8853_IG14
+ ldr r0, [r5+0x0C]
ands r3, r0, 2
cmp r3, 0
- bne SHORT G_M8853_IG15
+ bne SHORT G_M8853_IG13
ldr r0, [r0]
and r0, r0, 0xf0000
cmp r0, 0xc0000
- beq SHORT G_M8853_IG03
- movs r7, 0
- b SHORT G_M8853_IG04
- ;; size=40 bbWeight=1 PerfScore 15.00
-G_M8853_IG03: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- movs r7, 1
+ beq SHORT G_M8853_IG06
+ movs r6, 0
+ b SHORT G_M8853_IG07
+ ;; size=30 bbWeight=1 PerfScore 12.00
+G_M8853_IG06: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+ movs r6, 1
;; size=2 bbWeight=1 PerfScore 1.00
-G_M8853_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- uxtb r3, r7
- ;; size=2 bbWeight=1 PerfScore 1.00
-G_M8853_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M8853_IG07: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ uxtb r3, r6
cmp r3, 0
- bne SHORT G_M8853_IG09
+ bne SHORT G_M8853_IG17
+ ;; size=6 bbWeight=1 PerfScore 3.00
+G_M8853_IG08: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r5]
movw r0, 0xd1ff
movt r0, 0xd1ff
cmp r4, r0
- beq SHORT G_M8853_IG07
- cmp r5, r6
- bne SHORT G_M8853_IG14
+ beq SHORT G_M8853_IG10
+ ldr r0, [r4]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r0, r3
+ bne SHORT G_M8853_IG12
mov r0, r4
; gcrRegs +[r0]
movw r3, 0xd1ff
@@ -77,62 +94,65 @@ G_M8853_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
ldr r3, [r3]
blx r3 // <unknown method>
; gcrRegs -[r4]
- ;; size=34 bbWeight=1 PerfScore 13.00
-G_M8853_IG06: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
- pop {r4,r5,r6,r7,r11,pc}
+ ;; size=40 bbWeight=1 PerfScore 14.00
+G_M8853_IG09: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M8853_IG07: ; bbWeight=0.56, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M8853_IG10: ; bbWeight=0.56, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0]
movs r0, 0
;; size=2 bbWeight=0.56 PerfScore 0.56
-G_M8853_IG08: ; bbWeight=0.56, epilog, nogc, extend
- pop {r4,r5,r6,r7,r11,pc}
+G_M8853_IG11: ; bbWeight=0.56, epilog, nogc, extend
+ pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=0.56 PerfScore 0.56
-G_M8853_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M8853_IG10: ; bbWeight=0, epilog, nogc, extend
- pop {r4,r5,r6,r7,r11,pc}
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M8853_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M8853_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r4]
mov r0, r4
; gcrRegs +[r0]
ldr r3, [r4]
+ ldr r3, [r3+0x58]
+ ldr r3, [r3+0x10]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r4]
+ b SHORT G_M8853_IG09
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M8853_IG13: ; bbWeight=0, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0] +[r4-r5]
+ movs r6, 0
+ b SHORT G_M8853_IG07
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M8853_IG14: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r5]
+ mov r0, r4
+ ; gcrRegs +[r0]
+ ldr r3, [r4]
ldr r3, [r3+0x44]
ldr r3, [r3+0x0C]
blx r3 // <unknown method>
; gcrRegs -[r0]
and r0, r0, 32
cmp r0, 32
- beq SHORT G_M8853_IG12
+ beq SHORT G_M8853_IG15
movs r3, 0
- b SHORT G_M8853_IG13
+ b SHORT G_M8853_IG16
;; size=22 bbWeight=0 PerfScore 0.00
-G_M8853_IG12: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M8853_IG15: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
movs r3, 1
;; size=2 bbWeight=0 PerfScore 0.00
-G_M8853_IG13: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M8853_IG05
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M8853_IG14: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- mov r0, r4
- ; gcrRegs +[r0]
- ldr r3, [r4]
- ldr r3, [r3+0x58]
- ldr r3, [r3+0x10]
- blx r3 // <unknown method>
+G_M8853_IG16: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ cmp r3, 0
+ beq SHORT G_M8853_IG08
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M8853_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r4]
- b SHORT G_M8853_IG06
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M8853_IG15: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0] +[r4]
- movs r7, 0
- b SHORT G_M8853_IG04
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M8853_IG18: ; bbWeight=0, epilog, nogc, extend
+ pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 152, prolog size 8, PerfScore 35.12, instruction count 59, allocated bytes for code 152 (MethodHash=a7e7dd6a) for method System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
+; Total bytes of code 180, prolog size 8, PerfScore 41.88, instruction count 70, allocated bytes for code 180 (MethodHash=a7e7dd6a) for method System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
; ============================================================
Unwind Info:
@@ -144,7 +164,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 76 (0x0004c) Actual length = 152 (0x000098)
+ Function Length : 90 (0x0005a) Actual length = 180 (0x0000b4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -160,7 +180,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 F0 pop {r4,r5,r6,r7,r11,lr} ; opsize 32
+ A8 78 pop {r3,r4,r5,r6,r11,lr} ; opsize 32
FF end
FF end
+46 (+766.67%) : 108122.dasm - T:TestEntryPoint():int (FullOpts)
@@ -2,48 +2,86 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; FullOpts code
; optimized code
-; sp based frame
+; r11 based frame
; partially interruptible
; No matching PGO data
; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-;* V00 loc0 [V00,T03] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>>
+;* V00 loc0 [V00,T01] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
-;* V03 tmp2 [V03,T00] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-;* V04 tmp3 [V04,T02] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V05 tmp4 [V05,T01] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <<unknown class>>
+;* V03 tmp2 [V03,T02] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
+; V04 rat0 [V04,T00] ( 5, 7.50) ref -> r0 class-hnd "replacement local" <<unknown class>>
;
-; Lcl frame size = 4
+; Lcl frame size = 0
-G_M32114_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,lr}
- ;; size=2 bbWeight=1 PerfScore 1.00
-G_M32114_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M32114_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_M32114_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ cmp r0, 0
+ beq SHORT G_M32114_IG05
+ ;; size=12 bbWeight=1 PerfScore 4.00
+G_M32114_IG03: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r0]
+ ldr r3, [r0]
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ cmp r3, r2
+ beq SHORT G_M32114_IG05
+ ;; size=14 bbWeight=0.50 PerfScore 2.50
+G_M32114_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r0]
+ movs r0, 0
+ ;; size=2 bbWeight=0.25 PerfScore 0.25
+G_M32114_IG05: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r0]
+ cmp r0, 0
+ beq SHORT G_M32114_IG08
+ ;; size=4 bbWeight=1 PerfScore 2.00
+G_M32114_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r0]
movs r0, 100
- ;; size=2 bbWeight=1 PerfScore 1.00
-G_M32114_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r3,pc}
- ;; size=2 bbWeight=1 PerfScore 1.00
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
+G_M32114_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ pop {r11,pc}
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M32114_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov r0, -1
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M32114_IG09: ; bbWeight=0.50, epilog, nogc, extend
+ pop {r11,pc}
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 6, prolog size 2, PerfScore 3.00, instruction count 3, allocated bytes for code 6 (MethodHash=d71e828d) for method T:TestEntryPoint():int (FullOpts)
+; Total bytes of code 52, prolog size 6, PerfScore 12.75, instruction count 18, allocated bytes for code 52 (MethodHash=d71e828d) for method T:TestEntryPoint():int (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 0
+ Epilog Count : 2
F bit : 0
- E bit : 1
+ E bit : 0
X bit : 0
Vers : 0
- Function Length : 3 (0x00003) Actual length = 6 (0x000006)
- --- One epilog, unwind codes at 0
+ 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)
+ Condition : 14 (0xe) (always)
+ Epilog Start Index : 0 (0x00)
+ ---- Scope 1
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Condition : 14 (0xe) (always)
+ Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- ED 08 pop {r3,lr} ; opsize 16
+ A8 00 pop {r11,lr} ; opsize 32
FF end
FF end
libraries.pmi.linux.arm.checked.mch
-28 (-51.85%) : 267626.dasm - System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c11[System.__Canon]:<GetMetadataViewProvider>b__1_0(System.Collections.Generic.IDictionary2[System.String,System.Object]):System.Canon:this (FullOpts)
@@ -2,57 +2,40 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; FullOpts code
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 2.25) ref -> r4 this class-hnd single-def <System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]>
-; V01 arg1 [V01,T01] ( 4, 3.12) ref -> r1 class-hnd single-def <System.Collections.Generic.IDictionary`2[System.String,System.Object]>
+; V00 this [V00,T00] ( 3, 3 ) ref -> r4 this class-hnd single-def <System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> r1 class-hnd single-def <System.Collections.Generic.IDictionary`2[System.String,System.Object]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) int -> r2 "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> r0 class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M31417_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r11,lr}
- sub sp, 12
- add r11, sp, 16
- str r0, [r11-0x0C]
+ push {r2,r3,r4,lr}
+ str r0, [sp+0x04]
mov r4, r0
; gcrRegs +[r4]
- ;; size=16 bbWeight=1 PerfScore 5.00
-G_M31417_IG02: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r1]
- mov r0, r1
- ; gcrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M31417_IG05
;; size=6 bbWeight=1 PerfScore 3.00
-G_M31417_IG03: ; bbWeight=0.25, gcrefRegs=0013 {r0 r1 r4}, byrefRegs=0000 {}, byref, isz
- ldr r3, [r0]
- ldr r2, [r4]
- ldr r2, [r2+0x24]
- ldr r2, [r2]
- ldr r2, [r2]
- cmp r3, r2
- beq SHORT G_M31417_IG05
- ;; size=14 bbWeight=0.25 PerfScore 1.75
-G_M31417_IG04: ; bbWeight=0.12, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r0]
- mov r0, r2
+G_M31417_IG02: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r1]
+ ldr r0, [r4]
+ ldr r0, [r0+0x24]
+ ldr r0, [r0]
+ ldr r0, [r0]
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_CHKCASTANY
; gcrRegs -[r1] +[r0]
- ;; size=12 bbWeight=0.12 PerfScore 0.50
-G_M31417_IG05: ; bbWeight=1, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref, epilog, nogc
- add sp, 12
- pop {r4,r11,pc}
- ;; size=6 bbWeight=1 PerfScore 2.00
+ ; gcr arg pop 0
+ ;; size=18 bbWeight=1 PerfScore 7.00
+G_M31417_IG03: ; bbWeight=1, epilog, nogc, extend
+ pop {r2,r3,r4,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 54, prolog size 14, PerfScore 12.25, instruction count 21, allocated bytes for code 54 (MethodHash=9c5d8546) for method System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]:<GetMetadataViewProvider>b__1_0(System.Collections.Generic.IDictionary`2[System.String,System.Object]):System.__Canon:this (FullOpts)
+; Total bytes of code 26, prolog size 4, PerfScore 11.00, instruction count 11, allocated bytes for code 26 (MethodHash=9c5d8546) for method System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]:<GetMetadataViewProvider>b__1_0(System.Collections.Generic.IDictionary`2[System.String,System.Object]):System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
@@ -64,11 +47,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 27 (0x0001b) Actual length = 54 (0x000036)
+ Function Length : 13 (0x0000d) Actual length = 26 (0x00001a)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- 03 add sp, sp, #12 ; opsize 16
- A8 10 pop {r4,r11,lr} ; opsize 32
+ ED 1C pop {r2,r3,r4,lr} ; opsize 16
+ FF end
FF end
-28 (-50.00%) : 169514.dasm - CSharpx.Either+<>cDisplayClass13_0`1[System.Canon]:b0():System.Canon:this (FullOpts)
@@ -2,58 +2,40 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; FullOpts code
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 4, 3.25) ref -> r4 this class-hnd single-def <CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]>
+; V00 this [V00,T00] ( 4, 4 ) ref -> r4 this class-hnd single-def <CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> r1 single-def "CASTCLASS eval op1"
-; V03 tmp2 [V03,T03] ( 3, 1.25) int -> r2 "fgMakeTemp is creating a new local variable"
-; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> r0 class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M12636_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r11,lr}
- sub sp, 12
- add r11, sp, 16
- str r0, [r11-0x0C]
+ push {r2,r3,r4,lr}
+ str r0, [sp+0x04]
mov r4, r0
; gcrRegs +[r4]
- ;; size=16 bbWeight=1 PerfScore 5.00
-G_M12636_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ;; size=6 bbWeight=1 PerfScore 3.00
+G_M12636_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ ldr r0, [r4]
+ ldr r0, [r0+0x24]
+ ldr r0, [r0]
+ ldr r0, [r0]
ldr r1, [r4+0x04]
; gcrRegs +[r1]
- mov r0, r1
- ; gcrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M12636_IG05
- ;; size=8 bbWeight=1 PerfScore 4.00
-G_M12636_IG03: ; bbWeight=0.25, gcrefRegs=0013 {r0 r1 r4}, byrefRegs=0000 {}, byref, isz
- ldr r3, [r0]
- ldr r2, [r4]
- ldr r2, [r2+0x24]
- ldr r2, [r2]
- ldr r2, [r2]
- cmp r3, r2
- beq SHORT G_M12636_IG05
- ;; size=14 bbWeight=0.25 PerfScore 1.75
-G_M12636_IG04: ; bbWeight=0.12, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r0]
- mov r0, r2
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_CHKCASTANY
; gcrRegs -[r1] +[r0]
- ;; size=12 bbWeight=0.12 PerfScore 0.50
-G_M12636_IG05: ; bbWeight=1, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref, epilog, nogc
- add sp, 12
- pop {r4,r11,pc}
- ;; size=6 bbWeight=1 PerfScore 2.00
+ ; gcr arg pop 0
+ ;; size=20 bbWeight=1 PerfScore 8.00
+G_M12636_IG03: ; bbWeight=1, epilog, nogc, extend
+ pop {r2,r3,r4,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 56, prolog size 14, PerfScore 13.25, instruction count 22, allocated bytes for code 56 (MethodHash=bbb7cea3) for method CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]:<Cast>b__0():System.__Canon:this (FullOpts)
+; Total bytes of code 28, prolog size 4, PerfScore 12.00, instruction count 12, allocated bytes for code 28 (MethodHash=bbb7cea3) for method CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]:<Cast>b__0():System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
@@ -65,11 +47,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 28 (0x0001c) Actual length = 56 (0x000038)
+ Function Length : 14 (0x0000e) Actual length = 28 (0x00001c)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- 03 add sp, sp, #12 ; opsize 16
- A8 10 pop {r4,r11,lr} ; opsize 32
+ ED 1C pop {r2,r3,r4,lr} ; opsize 16
+ FF end
FF end
-22 (-47.83%) : 25951.dasm - Microsoft.FSharp.Core.Operators+Unchecked:UnboxSystem.__Canon:System.__Canon (FullOpts)
@@ -2,57 +2,38 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; FullOpts code
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) int -> r0 single-def
-; V01 arg0 [V01,T02] ( 4, 3.12) ref -> r1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) int -> r0 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) 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,T03] ( 3, 1.25) int -> r0 "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> r3 class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 8
+; Lcl frame size = 12
G_M7606_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r2,r3,r11,lr}
- add r11, sp, 8
- str r0, [r11-0x04]
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M7606_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r1]
- mov r3, r1
- ; gcrRegs +[r3]
- cmp r3, 0
- beq SHORT G_M7606_IG05
+ push {lr}
+ sub sp, 12
+ str r0, [sp+0x04]
;; size=6 bbWeight=1 PerfScore 3.00
-G_M7606_IG03: ; bbWeight=0.25, gcrefRegs=000A {r1 r3}, byrefRegs=0000 {}, byref, isz
- ldr r2, [r3]
+G_M7606_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r1]
ldr r0, [r0+0x20]
ldr r0, [r0]
- cmp r2, r0
- beq SHORT G_M7606_IG05
- ;; size=10 bbWeight=0.25 PerfScore 1.25
-G_M7606_IG04: ; bbWeight=0.12, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r3]
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_CHKCASTANY
; gcrRegs -[r1] +[r0]
- mov r3, r0
- ; gcrRegs +[r3]
- ;; size=12 bbWeight=0.12 PerfScore 0.50
-G_M7606_IG05: ; bbWeight=1, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r0]
- mov r0, r3
- ; gcrRegs +[r0]
- ;; size=2 bbWeight=1 PerfScore 1.00
-G_M7606_IG06: ; bbWeight=1, epilog, nogc, extend
- pop {r2,r3,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
+ ; gcr arg pop 0
+ ;; size=14 bbWeight=1 PerfScore 5.00
+G_M7606_IG03: ; bbWeight=1, epilog, nogc, extend
+ add sp, 12
+ pop {pc}
+ ;; size=4 bbWeight=1 PerfScore 2.00
-; Total bytes of code 46, prolog size 12, PerfScore 9.75, instruction count 17, allocated bytes for code 46 (MethodHash=333ae249) for method Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 24, prolog size 6, PerfScore 10.00, instruction count 10, allocated bytes for code 24 (MethodHash=333ae249) for method Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -64,11 +45,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 23 (0x00017) Actual length = 46 (0x00002e)
+ Function Length : 12 (0x0000c) Actual length = 24 (0x000018)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 0C pop {r2,r3,r11,lr} ; opsize 32
- FF end
+ 03 add sp, sp, #12 ; opsize 16
+ ED 00 pop {lr} ; opsize 16
FF end
+46 (+2.41%) : 107676.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanXmlStringUnQuoted():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
@@ -5,13 +5,13 @@
; r11 based frame
; partially interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 102 single block inlinees; 20 inlinees without PGO data
+; 0 inlinees with PGO data; 103 single block inlinees; 21 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 46, 43.50) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner>
; V01 loc0 [V01,T13] ( 13, 7 ) ref -> r0 class-hnd <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken>
; V02 loc1 [V02,T01] ( 28, 33 ) int -> r5
-; V03 loc2 [V03,T03] ( 21, 15.50) ref -> r6 class-hnd exact single-def <System.Text.StringBuilder>
+; V03 loc2 [V03,T03] ( 24, 17 ) ref -> r6 class-hnd exact single-def <System.Text.StringBuilder>
; V04 loc3 [V04,T02] ( 7, 18 ) ushort -> r0
;* V05 loc4 [V05 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]>
; V06 loc5 [V06 ] ( 6, 22 ) struct ( 8) [sp+0x08] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner+XmlCharResult>
@@ -19,170 +19,154 @@
;* V08 tmp1 [V08 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]>
;* V09 tmp2 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlTextTokenSyntax>
;* V10 tmp3 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.String>
-; V11 tmp4 [V11,T56] ( 2, 1 ) ref -> r9 class-hnd exact "Inline stloc first use temp" <System.String>
+; V11 tmp4 [V11,T57] ( 2, 1 ) ref -> r9 class-hnd exact "Inline stloc first use temp" <System.String>
;* V12 tmp5 [V12 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]>
;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
; V14 tmp7 [V14,T30] ( 2, 2 ) ref -> r8 class-hnd exact "impAppendStmt" <System.String>
; V15 tmp8 [V15,T14] ( 6, 3 ) ref -> r8 class-hnd "Inline stloc first use temp" <System.String>
;* V16 tmp9 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
-; V17 tmp10 [V17,T18] ( 3, 3 ) byref -> r1 "dup spill"
+; V17 tmp10 [V17,T19] ( 3, 3 ) byref -> r1 "dup spill"
; V18 tmp11 [V18,T31] ( 2, 2 ) ref -> r8 class-hnd exact "impAppendStmt" <System.String>
;* V19 tmp12 [V19 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
; V20 tmp13 [V20,T40] ( 2, 2 ) ushort -> r1 "Inlining Arg"
-; V21 tmp14 [V21,T19] ( 3, 3 ) byref -> r0 "dup spill"
+; V21 tmp14 [V21,T20] ( 3, 3 ) byref -> r0 "dup spill"
;* V22 tmp15 [V22 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
;* V23 tmp16 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
; V24 tmp17 [V24,T52] ( 3, 1.50) ref -> r9 class-hnd "Inline stloc first use temp" <System.String>
;* V25 tmp18 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
; V26 tmp19 [V26,T07] ( 9, 9 ) ref -> r10 class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlTextTokenSyntax>
-;* V27 tmp20 [V27 ] ( 0, 0 ) ref -> zero-ref "CASTCLASS eval op1"
-;* V28 tmp21 [V28 ] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V29 tmp22 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.GreenNode>
-; V30 tmp23 [V30,T41] ( 2, 2 ) int -> r1 "Inlining Arg"
-;* V31 tmp24 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken>
-; V32 tmp25 [V32,T57] ( 2, 1 ) ref -> r0 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken>
-;* V33 tmp26 [V33 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]>
-;* V34 tmp27 [V34 ] ( 0, 0 ) ref -> zero-ref "CASTCLASS eval op1"
-;* V35 tmp28 [V35 ] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V36 tmp29 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken>
-;* V37 tmp30 [V37 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]>
-;* V38 tmp31 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlTextTokenSyntax>
-;* V39 tmp32 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.String>
-; V40 tmp33 [V40,T58] ( 2, 1 ) ref -> r10 class-hnd exact "Inline stloc first use temp" <System.String>
-;* V41 tmp34 [V41 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]>
-;* V42 tmp35 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
-; V43 tmp36 [V43,T32] ( 2, 2 ) ref -> r9 class-hnd exact "impAppendStmt" <System.String>
-; V44 tmp37 [V44,T15] ( 6, 3 ) ref -> r9 class-hnd "Inline stloc first use temp" <System.String>
-;* V45 tmp38 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
-; V46 tmp39 [V46,T20] ( 3, 3 ) byref -> r1 "dup spill"
-; V47 tmp40 [V47,T33] ( 2, 2 ) ref -> r9 class-hnd exact "impAppendStmt" <System.String>
-;* V48 tmp41 [V48 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
-; V49 tmp42 [V49,T42] ( 2, 2 ) ushort -> r1 "Inlining Arg"
-; V50 tmp43 [V50,T21] ( 3, 3 ) byref -> r0 "dup spill"
-;* V51 tmp44 [V51 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
-;* V52 tmp45 [V52 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
-; V53 tmp46 [V53,T53] ( 3, 1.50) ref -> r10 class-hnd "Inline stloc first use temp" <System.String>
-;* V54 tmp47 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
-; V55 tmp48 [V55,T08] ( 9, 9 ) ref -> r4 class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlTextTokenSyntax>
-;* V56 tmp49 [V56 ] ( 0, 0 ) ref -> zero-ref "CASTCLASS eval op1"
-;* V57 tmp50 [V57 ] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V58 tmp51 [V58 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.GreenNode>
-; V59 tmp52 [V59,T43] ( 2, 2 ) int -> r1 "Inlining Arg"
-;* V60 tmp53 [V60 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken>
-; V61 tmp54 [V61,T59] ( 2, 1 ) ref -> r0 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken>
-;* V62 tmp55 [V62 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]>
-;* V63 tmp56 [V63 ] ( 0, 0 ) ref -> zero-ref "CASTCLASS eval op1"
-;* V64 tmp57 [V64 ] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V65 tmp58 [V65 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken>
-;* V66 tmp59 [V66 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]>
-;* V67 tmp60 [V67 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlTextTokenSyntax>
-;* V68 tmp61 [V68 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.String>
-; V69 tmp62 [V69,T60] ( 2, 1 ) ref -> r9 class-hnd exact "Inline stloc first use temp" <System.String>
-;* V70 tmp63 [V70 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]>
-;* V71 tmp64 [V71 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
-; V72 tmp65 [V72,T34] ( 2, 2 ) ref -> r8 class-hnd exact "impAppendStmt" <System.String>
-; V73 tmp66 [V73,T16] ( 6, 3 ) ref -> r8 class-hnd "Inline stloc first use temp" <System.String>
-;* V74 tmp67 [V74 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
-; V75 tmp68 [V75,T22] ( 3, 3 ) byref -> r1 "dup spill"
-; V76 tmp69 [V76,T35] ( 2, 2 ) ref -> r8 class-hnd exact "impAppendStmt" <System.String>
-;* V77 tmp70 [V77 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
-; V78 tmp71 [V78,T44] ( 2, 2 ) ushort -> r1 "Inlining Arg"
-; V79 tmp72 [V79,T23] ( 3, 3 ) byref -> r0 "dup spill"
-;* V80 tmp73 [V80 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
+; V27 tmp20 [V27,T41] ( 2, 2 ) int -> r1 "Inlining Arg"
+;* V28 tmp21 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken>
+; V29 tmp22 [V29,T58] ( 2, 1 ) ref -> r0 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken>
+;* V30 tmp23 [V30 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]>
+;* V31 tmp24 [V31 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]>
+;* V32 tmp25 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlTextTokenSyntax>
+;* V33 tmp26 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.String>
+; V34 tmp27 [V34,T59] ( 2, 1 ) ref -> r10 class-hnd exact "Inline stloc first use temp" <System.String>
+;* V35 tmp28 [V35 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]>
+;* V36 tmp29 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
+; V37 tmp30 [V37,T32] ( 2, 2 ) ref -> r9 class-hnd exact "impAppendStmt" <System.String>
+; V38 tmp31 [V38,T15] ( 6, 3 ) ref -> r9 class-hnd "Inline stloc first use temp" <System.String>
+;* V39 tmp32 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
+; V40 tmp33 [V40,T21] ( 3, 3 ) byref -> r1 "dup spill"
+; V41 tmp34 [V41,T33] ( 2, 2 ) ref -> r9 class-hnd exact "impAppendStmt" <System.String>
+;* V42 tmp35 [V42 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
+; V43 tmp36 [V43,T42] ( 2, 2 ) ushort -> r1 "Inlining Arg"
+; V44 tmp37 [V44,T22] ( 3, 3 ) byref -> r0 "dup spill"
+;* V45 tmp38 [V45 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
+;* V46 tmp39 [V46 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
+; V47 tmp40 [V47,T53] ( 3, 1.50) ref -> r10 class-hnd "Inline stloc first use temp" <System.String>
+;* V48 tmp41 [V48 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
+; V49 tmp42 [V49,T08] ( 9, 9 ) ref -> r4 class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlTextTokenSyntax>
+; V50 tmp43 [V50,T43] ( 2, 2 ) int -> r1 "Inlining Arg"
+;* V51 tmp44 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken>
+; V52 tmp45 [V52,T60] ( 2, 1 ) ref -> r0 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken>
+;* V53 tmp46 [V53 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]>
+;* V54 tmp47 [V54 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]>
+;* V55 tmp48 [V55 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlTextTokenSyntax>
+;* V56 tmp49 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.String>
+; V57 tmp50 [V57,T61] ( 2, 1 ) ref -> r9 class-hnd exact "Inline stloc first use temp" <System.String>
+;* V58 tmp51 [V58 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]>
+;* V59 tmp52 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
+; V60 tmp53 [V60,T34] ( 2, 2 ) ref -> r8 class-hnd exact "impAppendStmt" <System.String>
+; V61 tmp54 [V61,T16] ( 6, 3 ) ref -> r8 class-hnd "Inline stloc first use temp" <System.String>
+;* V62 tmp55 [V62 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
+; V63 tmp56 [V63,T23] ( 3, 3 ) byref -> r1 "dup spill"
+; V64 tmp57 [V64,T35] ( 2, 2 ) ref -> r8 class-hnd exact "impAppendStmt" <System.String>
+;* V65 tmp58 [V65 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
+; V66 tmp59 [V66,T44] ( 2, 2 ) ushort -> r1 "Inlining Arg"
+; V67 tmp60 [V67,T24] ( 3, 3 ) byref -> r0 "dup spill"
+;* V68 tmp61 [V68 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
+;* V69 tmp62 [V69 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
+; V70 tmp63 [V70,T54] ( 3, 1.50) ref -> r9 class-hnd "Inline stloc first use temp" <System.String>
+;* V71 tmp64 [V71 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
+; V72 tmp65 [V72,T09] ( 9, 9 ) ref -> r10 class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlTextTokenSyntax>
+; V73 tmp66 [V73,T45] ( 2, 2 ) int -> r1 "Inlining Arg"
+;* V74 tmp67 [V74,T51] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V75 tmp68 [V75,T04] ( 3, 12 ) int -> r1 "Inlining Arg"
+;* V76 tmp69 [V76 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]>
+;* V77 tmp70 [V77 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlTextTokenSyntax>
+;* V78 tmp71 [V78 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.String>
+; V79 tmp72 [V79,T62] ( 2, 1 ) ref -> r9 class-hnd exact "Inline stloc first use temp" <System.String>
+;* V80 tmp73 [V80 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]>
;* V81 tmp74 [V81 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
-; V82 tmp75 [V82,T54] ( 3, 1.50) ref -> r9 class-hnd "Inline stloc first use temp" <System.String>
-;* V83 tmp76 [V83 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
-; V84 tmp77 [V84,T09] ( 9, 9 ) ref -> r10 class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlTextTokenSyntax>
-;* V85 tmp78 [V85 ] ( 0, 0 ) ref -> zero-ref "CASTCLASS eval op1"
-;* V86 tmp79 [V86 ] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V87 tmp80 [V87 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.GreenNode>
-; V88 tmp81 [V88,T45] ( 2, 2 ) int -> r1 "Inlining Arg"
-;* V89 tmp82 [V89,T51] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V90 tmp83 [V90,T04] ( 3, 12 ) int -> r1 "Inlining Arg"
-;* V91 tmp84 [V91 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]>
-;* V92 tmp85 [V92 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlTextTokenSyntax>
-;* V93 tmp86 [V93 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.String>
-; V94 tmp87 [V94,T61] ( 2, 1 ) ref -> r9 class-hnd exact "Inline stloc first use temp" <System.String>
-;* V95 tmp88 [V95 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]>
-;* V96 tmp89 [V96 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
-; V97 tmp90 [V97,T36] ( 2, 2 ) ref -> r8 class-hnd exact "impAppendStmt" <System.String>
-; V98 tmp91 [V98,T17] ( 6, 3 ) ref -> r8 class-hnd "Inline stloc first use temp" <System.String>
-;* V99 tmp92 [V99 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
-; V100 tmp93 [V100,T24] ( 3, 3 ) byref -> r1 "dup spill"
-; V101 tmp94 [V101,T37] ( 2, 2 ) ref -> r8 class-hnd exact "impAppendStmt" <System.String>
-;* V102 tmp95 [V102 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
-; V103 tmp96 [V103,T46] ( 2, 2 ) ushort -> r1 "Inlining Arg"
-; V104 tmp97 [V104,T25] ( 3, 3 ) byref -> r0 "dup spill"
-;* V105 tmp98 [V105 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
-;* V106 tmp99 [V106 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
-; V107 tmp100 [V107,T55] ( 3, 1.50) ref -> r9 class-hnd "Inline stloc first use temp" <System.String>
-;* V108 tmp101 [V108 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
-; V109 tmp102 [V109,T10] ( 9, 9 ) ref -> r10 class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlTextTokenSyntax>
-;* V110 tmp103 [V110 ] ( 0, 0 ) ref -> zero-ref "CASTCLASS eval op1"
-;* V111 tmp104 [V111 ] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V112 tmp105 [V112 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.GreenNode>
-; V113 tmp106 [V113,T47] ( 2, 2 ) int -> r1 "Inlining Arg"
-;* V114 tmp107 [V114 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken>
-; V115 tmp108 [V115,T62] ( 2, 1 ) ref -> r0 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken>
-;* V116 tmp109 [V116 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]>
-;* V117 tmp110 [V117 ] ( 0, 0 ) ref -> zero-ref "CASTCLASS eval op1"
-;* V118 tmp111 [V118 ] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V119 tmp112 [V119 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken>
+; V82 tmp75 [V82,T36] ( 2, 2 ) ref -> r8 class-hnd exact "impAppendStmt" <System.String>
+; V83 tmp76 [V83,T17] ( 6, 3 ) ref -> r8 class-hnd "Inline stloc first use temp" <System.String>
+;* V84 tmp77 [V84 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
+; V85 tmp78 [V85,T25] ( 3, 3 ) byref -> r1 "dup spill"
+; V86 tmp79 [V86,T37] ( 2, 2 ) ref -> r8 class-hnd exact "impAppendStmt" <System.String>
+;* V87 tmp80 [V87 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
+; V88 tmp81 [V88,T46] ( 2, 2 ) ushort -> r1 "Inlining Arg"
+; V89 tmp82 [V89,T26] ( 3, 3 ) byref -> r0 "dup spill"
+;* V90 tmp83 [V90 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
+;* V91 tmp84 [V91 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
+; V92 tmp85 [V92,T55] ( 3, 1.50) ref -> r9 class-hnd "Inline stloc first use temp" <System.String>
+;* V93 tmp86 [V93 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
+; V94 tmp87 [V94,T10] ( 9, 9 ) ref -> r10 class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlTextTokenSyntax>
+; V95 tmp88 [V95,T47] ( 2, 2 ) int -> r1 "Inlining Arg"
+;* V96 tmp89 [V96 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken>
+; V97 tmp90 [V97,T63] ( 2, 1 ) ref -> r0 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken>
+;* V98 tmp91 [V98 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]>
+;* V99 tmp92 [V99 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]>
+;* V100 tmp93 [V100 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlTextTokenSyntax>
+;* V101 tmp94 [V101 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.String>
+; V102 tmp95 [V102,T64] ( 2, 1 ) ref -> r9 class-hnd exact "Inline stloc first use temp" <System.String>
+;* V103 tmp96 [V103 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]>
+;* V104 tmp97 [V104 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
+; V105 tmp98 [V105,T38] ( 2, 2 ) ref -> r8 class-hnd exact "impAppendStmt" <System.String>
+; V106 tmp99 [V106,T18] ( 6, 3 ) ref -> r8 class-hnd "Inline stloc first use temp" <System.String>
+;* V107 tmp100 [V107 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
+; V108 tmp101 [V108,T27] ( 3, 3 ) byref -> r1 "dup spill"
+; V109 tmp102 [V109,T39] ( 2, 2 ) ref -> r8 class-hnd exact "impAppendStmt" <System.String>
+;* V110 tmp103 [V110 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
+; V111 tmp104 [V111,T48] ( 2, 2 ) ushort -> r1 "Inlining Arg"
+; V112 tmp105 [V112,T28] ( 3, 3 ) byref -> r0 "dup spill"
+;* V113 tmp106 [V113 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
+;* V114 tmp107 [V114 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
+; V115 tmp108 [V115,T56] ( 3, 1.50) ref -> r9 class-hnd "Inline stloc first use temp" <System.String>
+;* V116 tmp109 [V116 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
+; V117 tmp110 [V117,T11] ( 9, 9 ) ref -> r10 class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlTextTokenSyntax>
+; V118 tmp111 [V118,T49] ( 2, 2 ) int -> r1 "Inlining Arg"
+;* V119 tmp112 [V119 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]>
;* V120 tmp113 [V120 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]>
;* V121 tmp114 [V121 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlTextTokenSyntax>
-;* V122 tmp115 [V122 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.String>
-; V123 tmp116 [V123,T63] ( 2, 1 ) ref -> r9 class-hnd exact "Inline stloc first use temp" <System.String>
+; V122 tmp115 [V122,T29] ( 4, 2 ) ref -> r9 class-hnd exact single-def "Inline stloc first use temp" <System.String>
+; V123 tmp116 [V123,T65] ( 2, 1 ) ref -> r10 class-hnd exact single-def "Inline stloc first use temp" <System.String>
;* V124 tmp117 [V124 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]>
-;* V125 tmp118 [V125 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
-; V126 tmp119 [V126,T38] ( 2, 2 ) ref -> r8 class-hnd exact "impAppendStmt" <System.String>
-; V127 tmp120 [V127,T28] ( 5, 2.50) ref -> r8 class-hnd "Inline stloc first use temp" <System.String>
-;* V128 tmp121 [V128 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
-; V129 tmp122 [V129,T26] ( 3, 3 ) byref -> r1 "dup spill"
-; V130 tmp123 [V130,T39] ( 2, 2 ) ref -> r8 class-hnd exact "impAppendStmt" <System.String>
-;* V131 tmp124 [V131 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
-; V132 tmp125 [V132,T48] ( 2, 2 ) ushort -> r1 "Inlining Arg"
-; V133 tmp126 [V133,T27] ( 3, 3 ) byref -> r0 "dup spill"
-;* V134 tmp127 [V134 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
-;* V135 tmp128 [V135 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
-; V136 tmp129 [V136,T11] ( 9, 9 ) ref -> r10 class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlTextTokenSyntax>
-;* V137 tmp130 [V137 ] ( 0, 0 ) ref -> zero-ref "CASTCLASS eval op1"
-;* V138 tmp131 [V138 ] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V139 tmp132 [V139 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.GreenNode>
-; V140 tmp133 [V140,T49] ( 2, 2 ) int -> r1 "Inlining Arg"
-;* V141 tmp134 [V141 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]>
-;* V142 tmp135 [V142 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]>
-;* V143 tmp136 [V143 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlTextTokenSyntax>
...
+6 (+4.17%) : 198449.dasm - System.Net.Security.SslStream:MakeEx(System.Security.Cryptography.X509Certificates.X509Certificate):System.Security.Cryptography.X509Certificates.X509Certificate2 (FullOpts)
@@ -9,15 +9,12 @@
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 6, 6 ) ref -> r4 class-hnd single-def <System.Security.Cryptography.X509Certificates.X509Certificate>
-; V01 loc0 [V01,T04] ( 3, 3 ) ref -> [sp+0x04] do-not-enreg[M] class-hnd EH-live <System.Security.Cryptography.X509Certificates.X509Certificate2>
+; V01 loc0 [V01,T02] ( 3, 3 ) ref -> [sp+0x04] do-not-enreg[M] class-hnd EH-live <System.Security.Cryptography.X509Certificates.X509Certificate2>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> r5 class-hnd exact single-def "NewObj constructor temp" <System.Security.Cryptography.X509Certificates.X509Certificate2>
;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
-;* V06 tmp4 [V06,T05] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
-; V07 tmp5 [V07,T03] ( 2, 4 ) ref -> r0 class-hnd "spilling QMark2" <System.Security.Cryptography.X509Certificates.X509Certificate2>
-; V08 PSPSym [V08,T06] ( 1, 1 ) int -> [sp+0x0C] do-not-enreg[V] "PSPSym"
-; V09 cse0 [V09,T02] ( 3, 3 ) int -> r5 "CSE - aggressive"
+; V06 PSPSym [V06,T03] ( 1, 1 ) int -> [sp+0x0C] do-not-enreg[V] "PSPSym"
;
; Lcl frame size = 16
@@ -26,15 +23,15 @@ G_M58596_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
sub sp, 16
add r11, sp, 24
add r1, sp, 32
- str r1, [sp+0x0C] // [V08 PSPSym]
+ str r1, [sp+0x0C] // [V06 PSPSym]
mov r4, r0
; gcrRegs +[r4]
;; size=16 bbWeight=1 PerfScore 6.00
G_M58596_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4]
- movw r5, 0xd1ff
- movt r5, 0xd1ff
- cmp r0, r5
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r0, r3
bne SHORT G_M58596_IG04
mov r0, r4
; gcrRegs +[r0]
@@ -49,7 +46,7 @@ G_M58596_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byr
str r0, [sp+0x04] // [V01 loc0]
; GC ptr vars +{V01}
;; size=4 bbWeight=1 PerfScore 2.00
-G_M58596_IG05: ; bbWeight=1, gcVars=00000010 {V01}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M58596_IG05: ; bbWeight=1, gcVars=00000004 {V01}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
mov r0, r4
; gcrRegs +[r0]
movw r3, 0xd1ff
@@ -60,7 +57,8 @@ G_M58596_IG05: ; bbWeight=1, gcVars=00000010 {V01}, gcrefRegs=0010 {r4},
; gcr arg pop 0
cmp r0, 0
beq SHORT G_M58596_IG06
- mov r0, r5
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_NEWFAST
@@ -78,7 +76,7 @@ G_M58596_IG05: ; bbWeight=1, gcVars=00000010 {V01}, gcrefRegs=0010 {r4},
; gcrRegs -[r0-r1 r4]
; gcr arg pop 0
str r5, [sp+0x04] // [V01 loc0]
- ;; size=50 bbWeight=1 PerfScore 19.00
+ ;; size=56 bbWeight=1 PerfScore 20.00
G_M58596_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r5]
ldr r0, [sp+0x04] // [V01 loc0]
@@ -94,7 +92,7 @@ G_M58596_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
add r3, r11, 8
str r3, [sp+0x04]
;; size=10 bbWeight=0 PerfScore 0.00
-G_M58596_IG09: ; bbWeight=0, gcVars=00000010 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M58596_IG09: ; bbWeight=0, gcVars=00000004 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movw r0, LOW ADDRESS G_M58596_IG06
movt r0, HIGH ADDRESS G_M58596_IG06
;; size=8 bbWeight=0 PerfScore 0.00
@@ -106,7 +104,7 @@ G_M58596_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
add r3, r11, 8
str r3, [sp+0x04]
;; size=10 bbWeight=0 PerfScore 0.00
-G_M58596_IG12: ; bbWeight=0, gcVars=00000010 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M58596_IG12: ; bbWeight=0, gcVars=00000004 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movw r0, LOW ADDRESS G_M58596_IG06
movt r0, HIGH ADDRESS G_M58596_IG06
;; size=8 bbWeight=0 PerfScore 0.00
@@ -114,7 +112,7 @@ G_M58596_IG13: ; bbWeight=0, funclet epilog, nogc, extend
pop {r2,r3,r4,r5,r11,pc}
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 144, prolog size 16, PerfScore 38.00, instruction count 50, allocated bytes for code 144 (MethodHash=0c821b1b) for method System.Net.Security.SslStream:MakeEx(System.Security.Cryptography.X509Certificates.X509Certificate):System.Security.Cryptography.X509Certificates.X509Certificate2 (FullOpts)
+; Total bytes of code 150, prolog size 16, PerfScore 39.00, instruction count 51, allocated bytes for code 150 (MethodHash=0c821b1b) for method System.Net.Security.SslStream:MakeEx(System.Security.Cryptography.X509Certificates.X509Certificate):System.Security.Cryptography.X509Certificates.X509Certificate2 (FullOpts)
; ============================================================
Unwind Info:
@@ -126,7 +124,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 50 (0x00032) Actual length = 100 (0x000064)
+ Function Length : 53 (0x00035) Actual length = 106 (0x00006a)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+4 (+4.55%) : 185680.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
@@ -10,18 +10,17 @@
;
; V00 this [V00,T02] ( 3, 2.50) ref -> r0 this class-hnd single-def <System.Data.Common.DbConnectionPoolKey>
; V01 arg1 [V01,T00] ( 5, 4 ) ref -> r1 class-hnd single-def <System.Object>
-; V02 loc0 [V02,T06] ( 2, 1 ) ref -> r1 class-hnd exact <System.Data.Common.DbConnectionPoolKey>
+; V02 loc0 [V02,T04] ( 3, 1.50) ref -> r1 class-hnd exact single-def <System.Data.Common.DbConnectionPoolKey>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Data.Common.DbConnectionPoolKey>
-; V05 tmp2 [V05,T01] ( 6, 4.77) ref -> r2 class-hnd exact single-def "Inlining Arg" <System.String>
-; V06 tmp3 [V06,T03] ( 5, 4.23) ref -> r1 class-hnd exact single-def "Inlining Arg" <System.String>
-; V07 tmp4 [V07,T05] ( 4, 1 ) ubyte -> r0 "Inline return value spill temp"
-; V08 tmp5 [V08,T04] ( 2, 1.07) byref -> r0 single-def "impAppendStmt"
+; V04 tmp1 [V04,T01] ( 6, 4.77) ref -> r2 class-hnd exact single-def "Inlining Arg" <System.String>
+; V05 tmp2 [V05,T03] ( 5, 4.23) ref -> r1 class-hnd exact single-def "Inlining Arg" <System.String>
+; V06 tmp3 [V06,T06] ( 4, 1 ) ubyte -> r0 "Inline return value spill temp"
+; V07 tmp4 [V07,T05] ( 2, 1.07) byref -> r0 single-def "impAppendStmt"
+;* V08 tmp5 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* 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"
;
; Lcl frame size = 0
@@ -50,12 +49,14 @@ G_M57556_IG05: ; bbWeight=0.50, epilog, nogc, extend
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M57556_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r0-r1]
+ cmp r1, 0
+ beq SHORT G_M57556_IG04
ldr r2, [r0+0x04]
; gcrRegs +[r2]
ldr r1, [r1+0x04]
cmp r2, r1
beq SHORT G_M57556_IG13
- ;; size=8 bbWeight=0.50 PerfScore 2.00
+ ;; size=12 bbWeight=0.50 PerfScore 3.00
G_M57556_IG07: ; bbWeight=0.43, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
cmp r2, 0
@@ -100,7 +101,7 @@ G_M57556_IG13: ; bbWeight=0.07, gcVars=00000000 {}, gcrefRegs=0000 {}, by
b SHORT G_M57556_IG12
;; size=4 bbWeight=0.07 PerfScore 0.15
-; Total bytes of code 88, prolog size 6, PerfScore 16.01, instruction count 36, allocated bytes for code 88 (MethodHash=7a9f1f2b) for method System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 92, prolog size 6, PerfScore 17.01, instruction count 38, allocated bytes for code 92 (MethodHash=7a9f1f2b) for method System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -112,7 +113,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 44 (0x0002c) Actual length = 88 (0x000058)
+ 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)
libraries_tests.run.linux.arm.Release.mch
-22 (-47.83%) : 595454.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (Tier1)
@@ -3,58 +3,39 @@
; Tier1 code
; optimized code
; optimized using Dynamic PGO
-; r11 based frame
+; sp based frame
; partially interruptible
; with Dynamic PGO: edge weights are valid, and fgCalledCount is 278
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.50) int -> r0 single-def
-; V01 arg0 [V01,T02] ( 4, 3.25) ref -> r1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) int -> r0 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> r1 class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 2.50) int -> r0 "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 7.50) ref -> r3 class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 8
+; Lcl frame size = 12
G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r2,r3,r11,lr}
- add r11, sp, 8
- str r0, [r11-0x04]
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r1]
- mov r3, r1
- ; gcrRegs +[r3]
- cmp r3, 0
- beq SHORT G_M8451_IG05
+ push {lr}
+ sub sp, 12
+ str r0, [sp+0x04]
;; size=6 bbWeight=1 PerfScore 3.00
-G_M8451_IG03: ; bbWeight=0.50, gcrefRegs=000A {r1 r3}, byrefRegs=0000 {}, byref, isz
- ldr r2, [r3]
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r1]
ldr r0, [r0+0x20]
ldr r0, [r0]
- cmp r2, r0
- beq SHORT G_M8451_IG05
- ;; size=10 bbWeight=0.50 PerfScore 2.50
-G_M8451_IG04: ; bbWeight=0.25, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r3]
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_CHKCASTANY
; gcrRegs -[r1] +[r0]
- mov r3, r0
- ; gcrRegs +[r3]
- ;; size=12 bbWeight=0.25 PerfScore 1.00
-G_M8451_IG05: ; bbWeight=1, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r0]
- mov r0, r3
- ; gcrRegs +[r0]
- ;; size=2 bbWeight=1 PerfScore 1.00
-G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
- pop {r2,r3,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
+ ; gcr arg pop 0
+ ;; size=14 bbWeight=1 PerfScore 5.00
+G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
+ add sp, 12
+ pop {pc}
+ ;; size=4 bbWeight=1 PerfScore 2.00
-; Total bytes of code 46, prolog size 12, PerfScore 11.50, instruction count 17, allocated bytes for code 46 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
+; Total bytes of code 24, prolog size 6, PerfScore 10.00, instruction count 10, allocated bytes for code 24 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
; ============================================================
Unwind Info:
@@ -66,11 +47,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 23 (0x00017) Actual length = 46 (0x00002e)
+ Function Length : 12 (0x0000c) Actual length = 24 (0x000018)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 0C pop {r2,r3,r11,lr} ; opsize 32
- FF end
+ 03 add sp, sp, #12 ; opsize 16
+ ED 00 pop {lr} ; opsize 16
FF end
-22 (-47.83%) : 624420.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (Tier1)
@@ -3,58 +3,39 @@
; Tier1 code
; optimized code
; optimized using Dynamic PGO
-; r11 based frame
+; sp based frame
; partially interruptible
; with Dynamic PGO: edge weights are valid, and fgCalledCount is 4031
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.50) int -> r0 single-def
-; V01 arg0 [V01,T02] ( 4, 3.25) ref -> r1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) int -> r0 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> r1 class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 2.50) int -> r0 "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 7.50) ref -> r3 class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 8
+; Lcl frame size = 12
G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r2,r3,r11,lr}
- add r11, sp, 8
- str r0, [r11-0x04]
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r1]
- mov r3, r1
- ; gcrRegs +[r3]
- cmp r3, 0
- beq SHORT G_M8451_IG05
+ push {lr}
+ sub sp, 12
+ str r0, [sp+0x04]
;; size=6 bbWeight=1 PerfScore 3.00
-G_M8451_IG03: ; bbWeight=0.50, gcrefRegs=000A {r1 r3}, byrefRegs=0000 {}, byref, isz
- ldr r2, [r3]
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r1]
ldr r0, [r0+0x20]
ldr r0, [r0]
- cmp r2, r0
- beq SHORT G_M8451_IG05
- ;; size=10 bbWeight=0.50 PerfScore 2.50
-G_M8451_IG04: ; bbWeight=0.25, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r3]
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_CHKCASTANY
; gcrRegs -[r1] +[r0]
- mov r3, r0
- ; gcrRegs +[r3]
- ;; size=12 bbWeight=0.25 PerfScore 1.00
-G_M8451_IG05: ; bbWeight=1, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r0]
- mov r0, r3
- ; gcrRegs +[r0]
- ;; size=2 bbWeight=1 PerfScore 1.00
-G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
- pop {r2,r3,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
+ ; gcr arg pop 0
+ ;; size=14 bbWeight=1 PerfScore 5.00
+G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
+ add sp, 12
+ pop {pc}
+ ;; size=4 bbWeight=1 PerfScore 2.00
-; Total bytes of code 46, prolog size 12, PerfScore 11.50, instruction count 17, allocated bytes for code 46 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
+; Total bytes of code 24, prolog size 6, PerfScore 10.00, instruction count 10, allocated bytes for code 24 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
; ============================================================
Unwind Info:
@@ -66,11 +47,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 23 (0x00017) Actual length = 46 (0x00002e)
+ Function Length : 12 (0x0000c) Actual length = 24 (0x000018)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 0C pop {r2,r3,r11,lr} ; opsize 32
- FF end
+ 03 add sp, sp, #12 ; opsize 16
+ ED 00 pop {lr} ; opsize 16
FF end
-28 (-41.18%) : 329741.dasm - System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.Canon]:b11_1(System.Object):this (Tier1)
@@ -2,65 +2,47 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; Tier1 code
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 2.25) ref -> r4 this class-hnd single-def <System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]>
-; V01 arg1 [V01,T01] ( 4, 3.12) ref -> r1 class-hnd single-def <System.Object>
+; V00 this [V00,T00] ( 3, 3 ) ref -> r4 this class-hnd single-def <System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]>
+; V01 arg1 [V01,T01] ( 3, 3 ) 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,T03] ( 3, 1.25) int -> r2 "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> r0 class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M10356_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r11,lr}
- sub sp, 12
- add r11, sp, 16
- str r0, [r11-0x0C]
+ push {r2,r3,r4,lr}
+ str r0, [sp+0x04]
mov r4, r0
; gcrRegs +[r4]
- ;; size=16 bbWeight=1 PerfScore 5.00
-G_M10356_IG02: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r1]
- mov r0, r1
- ; gcrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M10356_IG05
;; size=6 bbWeight=1 PerfScore 3.00
-G_M10356_IG03: ; bbWeight=0.25, gcrefRegs=0013 {r0 r1 r4}, byrefRegs=0000 {}, byref, isz
- ldr r3, [r0]
- ldr r2, [r4]
- ldr r2, [r2+0x24]
- ldr r2, [r2]
- ldr r2, [r2]
- cmp r3, r2
- beq SHORT G_M10356_IG05
- ;; size=14 bbWeight=0.25 PerfScore 1.75
-G_M10356_IG04: ; bbWeight=0.12, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r0]
- mov r0, r2
+G_M10356_IG02: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r1]
+ ldr r0, [r4]
+ ldr r0, [r0+0x24]
+ ldr r0, [r0]
+ ldr r0, [r0]
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_CHKCASTANY
; gcrRegs -[r1] +[r0]
- ;; size=12 bbWeight=0.12 PerfScore 0.50
-G_M10356_IG05: ; bbWeight=1, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref
+ ; gcr arg pop 0
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
ldr r2, [r0]
blx r3 // System.Net.Sockets.SocketAsyncContext+AsyncOperation:TryCancel():ubyte:this
; gcrRegs -[r0]
- ;; size=14 bbWeight=1 PerfScore 5.00
-G_M10356_IG06: ; bbWeight=1, epilog, nogc, extend
- add sp, 12
- pop {r4,r11,pc}
- ;; size=6 bbWeight=1 PerfScore 2.00
+ ; gcr arg pop 0
+ ;; size=32 bbWeight=1 PerfScore 12.00
+G_M10356_IG03: ; bbWeight=1, epilog, nogc, extend
+ pop {r2,r3,r4,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 68, prolog size 14, PerfScore 17.25, instruction count 26, allocated bytes for code 68 (MethodHash=959bd78b) for method System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]:<StartAsyncOperation>b__11_1(System.Object):this (Tier1)
+; Total bytes of code 40, prolog size 4, PerfScore 16.00, instruction count 16, allocated bytes for code 40 (MethodHash=959bd78b) for method System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]:<StartAsyncOperation>b__11_1(System.Object):this (Tier1)
; ============================================================
Unwind Info:
@@ -72,11 +54,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 34 (0x00022) Actual length = 68 (0x000044)
+ Function Length : 20 (0x00014) Actual length = 40 (0x000028)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- 03 add sp, sp, #12 ; opsize 16
- A8 10 pop {r4,r11,lr} ; opsize 32
+ ED 1C pop {r2,r3,r4,lr} ; opsize 16
+ FF end
FF end
+12 (+8.11%) : 675368.dasm - System.Collections.Immutable.ImmutableDictionary2[System.__Canon,int]:TryCastToImmutableMap(System.Collections.Generic.IEnumerable1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],byref):ubyte (Tier1)
@@ -8,91 +8,87 @@
; with Dynamic PGO: edge weights are valid, and fgCalledCount is 12
; Final local variable assignments
;
-; V00 TypeCtx [V00,T02] ( 6, 3.50) int -> r2 single-def
-; V01 arg0 [V01,T03] ( 4, 3 ) ref -> r5 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]]>
-; V02 arg1 [V02,T01] ( 5, 4 ) byref -> r4 single-def
-; V03 loc0 [V03,T04] ( 3, 0 ) ref -> r0 class-hnd exact single-def <System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,int]>
+; V00 TypeCtx [V00,T00] ( 6, 4 ) int -> r4 single-def
+; V01 arg0 [V01,T02] ( 4, 3 ) ref -> r6 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]]>
+; V02 arg1 [V02,T01] ( 5, 4 ) byref -> r5 single-def
+; V03 loc0 [V03,T03] ( 3, 0 ) ref -> r0 class-hnd exact single-def <System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,int]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T00] ( 5, 7.50) ref -> r1 class-hnd "spilling QMark2" <System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]>
-;* V06 tmp2 [V06 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V07 tmp3 [V07,T07] ( 2, 0 ) int -> r0 "argument with side effect"
-; V08 rat0 [V08,T05] ( 3, 0 ) int -> r0 "runtime lookup"
-; V09 rat1 [V09,T06] ( 3, 0 ) int -> r0 "fgMakeTemp is creating a new local variable"
-; TEMP_01 ref -> [r11-0x10]
+;* V05 tmp1 [V05 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
+; V06 tmp2 [V06,T06] ( 2, 0 ) int -> r0 "argument with side effect"
+; V07 rat0 [V07,T04] ( 3, 0 ) int -> r0 "runtime lookup"
+; V08 rat1 [V08,T05] ( 3, 0 ) int -> r0 "fgMakeTemp is creating a new local variable"
+; TEMP_01 ref -> [r11-0x18]
;
-; Lcl frame size = 8
+; Lcl frame size = 12
G_M59789_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r2,r3,r4,r5,r11,lr}
- add r11, sp, 16
+ push {r4,r5,r6,r11,lr}
+ sub sp, 12
+ add r11, sp, 24
movs r3, 0
str r3, [sp]
- str r0, [r11-0x0C]
- mov r5, r1
- ; gcrRegs +[r5]
- mov r4, r2
- ; byrRegs +[r4]
- mov r2, r0
- ;; size=22 bbWeight=1 PerfScore 8.00
-G_M59789_IG02: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz
- mov r1, r5
- ; gcrRegs +[r1]
- cmp r1, 0
- beq SHORT G_M59789_IG05
- ;; size=6 bbWeight=1 PerfScore 3.00
-G_M59789_IG03: ; bbWeight=0.50, gcrefRegs=0022 {r1 r5}, byrefRegs=0010 {r4}, byref, isz
- ldr r0, [r1]
- cmp r0, r2
- beq SHORT G_M59789_IG05
- ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M59789_IG04: ; bbWeight=0.25, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref
- ; gcrRegs -[r1]
- movs r1, 0
- ;; size=2 bbWeight=0.25 PerfScore 0.25
-G_M59789_IG05: ; bbWeight=1, gcrefRegs=0022 {r1 r5}, byrefRegs=0010 {r4}, byref, isz
- ; gcrRegs +[r1]
+ str r0, [r11-0x14]
+ mov r4, r0
+ mov r6, r1
+ ; gcrRegs +[r6]
+ mov r5, r2
+ ; byrRegs +[r5]
+ ;; size=24 bbWeight=1 PerfScore 9.00
+G_M59789_IG02: ; bbWeight=1, gcrefRegs=0040 {r6}, byrefRegs=0020 {r5}, byref, isz
mov r0, r4
+ mov r1, r6
+ ; gcrRegs +[r1]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs -[r1] +[r0]
+ str r0, [sp]
+ ldr r1, [sp]
+ ; gcrRegs +[r1]
+ mov r0, r5
+ ; gcrRegs -[r0]
; byrRegs +[r0]
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0]
- ldr r0, [r4]
+ ldr r0, [r5]
; gcrRegs +[r0]
cmp r0, 0
- beq SHORT G_M59789_IG07
+ beq SHORT G_M59789_IG04
movs r0, 1
; gcrRegs -[r0]
- ;; size=20 bbWeight=1 PerfScore 8.00
-G_M59789_IG06: ; bbWeight=1, epilog, nogc, extend
- pop {r2,r3,r4,r5,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M59789_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, gcvars, byref, isz
- ldr r0, [r2+0x24]
+ ;; size=38 bbWeight=1 PerfScore 15.00
+G_M59789_IG03: ; bbWeight=1, epilog, nogc, extend
+ add sp, 12
+ pop {r4,r5,r6,r11,pc}
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M59789_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0040 {r6}, byrefRegs=0020 {r5}, gcvars, byref, isz
+ ldr r0, [r4+0x24]
ldr r0, [r0]
ldr r0, [r0+0x28]
cmp r0, 0
- beq SHORT G_M59789_IG08
- b SHORT G_M59789_IG09
+ beq SHORT G_M59789_IG05
+ b SHORT G_M59789_IG06
;; size=12 bbWeight=0 PerfScore 0.00
-G_M59789_IG08: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref
- mov r0, r2
+G_M59789_IG05: ; bbWeight=0, gcrefRegs=0040 {r6}, byrefRegs=0020 {r5}, byref
+ mov r0, r4
movw r1, 0xd1ff
movt r1, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=20 bbWeight=0 PerfScore 0.00
-G_M59789_IG09: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz
- mov r1, r5
+G_M59789_IG06: ; bbWeight=0, gcrefRegs=0040 {r6}, byrefRegs=0020 {r5}, byref, isz
+ mov r1, r6
; gcrRegs +[r1]
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
- ; gcrRegs -[r1 r5] +[r0]
+ ; gcrRegs -[r1 r6] +[r0]
cmp r0, 0
- beq SHORT G_M59789_IG11
+ beq SHORT G_M59789_IG08
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
@@ -100,27 +96,29 @@ G_M59789_IG09: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by
str r0, [sp]
ldr r1, [sp]
; gcrRegs +[r1]
- mov r0, r4
+ mov r0, r5
; gcrRegs -[r0]
; byrRegs +[r0]
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[r1]
- ; byrRegs -[r0 r4]
+ ; byrRegs -[r0 r5]
movs r0, 1
;; size=46 bbWeight=0 PerfScore 0.00
-G_M59789_IG10: ; bbWeight=0, epilog, nogc, extend
- pop {r2,r3,r4,r5,r11,pc}
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M59789_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M59789_IG07: ; bbWeight=0, epilog, nogc, extend
+ add sp, 12
+ pop {r4,r5,r6,r11,pc}
+ ;; size=6 bbWeight=0 PerfScore 0.00
+G_M59789_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movs r0, 0
;; size=2 bbWeight=0 PerfScore 0.00
-G_M59789_IG12: ; bbWeight=0, epilog, nogc, extend
- pop {r2,r3,r4,r5,r11,pc}
- ;; size=4 bbWeight=0 PerfScore 0.00
+G_M59789_IG09: ; bbWeight=0, epilog, nogc, extend
+ add sp, 12
+ pop {r4,r5,r6,r11,pc}
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 148, prolog size 16, PerfScore 21.75, instruction count 56, allocated bytes for code 148 (MethodHash=98ac1672) for method System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:TryCastToImmutableMap(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],byref):ubyte (Tier1)
+; Total bytes of code 160, prolog size 18, PerfScore 26.00, instruction count 60, allocated bytes for code 160 (MethodHash=98ac1672) for method System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:TryCastToImmutableMap(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],byref):ubyte (Tier1)
; ============================================================
Unwind Info:
@@ -132,7 +130,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 74 (0x0004a) Actual length = 148 (0x000094)
+ Function Length : 80 (0x00050) Actual length = 160 (0x0000a0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -148,7 +146,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 3C pop {r2,r3,r4,r5,r11,lr} ; opsize 32
- FF end
+ 03 add sp, sp, #12 ; opsize 16
+ A8 70 pop {r4,r5,r6,r11,lr} ; opsize 32
FF end
+26 (+14.77%) : 489540.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
@@ -14,85 +14,102 @@
; V02 tmp1 [V02,T07] ( 3, 2 ) ref -> r0 "guarded devirt return temp"
;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
; V04 tmp3 [V04,T06] ( 4, 2 ) ubyte -> r3 "Inline return value spill temp"
-;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V06 tmp5 [V06,T11] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
-;* V07 tmp6 [V07 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.TypeHandle>
-; V08 tmp7 [V08,T08] ( 3, 2 ) int -> r7
-; V09 tmp8 [V09,T09] ( 2, 2 ) ubyte -> r3 "Inline stloc first use temp"
-;* V10 tmp9 [V10 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TypeHandle>
-;* V11 tmp10 [V11 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V12 tmp11 [V12,T01] ( 2, 4 ) byref -> r7 single-def "Inlining Arg"
-;* V13 tmp12 [V13,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V14 tmp13 [V14,T12] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V15 tmp14 [V15 ] ( 0, 0 ) int -> zero-ref "field V07.m_asTAddr (fldOffset=0x0)" P-INDEP
-; V16 tmp15 [V16,T04] ( 3, 3 ) int -> r7 "field V10.m_asTAddr (fldOffset=0x0)" P-INDEP
-; V17 cse0 [V17,T02] ( 3, 3 ) int -> r5 "CSE - aggressive"
-; V18 cse1 [V18,T05] ( 3, 3 ) int -> r0 "CSE - aggressive"
-; V19 cse2 [V19,T03] ( 3, 3 ) int -> r6 "CSE - aggressive"
+; V05 tmp4 [V05,T02] ( 4, 4 ) ref -> r5 class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
+;* V06 tmp5 [V06 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.TypeHandle>
+; V07 tmp6 [V07,T08] ( 3, 2 ) int -> r6
+; V08 tmp7 [V08,T09] ( 2, 2 ) ubyte -> r3 "Inline stloc first use temp"
+;* V09 tmp8 [V09 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TypeHandle>
+;* V10 tmp9 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V11 tmp10 [V11,T03] ( 2, 4 ) byref -> r6 single-def "Inlining Arg"
+;* V12 tmp11 [V12,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V13 tmp12 [V13 ] ( 0, 0 ) int -> zero-ref "field V06.m_asTAddr (fldOffset=0x0)" P-INDEP
+; V14 tmp13 [V14,T04] ( 3, 3 ) int -> r6 "field V09.m_asTAddr (fldOffset=0x0)" P-INDEP
+; V15 cse0 [V15,T05] ( 3, 3 ) int -> r0 "CSE - aggressive"
+; V16 rat0 [V16,T01] ( 5, 7.50) ref -> r5 class-hnd "replacement local" <System.RuntimeType>
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M8853_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r11,lr}
+ push {r3,r4,r5,r6,r11,lr}
add r11, sp, 16
mov r4, r0
; gcrRegs +[r4]
;; size=10 bbWeight=1 PerfScore 3.00
G_M8853_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r5, [r4]
- movw r6, 0xd1ff
- movt r6, 0xd1ff
- cmp r5, r6
- bne SHORT G_M8853_IG14
- ldr r7, [r4+0x0C]
- ands r0, r7, 2
+ ldrsb r0, [r4]
+ mov r5, r4
+ ; gcrRegs +[r5]
+ cmp r5, 0
+ beq SHORT G_M8853_IG05
+ ;; size=10 bbWeight=1 PerfScore 4.00
+G_M8853_IG03: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ ldr r0, [r5]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r0, r3
+ beq SHORT G_M8853_IG05
+ ;; size=14 bbWeight=0.50 PerfScore 2.50
+G_M8853_IG04: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r5]
+ movs r5, 0
+ ;; size=2 bbWeight=0.25 PerfScore 0.25
+G_M8853_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r5]
+ cmp r5, 0
+ beq SHORT G_M8853_IG16
+ ldr r6, [r5+0x0C]
+ ands r0, r6, 2
cmp r0, 0
- bne SHORT G_M8853_IG13
+ bne SHORT G_M8853_IG15
cmp r0, 0
- beq SHORT G_M8853_IG03
+ beq SHORT G_M8853_IG06
movs r0, 0
- b SHORT G_M8853_IG04
- ;; size=32 bbWeight=1 PerfScore 13.00
-G_M8853_IG03: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ b SHORT G_M8853_IG07
+ ;; size=22 bbWeight=1 PerfScore 10.00
+G_M8853_IG06: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
movs r0, 1
;; size=2 bbWeight=1 PerfScore 1.00
-G_M8853_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M8853_IG07: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
- ldr r0, [r7]
+ ldr r0, [r6]
and r0, r0, 0xf0000
cmp r0, 0xc0000
- beq SHORT G_M8853_IG05
- movs r7, 0
- b SHORT G_M8853_IG06
+ beq SHORT G_M8853_IG08
+ movs r6, 0
+ b SHORT G_M8853_IG09
;; size=28 bbWeight=1 PerfScore 10.00
-G_M8853_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- movs r7, 1
+G_M8853_IG08: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+ movs r6, 1
;; size=2 bbWeight=1 PerfScore 1.00
-G_M8853_IG06: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- uxtb r3, r7
+G_M8853_IG09: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ uxtb r3, r6
cmp r3, 0
- bne SHORT G_M8853_IG17
+ bne SHORT G_M8853_IG19
;; size=6 bbWeight=1 PerfScore 3.00
-G_M8853_IG07: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M8853_IG10: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r5]
movw r0, 0xd1ff
movt r0, 0xd1ff
cmp r4, r0
- bne SHORT G_M8853_IG10
+ bne SHORT G_M8853_IG13
;; size=12 bbWeight=1 PerfScore 4.00
-G_M8853_IG08: ; bbWeight=0.94, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M8853_IG11: ; bbWeight=0.94, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r4]
movs r0, 0
;; size=2 bbWeight=0.94 PerfScore 0.94
-G_M8853_IG09: ; bbWeight=0.94, epilog, nogc, extend
- pop {r4,r5,r6,r7,r11,pc}
+G_M8853_IG12: ; bbWeight=0.94, epilog, nogc, extend
+ pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=0.94 PerfScore 0.94
-G_M8853_IG10: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M8853_IG13: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r4]
- cmp r5, r6
- bne SHORT G_M8853_IG12
+ ldr r0, [r4]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r0, r3
+ bne SHORT G_M8853_IG21
mov r0, r4
; gcrRegs +[r0]
movw r3, 0xd1ff
@@ -100,27 +117,17 @@ G_M8853_IG10: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byre
ldr r3, [r3]
blx r3 // <unknown method>
; gcrRegs -[r4]
- ;; size=18 bbWeight=1 PerfScore 7.00
-G_M8853_IG11: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
- pop {r4,r5,r6,r7,r11,pc}
+ ;; size=28 bbWeight=1 PerfScore 10.00
+G_M8853_IG14: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M8853_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r0] +[r4]
- mov r0, r4
- ; gcrRegs +[r0]
- ldr r3, [r4]
- ldr r3, [r3+0x58]
- ldr r3, [r3+0x10]
- blx r3 // <unknown method>
- ; gcrRegs -[r4]
- b SHORT G_M8853_IG11
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M8853_IG13: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0] +[r4]
- movs r7, 0
- b SHORT G_M8853_IG06
+G_M8853_IG15: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[r0] +[r4-r5]
+ movs r6, 0
+ b SHORT G_M8853_IG09
;; size=4 bbWeight=0 PerfScore 0.00
-G_M8853_IG14: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M8853_IG16: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r5]
mov r0, r4
; gcrRegs +[r0]
ldr r3, [r4]
@@ -130,27 +137,38 @@ G_M8853_IG14: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
and r0, r0, 32
cmp r0, 32
- beq SHORT G_M8853_IG15
+ beq SHORT G_M8853_IG17
movs r3, 0
- b SHORT G_M8853_IG16
+ b SHORT G_M8853_IG18
;; size=22 bbWeight=0 PerfScore 0.00
-G_M8853_IG15: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M8853_IG17: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
movs r3, 1
;; size=2 bbWeight=0 PerfScore 0.00
-G_M8853_IG16: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M8853_IG18: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r3, 0
- beq SHORT G_M8853_IG07
+ beq SHORT G_M8853_IG10
;; size=4 bbWeight=0 PerfScore 0.00
-G_M8853_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M8853_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r4]
movw r0, 0xd1ff
movt r0, 0xd1ff
;; size=8 bbWeight=0 PerfScore 0.00
-G_M8853_IG18: ; bbWeight=0, epilog, nogc, extend
- pop {r4,r5,r6,r7,r11,pc}
+G_M8853_IG20: ; bbWeight=0, epilog, nogc, extend
+ pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=0 PerfScore 0.00
+G_M8853_IG21: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[r4]
+ mov r0, r4
+ ; gcrRegs +[r0]
+ ldr r3, [r4]
+ ldr r3, [r3+0x58]
+ ldr r3, [r3+0x10]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r4]
+ b SHORT G_M8853_IG14
+ ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 176, prolog size 8, PerfScore 44.89, instruction count 69, allocated bytes for code 176 (MethodHash=a7e7dd6a) for method System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
+; Total bytes of code 202, prolog size 8, PerfScore 51.64, instruction count 79, allocated bytes for code 202 (MethodHash=a7e7dd6a) for method System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
; ============================================================
Unwind Info:
@@ -162,7 +180,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 88 (0x00058) Actual length = 176 (0x0000b0)
+ Function Length : 101 (0x00065) Actual length = 202 (0x0000ca)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -178,7 +196,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 F0 pop {r4,r5,r6,r7,r11,lr} ; opsize 32
+ A8 78 pop {r3,r4,r5,r6,r11,lr} ; opsize 32
...
+26 (+14.77%) : 523448.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
@@ -11,88 +11,100 @@
;
; V00 arg0 [V00,T00] ( 11, 7 ) ref -> r4 class-hnd single-def <System.Type>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T07] ( 3, 2 ) ref -> r0 "guarded devirt return temp"
+; V02 tmp1 [V02,T06] ( 3, 2 ) ref -> r0 "guarded devirt return temp"
;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
-; V04 tmp3 [V04,T06] ( 4, 2 ) ubyte -> r3 "Inline return value spill temp"
-;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V06 tmp5 [V06,T10] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
-;* V07 tmp6 [V07 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.TypeHandle>
-; V08 tmp7 [V08,T08] ( 3, 2 ) int -> r7
-; V09 tmp8 [V09,T09] ( 2, 2 ) ubyte -> r3 "Inline stloc first use temp"
-;* V10 tmp9 [V10 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TypeHandle>
-;* V11 tmp10 [V11 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V12 tmp11 [V12,T01] ( 2, 4 ) byref -> r7 single-def "Inlining Arg"
-;* V13 tmp12 [V13,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V14 tmp13 [V14,T12] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V15 tmp14 [V15 ] ( 0, 0 ) int -> zero-ref "field V07.m_asTAddr (fldOffset=0x0)" P-INDEP
-; V16 tmp15 [V16,T04] ( 3, 3 ) int -> r7 "field V10.m_asTAddr (fldOffset=0x0)" P-INDEP
-; V17 cse0 [V17,T02] ( 3, 3 ) int -> r5 "CSE - aggressive"
-; V18 cse1 [V18,T05] ( 3, 3 ) int -> r0 "CSE - aggressive"
-; V19 cse2 [V19,T03] ( 3, 3 ) int -> r6 "CSE - aggressive"
+; V04 tmp3 [V04,T07] ( 3, 2 ) ubyte -> r3 "Inline return value spill temp"
+; V05 tmp4 [V05,T02] ( 4, 4 ) ref -> r5 class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
+;* V06 tmp5 [V06 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.TypeHandle>
+; V07 tmp6 [V07,T08] ( 3, 2 ) int -> r6
+; V08 tmp7 [V08,T09] ( 2, 2 ) ubyte -> r3 "Inline stloc first use temp"
+;* V09 tmp8 [V09 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TypeHandle>
+;* V10 tmp9 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V11 tmp10 [V11,T03] ( 2, 4 ) byref -> r6 single-def "Inlining Arg"
+;* V12 tmp11 [V12,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V13 tmp12 [V13 ] ( 0, 0 ) int -> zero-ref "field V06.m_asTAddr (fldOffset=0x0)" P-INDEP
+; V14 tmp13 [V14,T04] ( 3, 3 ) int -> r6 "field V09.m_asTAddr (fldOffset=0x0)" P-INDEP
+; V15 cse0 [V15,T05] ( 3, 3 ) int -> r0 "CSE - aggressive"
+; V16 rat0 [V16,T01] ( 5, 7.50) ref -> r5 class-hnd "replacement local" <System.RuntimeType>
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M8853_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r11,lr}
+ push {r3,r4,r5,r6,r11,lr}
add r11, sp, 16
mov r4, r0
; gcrRegs +[r4]
;; size=10 bbWeight=1 PerfScore 3.00
G_M8853_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r5, [r4]
- movw r6, 0xd1ff
- movt r6, 0xd1ff
- cmp r5, r6
+ ldrsb r0, [r4]
+ mov r5, r4
+ ; gcrRegs +[r5]
+ cmp r5, 0
+ beq SHORT G_M8853_IG04
+ ;; size=10 bbWeight=1 PerfScore 4.00
+G_M8853_IG03: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ ldr r0, [r5]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r0, r3
bne SHORT G_M8853_IG14
- ldr r7, [r4+0x0C]
- ands r0, r7, 2
+ ;; size=14 bbWeight=0.50 PerfScore 2.50
+G_M8853_IG04: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ cmp r5, 0
+ beq SHORT G_M8853_IG16
+ ldr r6, [r5+0x0C]
+ ands r0, r6, 2
cmp r0, 0
- bne SHORT G_M8853_IG13
+ bne SHORT G_M8853_IG15
cmp r0, 0
- beq SHORT G_M8853_IG03
+ beq SHORT G_M8853_IG05
movs r0, 0
- b SHORT G_M8853_IG04
- ;; size=32 bbWeight=1 PerfScore 13.00
-G_M8853_IG03: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ b SHORT G_M8853_IG06
+ ;; size=22 bbWeight=1 PerfScore 10.00
+G_M8853_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
movs r0, 1
;; size=2 bbWeight=1 PerfScore 1.00
-G_M8853_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M8853_IG06: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
- ldr r0, [r7]
+ ldr r0, [r6]
and r0, r0, 0xf0000
cmp r0, 0xc0000
- beq SHORT G_M8853_IG05
- movs r7, 0
- b SHORT G_M8853_IG06
+ beq SHORT G_M8853_IG07
+ movs r6, 0
+ b SHORT G_M8853_IG08
;; size=28 bbWeight=1 PerfScore 10.00
-G_M8853_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- movs r7, 1
+G_M8853_IG07: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+ movs r6, 1
;; size=2 bbWeight=1 PerfScore 1.00
-G_M8853_IG06: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- uxtb r3, r7
+G_M8853_IG08: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+ uxtb r3, r6
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M8853_IG09: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r5]
cmp r3, 0
- bne SHORT G_M8853_IG17
- ;; size=6 bbWeight=1 PerfScore 3.00
-G_M8853_IG07: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ bne SHORT G_M8853_IG20
movw r0, 0xd1ff
movt r0, 0xd1ff
cmp r4, r0
- bne SHORT G_M8853_IG10
- ;; size=12 bbWeight=1 PerfScore 4.00
-G_M8853_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ bne SHORT G_M8853_IG12
+ ;; size=16 bbWeight=1 PerfScore 6.00
+G_M8853_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r4]
movs r0, 0
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M8853_IG09: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r6,r7,r11,pc}
+G_M8853_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M8853_IG10: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M8853_IG12: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r4]
- cmp r5, r6
- bne SHORT G_M8853_IG12
+ ldr r0, [r4]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r0, r3
+ bne SHORT G_M8853_IG19
mov r0, r4
; gcrRegs +[r0]
movw r3, 0xd1ff
@@ -100,27 +112,22 @@ G_M8853_IG10: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byre
ldr r3, [r3]
blx r3 // <unknown method>
; gcrRegs -[r4]
- ;; size=18 bbWeight=1 PerfScore 7.00
-G_M8853_IG11: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
- pop {r4,r5,r6,r7,r11,pc}
+ ;; size=28 bbWeight=1 PerfScore 10.00
+G_M8853_IG13: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M8853_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M8853_IG14: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0] +[r4]
- mov r0, r4
- ; gcrRegs +[r0]
- ldr r3, [r4]
- ldr r3, [r3+0x58]
- ldr r3, [r3+0x10]
- blx r3 // <unknown method>
- ; gcrRegs -[r4]
- b SHORT G_M8853_IG11
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M8853_IG13: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0] +[r4]
- movs r7, 0
- b SHORT G_M8853_IG06
+ movs r5, 0
+ b SHORT G_M8853_IG04
+ ;; size=4 bbWeight=0.25 PerfScore 0.50
+G_M8853_IG15: ; bbWeight=0, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r5]
+ movs r6, 0
+ b SHORT G_M8853_IG08
;; size=4 bbWeight=0 PerfScore 0.00
-G_M8853_IG14: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M8853_IG16: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r5]
mov r0, r4
; gcrRegs +[r0]
ldr r3, [r4]
@@ -130,27 +137,36 @@ G_M8853_IG14: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
and r0, r0, 32
cmp r0, 32
- beq SHORT G_M8853_IG15
+ beq SHORT G_M8853_IG17
movs r3, 0
- b SHORT G_M8853_IG16
+ b SHORT G_M8853_IG18
;; size=22 bbWeight=0 PerfScore 0.00
-G_M8853_IG15: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M8853_IG17: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
movs r3, 1
;; size=2 bbWeight=0 PerfScore 0.00
-G_M8853_IG16: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- cmp r3, 0
- beq SHORT G_M8853_IG07
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M8853_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M8853_IG18: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M8853_IG09
+ ;; size=2 bbWeight=0 PerfScore 0.00
+G_M8853_IG19: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ mov r0, r4
+ ; gcrRegs +[r0]
+ ldr r3, [r4]
+ ldr r3, [r3+0x58]
+ ldr r3, [r3+0x10]
+ blx r3 // <unknown method>
; gcrRegs -[r4]
+ b SHORT G_M8853_IG13
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M8853_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r0]
movw r0, 0xd1ff
movt r0, 0xd1ff
;; size=8 bbWeight=0 PerfScore 0.00
-G_M8853_IG18: ; bbWeight=0, epilog, nogc, extend
- pop {r4,r5,r6,r7,r11,pc}
+G_M8853_IG21: ; bbWeight=0, epilog, nogc, extend
+ pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 176, prolog size 8, PerfScore 44.00, instruction count 69, allocated bytes for code 176 (MethodHash=a7e7dd6a) for method System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
+; Total bytes of code 202, prolog size 8, PerfScore 51.00, instruction count 79, allocated bytes for code 202 (MethodHash=a7e7dd6a) for method System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
; ============================================================
Unwind Info:
@@ -162,7 +178,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 88 (0x00058) Actual length = 176 (0x0000b0)
+ Function Length : 101 (0x00065) Actual length = 202 (0x0000ca)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -178,7 +194,7 @@ Unwind Info:
...
librariestestsnotieredcompilation.run.linux.arm.Release.mch
-28 (-51.85%) : 133529.dasm - System.Linq.ParallelQuery1+<>c__21[System.Canon,System.Canon]:b2_1(System.Canon):System.__Canon:this (FullOpts)
@@ -2,57 +2,40 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; FullOpts code
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 2.25) ref -> r4 this class-hnd single-def <System.Linq.ParallelQuery`1+<>c__2`1[System.__Canon,System.__Canon]>
-; V01 arg1 [V01,T01] ( 4, 3.12) ref -> r1 class-hnd single-def <System.__Canon>
+; V00 this [V00,T00] ( 3, 3 ) ref -> r4 this class-hnd single-def <System.Linq.ParallelQuery`1+<>c__2`1[System.__Canon,System.__Canon]>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> r1 class-hnd single-def <System.__Canon>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) int -> r2 "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> r0 class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M53670_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r11,lr}
- sub sp, 12
- add r11, sp, 16
- str r0, [r11-0x0C]
+ push {r2,r3,r4,lr}
+ str r0, [sp+0x04]
mov r4, r0
; gcrRegs +[r4]
- ;; size=16 bbWeight=1 PerfScore 5.00
-G_M53670_IG02: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r1]
- mov r0, r1
- ; gcrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M53670_IG05
;; size=6 bbWeight=1 PerfScore 3.00
-G_M53670_IG03: ; bbWeight=0.25, gcrefRegs=0013 {r0 r1 r4}, byrefRegs=0000 {}, byref, isz
- ldr r3, [r0]
- ldr r2, [r4]
- ldr r2, [r2+0x24]
- ldr r2, [r2]
- ldr r2, [r2+0x04]
- cmp r3, r2
- beq SHORT G_M53670_IG05
- ;; size=14 bbWeight=0.25 PerfScore 1.75
-G_M53670_IG04: ; bbWeight=0.12, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r0]
- mov r0, r2
+G_M53670_IG02: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r1]
+ ldr r0, [r4]
+ ldr r0, [r0+0x24]
+ ldr r0, [r0]
+ ldr r0, [r0+0x04]
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_CHKCASTANY
; gcrRegs -[r1] +[r0]
- ;; size=12 bbWeight=0.12 PerfScore 0.50
-G_M53670_IG05: ; bbWeight=1, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref, epilog, nogc
- add sp, 12
- pop {r4,r11,pc}
- ;; size=6 bbWeight=1 PerfScore 2.00
+ ; gcr arg pop 0
+ ;; size=18 bbWeight=1 PerfScore 7.00
+G_M53670_IG03: ; bbWeight=1, epilog, nogc, extend
+ pop {r2,r3,r4,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 54, prolog size 14, PerfScore 12.25, instruction count 21, allocated bytes for code 54 (MethodHash=8f1c2e59) for method System.Linq.ParallelQuery`1+<>c__2`1[System.__Canon,System.__Canon]:<OfType>b__2_1(System.__Canon):System.__Canon:this (FullOpts)
+; Total bytes of code 26, prolog size 4, PerfScore 11.00, instruction count 11, allocated bytes for code 26 (MethodHash=8f1c2e59) for method System.Linq.ParallelQuery`1+<>c__2`1[System.__Canon,System.__Canon]:<OfType>b__2_1(System.__Canon):System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
@@ -64,11 +47,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 27 (0x0001b) Actual length = 54 (0x000036)
+ Function Length : 13 (0x0000d) Actual length = 26 (0x00001a)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- 03 add sp, sp, #12 ; opsize 16
- A8 10 pop {r4,r11,lr} ; opsize 32
+ ED 1C pop {r2,r3,r4,lr} ; opsize 16
+ FF end
FF end
-28 (-51.85%) : 87886.dasm - System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c11[System.__Canon]:<GetMetadataViewProvider>b__1_0(System.Collections.Generic.IDictionary2[System.String,System.Object]):System.Canon:this (FullOpts)
@@ -2,57 +2,40 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; FullOpts code
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 2.25) ref -> r4 this class-hnd single-def <System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]>
-; V01 arg1 [V01,T01] ( 4, 3.12) ref -> r1 class-hnd single-def <System.Collections.Generic.IDictionary`2[System.String,System.Object]>
+; V00 this [V00,T00] ( 3, 3 ) ref -> r4 this class-hnd single-def <System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> r1 class-hnd single-def <System.Collections.Generic.IDictionary`2[System.String,System.Object]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) int -> r2 "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> r0 class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M31417_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r11,lr}
- sub sp, 12
- add r11, sp, 16
- str r0, [r11-0x0C]
+ push {r2,r3,r4,lr}
+ str r0, [sp+0x04]
mov r4, r0
; gcrRegs +[r4]
- ;; size=16 bbWeight=1 PerfScore 5.00
-G_M31417_IG02: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r1]
- mov r0, r1
- ; gcrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M31417_IG05
;; size=6 bbWeight=1 PerfScore 3.00
-G_M31417_IG03: ; bbWeight=0.25, gcrefRegs=0013 {r0 r1 r4}, byrefRegs=0000 {}, byref, isz
- ldr r3, [r0]
- ldr r2, [r4]
- ldr r2, [r2+0x24]
- ldr r2, [r2]
- ldr r2, [r2]
- cmp r3, r2
- beq SHORT G_M31417_IG05
- ;; size=14 bbWeight=0.25 PerfScore 1.75
-G_M31417_IG04: ; bbWeight=0.12, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r0]
- mov r0, r2
+G_M31417_IG02: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r1]
+ ldr r0, [r4]
+ ldr r0, [r0+0x24]
+ ldr r0, [r0]
+ ldr r0, [r0]
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_CHKCASTANY
; gcrRegs -[r1] +[r0]
- ;; size=12 bbWeight=0.12 PerfScore 0.50
-G_M31417_IG05: ; bbWeight=1, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref, epilog, nogc
- add sp, 12
- pop {r4,r11,pc}
- ;; size=6 bbWeight=1 PerfScore 2.00
+ ; gcr arg pop 0
+ ;; size=18 bbWeight=1 PerfScore 7.00
+G_M31417_IG03: ; bbWeight=1, epilog, nogc, extend
+ pop {r2,r3,r4,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 54, prolog size 14, PerfScore 12.25, instruction count 21, allocated bytes for code 54 (MethodHash=9c5d8546) for method System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]:<GetMetadataViewProvider>b__1_0(System.Collections.Generic.IDictionary`2[System.String,System.Object]):System.__Canon:this (FullOpts)
+; Total bytes of code 26, prolog size 4, PerfScore 11.00, instruction count 11, allocated bytes for code 26 (MethodHash=9c5d8546) for method System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]:<GetMetadataViewProvider>b__1_0(System.Collections.Generic.IDictionary`2[System.String,System.Object]):System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
@@ -64,11 +47,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 27 (0x0001b) Actual length = 54 (0x000036)
+ Function Length : 13 (0x0000d) Actual length = 26 (0x00001a)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- 03 add sp, sp, #12 ; opsize 16
- A8 10 pop {r4,r11,lr} ; opsize 32
+ ED 1C pop {r2,r3,r4,lr} ; opsize 16
+ FF end
FF end
-28 (-50.00%) : 42650.dasm - Microsoft.CodeAnalysis.Options.Option2`1[System.Canon]:get_DefaultValue():System.Canon:this (FullOpts)
@@ -2,61 +2,43 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; FullOpts code
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 4, 3.25) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.Options.Option2`1[System.__Canon]>
+; V00 this [V00,T00] ( 4, 4 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.Options.Option2`1[System.__Canon]>
;* V01 loc0 [V01 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] ld-addr-op <Microsoft.CodeAnalysis.Options.OptionDefinition>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 3, 4.25) ref -> r1 single-def "CASTCLASS eval op1"
-; V04 tmp2 [V04,T03] ( 3, 1.25) int -> r2 "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5, 6.75) ref -> r0 class-hnd "spilling QMark2" <System.__Canon>
-;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref "V01.[012..016)"
+;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref "V01.[012..016)"
;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M65085_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r11,lr}
- sub sp, 12
- add r11, sp, 16
- str r0, [r11-0x0C]
+ push {r2,r3,r4,lr}
+ str r0, [sp+0x04]
mov r4, r0
; gcrRegs +[r4]
- ;; size=16 bbWeight=1 PerfScore 5.00
-G_M65085_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ;; size=6 bbWeight=1 PerfScore 3.00
+G_M65085_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ ldr r0, [r4]
+ ldr r0, [r0+0x24]
+ ldr r0, [r0]
+ ldr r0, [r0]
ldr r1, [r4+0x10]
; gcrRegs +[r1]
- mov r0, r1
- ; gcrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M65085_IG05
- ;; size=8 bbWeight=1 PerfScore 4.00
-G_M65085_IG03: ; bbWeight=0.25, gcrefRegs=0013 {r0 r1 r4}, byrefRegs=0000 {}, byref, isz
- ldr r3, [r0]
- ldr r2, [r4]
- ldr r2, [r2+0x24]
- ldr r2, [r2]
- ldr r2, [r2]
- cmp r3, r2
- beq SHORT G_M65085_IG05
- ;; size=14 bbWeight=0.25 PerfScore 1.75
-G_M65085_IG04: ; bbWeight=0.12, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r0]
- mov r0, r2
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_CHKCASTANY
; gcrRegs -[r1] +[r0]
- ;; size=12 bbWeight=0.12 PerfScore 0.50
-G_M65085_IG05: ; bbWeight=1, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref, epilog, nogc
- add sp, 12
- pop {r4,r11,pc}
- ;; size=6 bbWeight=1 PerfScore 2.00
+ ; gcr arg pop 0
+ ;; size=20 bbWeight=1 PerfScore 8.00
+G_M65085_IG03: ; bbWeight=1, epilog, nogc, extend
+ pop {r2,r3,r4,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 56, prolog size 14, PerfScore 13.25, instruction count 22, allocated bytes for code 56 (MethodHash=d91901c2) for method Microsoft.CodeAnalysis.Options.Option2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
+; Total bytes of code 28, prolog size 4, PerfScore 12.00, instruction count 12, allocated bytes for code 28 (MethodHash=d91901c2) for method Microsoft.CodeAnalysis.Options.Option2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
@@ -68,11 +50,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 28 (0x0001c) Actual length = 56 (0x000038)
+ Function Length : 14 (0x0000e) Actual length = 28 (0x00001c)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- 03 add sp, sp, #12 ; opsize 16
- A8 10 pop {r4,r11,lr} ; opsize 32
+ ED 1C pop {r2,r3,r4,lr} ; opsize 16
+ FF end
FF end
+26 (+43.33%) : 94737.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest:b_160():this (FullOpts)
@@ -8,24 +8,23 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 5, 2 ) ref -> r4 this class-hnd single-def <System.Data.Tests.Common.DataTableMappingCollectionTest>
-;* V01 loc0 [V01,T04] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>>
+; V00 this [V00,T00] ( 5, 5 ) ref -> r4 this class-hnd single-def <System.Data.Tests.Common.DataTableMappingCollectionTest>
+;* V01 loc0 [V01,T05] ( 0, 0 ) ref -> zero-ref class-hnd exact 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, 0 ) ref -> r0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection>
-; V04 tmp2 [V04,T02] ( 2, 0 ) ref -> r1 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMapping[]>
-; V05 tmp3 [V05,T03] ( 2, 0 ) ref -> r0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection>
-;* V06 tmp4 [V06,T06] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V07 tmp5 [V07,T05] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <System.Data.Common.DataTableMapping>
+; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> r0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection>
+; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> r1 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMapping[]>
+; V05 tmp3 [V05,T02] ( 3, 6 ) ref -> r4 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection>
+;* V06 tmp4 [V06,T04] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
;
; Lcl frame size = 4
-G_M51850_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M51850_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r3,r4,r11,lr}
add r11, sp, 8
mov r4, r0
; gcrRegs +[r4]
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M51850_IG02: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ ;; size=10 bbWeight=1 PerfScore 3.00
+G_M51850_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
ldr r0, [r4+0x04]
; gcrRegs +[r0]
ldr r1, [r4+0x08]
@@ -37,37 +36,52 @@ G_M51850_IG02: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
ldr r3, [r3]
blx r3 // <unknown method>
; gcrRegs -[r0-r1]
- ldr r0, [r4+0x04]
- ; gcrRegs +[r0]
- ldrsb r0, [r0]
- ; gcrRegs -[r0]
+ ldr r4, [r4+0x04]
+ ldrsb r0, [r4]
movw r0, 0xd1ff
movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // System.Data.Common.DataTableMappingCollection:ValidateType(System.Object)
- ; gcrRegs -[r4]
- bkpt
- ;; size=50 bbWeight=0 PerfScore 0.00
+ movw r1, 0xd1ff
+ movt r1, 0xd1ff
+ mov r0, r4
+ ; gcrRegs +[r0]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ ;; size=68 bbWeight=1 PerfScore 22.00
+G_M51850_IG03: ; bbWeight=1, epilog, nogc, extend
+ add sp, 4
+ pop {r4,r11,lr}
+ bx r3 // System.Data.Common.DataTableMappingCollection:Remove(System.Data.Common.DataTableMapping):this
+ ;; size=8 bbWeight=1 PerfScore 3.00
-; Total bytes of code 60, prolog size 8, PerfScore 0.00, instruction count 20, allocated bytes for code 60 (MethodHash=872f3575) for method System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
+; Total bytes of code 86, prolog size 8, PerfScore 28.00, instruction count 28, allocated bytes for code 86 (MethodHash=872f3575) for method System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
- Epilog Count : 0
+ Code Words : 2
+ Epilog Count : 1
F bit : 0
E bit : 0
X bit : 0
Vers : 0
- Function Length : 30 (0x0001e) Actual length = 60 (0x00003c)
+ Function Length : 43 (0x0002b) Actual length = 86 (0x000056)
---- Epilog scopes ----
- No epilogs
+ ---- Scope 0
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Condition : 14 (0xe) (always)
+ Epilog Start Index : 3 (0x03)
---- Unwind codes ----
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
+26 (+43.33%) : 91476.dasm - System.Data.Tests.Common.DataColumnMappingCollectionTest:b_220():this (FullOpts)
@@ -8,24 +8,23 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 5, 2 ) ref -> r4 this class-hnd single-def <System.Data.Tests.Common.DataColumnMappingCollectionTest>
-;* V01 loc0 [V01,T04] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>>
+; V00 this [V00,T00] ( 5, 5 ) ref -> r4 this class-hnd single-def <System.Data.Tests.Common.DataColumnMappingCollectionTest>
+;* V01 loc0 [V01,T05] ( 0, 0 ) ref -> zero-ref class-hnd exact 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, 0 ) ref -> r0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection>
-; V04 tmp2 [V04,T02] ( 2, 0 ) ref -> r1 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMapping[]>
-; V05 tmp3 [V05,T03] ( 2, 0 ) ref -> r0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection>
-;* V06 tmp4 [V06,T06] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V07 tmp5 [V07,T05] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <System.Data.Common.DataColumnMapping>
+; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> r0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection>
+; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> r1 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMapping[]>
+; V05 tmp3 [V05,T02] ( 3, 6 ) ref -> r4 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection>
+;* V06 tmp4 [V06,T04] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
;
; Lcl frame size = 4
-G_M18245_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M18245_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r3,r4,r11,lr}
add r11, sp, 8
mov r4, r0
; gcrRegs +[r4]
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M18245_IG02: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ ;; size=10 bbWeight=1 PerfScore 3.00
+G_M18245_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
ldr r0, [r4+0x04]
; gcrRegs +[r0]
ldr r1, [r4+0x08]
@@ -37,37 +36,52 @@ G_M18245_IG02: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
ldr r3, [r3]
blx r3 // <unknown method>
; gcrRegs -[r0-r1]
- ldr r0, [r4+0x04]
- ; gcrRegs +[r0]
- ldrsb r0, [r0]
- ; gcrRegs -[r0]
+ ldr r4, [r4+0x04]
+ ldrsb r0, [r4]
movw r0, 0xd1ff
movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // System.Data.Common.DataColumnMappingCollection:ValidateType(System.Object)
- ; gcrRegs -[r4]
- bkpt
- ;; size=50 bbWeight=0 PerfScore 0.00
+ movw r1, 0xd1ff
+ movt r1, 0xd1ff
+ mov r0, r4
+ ; gcrRegs +[r0]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ ;; size=68 bbWeight=1 PerfScore 22.00
+G_M18245_IG03: ; bbWeight=1, epilog, nogc, extend
+ add sp, 4
+ pop {r4,r11,lr}
+ bx r3 // System.Data.Common.DataColumnMappingCollection:Remove(System.Data.Common.DataColumnMapping):this
+ ;; size=8 bbWeight=1 PerfScore 3.00
-; Total bytes of code 60, prolog size 8, PerfScore 0.00, instruction count 20, allocated bytes for code 60 (MethodHash=013fb8ba) for method System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
+; Total bytes of code 86, prolog size 8, PerfScore 28.00, instruction count 28, allocated bytes for code 86 (MethodHash=013fb8ba) for method System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
- Epilog Count : 0
+ Code Words : 2
+ Epilog Count : 1
F bit : 0
E bit : 0
X bit : 0
Vers : 0
- Function Length : 30 (0x0001e) Actual length = 60 (0x00003c)
+ Function Length : 43 (0x0002b) Actual length = 86 (0x000056)
---- Epilog scopes ----
- No epilogs
+ ---- Scope 0
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Condition : 14 (0xe) (always)
+ Epilog Start Index : 3 (0x03)
---- Unwind codes ----
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
+30 (+88.24%) : 94851.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest2+<>cDisplayClass7_0:b2():this (FullOpts)
@@ -8,23 +8,22 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 3, 2 ) ref -> r0 this class-hnd single-def <System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0>
+; V00 this [V00,T01] ( 3, 3 ) ref -> r0 this class-hnd single-def <System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 2, 0 ) ref -> r0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection>
-;* V03 tmp2 [V03,T02] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
-;* V04 tmp3 [V04,T04] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V05 tmp4 [V05,T03] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <System.Data.Common.DataTableMapping>
+; V02 tmp1 [V02,T00] ( 3, 6 ) ref -> r4 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection>
+;* V03 tmp2 [V03,T02] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
-G_M51219_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r11,lr}
- mov r11, sp
- ;; size=6 bbWeight=0 PerfScore 0.00
-G_M51219_IG02: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
+G_M51219_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push {r3,r4,r11,lr}
+ add r11, sp, 8
+ ;; size=8 bbWeight=1 PerfScore 2.00
+G_M51219_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
; gcrRegs +[r0]
- ldr r0, [r0+0x04]
- ldrsb r0, [r0]
+ ldr r4, [r0+0x04]
+ ; gcrRegs +[r4]
+ ldrsb r0, [r4]
; gcrRegs -[r0]
movw r0, 0xd1ff
movt r0, 0xd1ff
@@ -32,26 +31,45 @@ G_M51219_IG02: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byre
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // System.Data.Common.DataTableMappingCollection:ValidateType(System.Object)
- bkpt
- ;; size=28 bbWeight=0 PerfScore 0.00
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ mov r0, r4
+ ; gcrRegs +[r0]
+ movs r1, 0
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ ;; size=48 bbWeight=1 PerfScore 15.00
+G_M51219_IG03: ; bbWeight=1, epilog, nogc, extend
+ add sp, 4
+ pop {r4,r11,lr}
+ bx r3 // System.Data.Common.DataTableMappingCollection:Insert(int,System.Data.Common.DataTableMapping):this
+ ;; size=8 bbWeight=1 PerfScore 3.00
-; Total bytes of code 34, prolog size 6, PerfScore 0.00, instruction count 11, allocated bytes for code 34 (MethodHash=20ef37ec) for method System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0:<Insert>b__2():this (FullOpts)
+; Total bytes of code 64, prolog size 8, PerfScore 20.00, instruction count 20, allocated bytes for code 64 (MethodHash=20ef37ec) for method System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0:<Insert>b__2():this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
- Epilog Count : 0
+ Code Words : 2
+ Epilog Count : 1
F bit : 0
E bit : 0
X bit : 0
Vers : 0
- Function Length : 17 (0x00011) Actual length = 34 (0x000022)
+ Function Length : 32 (0x00020) Actual length = 64 (0x000040)
---- Epilog scopes ----
- No epilogs
+ ---- Scope 0
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Condition : 14 (0xe) (always)
+ Epilog Start Index : 3 (0x03)
---- Unwind codes ----
- 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
realworld.run.linux.arm.checked.mch
-28 (-51.85%) : 37676.dasm - System.Management.Automation.PSTypeExtensions+<>c7`1[System.Canon]:b7_1(System.Object):System.Canon:this (FullOpts)
@@ -2,57 +2,40 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; FullOpts code
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 2.25) ref -> r4 this class-hnd single-def <System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]>
-; V01 arg1 [V01,T01] ( 4, 3.12) ref -> r1 class-hnd single-def <System.Object>
+; V00 this [V00,T00] ( 3, 3 ) ref -> r4 this class-hnd single-def <System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]>
+; V01 arg1 [V01,T01] ( 3, 3 ) 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,T03] ( 3, 1.25) int -> r2 "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> r0 class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M56342_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r11,lr}
- sub sp, 12
- add r11, sp, 16
- str r0, [r11-0x0C]
+ push {r2,r3,r4,lr}
+ str r0, [sp+0x04]
mov r4, r0
; gcrRegs +[r4]
- ;; size=16 bbWeight=1 PerfScore 5.00
-G_M56342_IG02: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r1]
- mov r0, r1
- ; gcrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M56342_IG05
;; size=6 bbWeight=1 PerfScore 3.00
-G_M56342_IG03: ; bbWeight=0.25, gcrefRegs=0013 {r0 r1 r4}, byrefRegs=0000 {}, byref, isz
- ldr r3, [r0]
- ldr r2, [r4]
- ldr r2, [r2+0x24]
- ldr r2, [r2]
- ldr r2, [r2]
- cmp r3, r2
- beq SHORT G_M56342_IG05
- ;; size=14 bbWeight=0.25 PerfScore 1.75
-G_M56342_IG04: ; bbWeight=0.12, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r0]
- mov r0, r2
+G_M56342_IG02: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r1]
+ ldr r0, [r4]
+ ldr r0, [r0+0x24]
+ ldr r0, [r0]
+ ldr r0, [r0]
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_CHKCASTANY
; gcrRegs -[r1] +[r0]
- ;; size=12 bbWeight=0.12 PerfScore 0.50
-G_M56342_IG05: ; bbWeight=1, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref, epilog, nogc
- add sp, 12
- pop {r4,r11,pc}
- ;; size=6 bbWeight=1 PerfScore 2.00
+ ; gcr arg pop 0
+ ;; size=18 bbWeight=1 PerfScore 7.00
+G_M56342_IG03: ; bbWeight=1, epilog, nogc, extend
+ pop {r2,r3,r4,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 54, prolog size 14, PerfScore 12.25, instruction count 21, allocated bytes for code 54 (MethodHash=169a23e9) for method System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]:<GetCustomAttributes>b__7_1(System.Object):System.__Canon:this (FullOpts)
+; Total bytes of code 26, prolog size 4, PerfScore 11.00, instruction count 11, allocated bytes for code 26 (MethodHash=169a23e9) for method System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]:<GetCustomAttributes>b__7_1(System.Object):System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
@@ -64,11 +47,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 27 (0x0001b) Actual length = 54 (0x000036)
+ Function Length : 13 (0x0000d) Actual length = 26 (0x00001a)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- 03 add sp, sp, #12 ; opsize 16
- A8 10 pop {r4,r11,lr} ; opsize 32
+ ED 1C pop {r2,r3,r4,lr} ; opsize 16
+ FF end
FF end
-32 (-41.03%) : 436.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (FullOpts)
@@ -2,64 +2,50 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; FullOpts code
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) int -> r4 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) int -> r0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> r1 single-def "CASTCLASS eval op1"
-; V03 tmp2 [V03,T03] ( 3, 1.25) int -> r2 "fgMakeTemp is creating a new local variable"
-; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> r0 class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> r1 single-def "argument with side effect"
+; V03 cse0 [V03,T02] ( 3, 3 ) int -> r4 "CSE - aggressive"
;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r11,lr}
- sub sp, 12
- add r11, sp, 16
- str r0, [r11-0x0C]
- mov r4, r0
- ;; size=16 bbWeight=1 PerfScore 5.00
-G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r4+0x20]
- ldr r0, [r0]
+ push {r2,r3,r4,lr}
+ str r0, [sp+0x04]
+ ;; size=4 bbWeight=1 PerfScore 2.00
+G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr r4, [r0+0x20]
+ ldr r0, [r4]
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[r0]
+ ; gcr arg pop 0
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
+ ; gcr arg pop 0
mov r1, r0
; gcrRegs +[r1]
- mov r0, r1
- cmp r0, 0
- beq SHORT G_M13946_IG05
- ;; size=34 bbWeight=1 PerfScore 13.00
-G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
- ldr r3, [r0]
- ldr r2, [r4+0x20]
- ldr r2, [r2]
- cmp r3, r2
- beq SHORT G_M13946_IG05
- ;; size=10 bbWeight=0.25 PerfScore 1.25
-G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
+ ldr r0, [r4]
; gcrRegs -[r0]
- mov r0, r2
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_CHKCASTANY
; gcrRegs -[r1] +[r0]
- ;; size=12 bbWeight=0.12 PerfScore 0.50
-G_M13946_IG05: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
- add sp, 12
- pop {r4,r11,pc}
- ;; size=6 bbWeight=1 PerfScore 2.00
+ ; gcr arg pop 0
+ ;; size=40 bbWeight=1 PerfScore 14.00
+G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
+ pop {r2,r3,r4,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 78, prolog size 14, PerfScore 21.75, instruction count 29, allocated bytes for code 78 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
+; Total bytes of code 46, prolog size 4, PerfScore 17.00, instruction count 17, allocated bytes for code 46 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -71,11 +57,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 39 (0x00027) Actual length = 78 (0x00004e)
+ Function Length : 23 (0x00017) Actual length = 46 (0x00002e)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- 03 add sp, sp, #12 ; opsize 16
- A8 10 pop {r4,r11,lr} ; opsize 32
+ ED 1C pop {r2,r3,r4,lr} ; opsize 16
+ FF end
FF end
-24 (-31.58%) : 976.dasm - BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.Canon]:Freeze():System.Canon:this (FullOpts)
@@ -2,28 +2,23 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; FullOpts code
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 8, 6.62) ref -> r4 this class-hnd single-def <BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]>
+; V00 this [V00,T00] ( 7, 6.50) ref -> r4 this class-hnd single-def <BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
-; V03 tmp2 [V03,T02] ( 3, 4.25) int -> r0 "fgMakeTemp is creating a new local variable"
-; V04 tmp3 [V04,T01] ( 3, 6 ) ref -> r0 class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M18858_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r11,lr}
- sub sp, 12
- add r11, sp, 16
- str r0, [r11-0x0C]
+ push {r2,r3,r4,lr}
+ str r0, [sp+0x04]
mov r4, r0
; gcrRegs +[r4]
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=6 bbWeight=1 PerfScore 3.00
G_M18858_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
mov r0, r4
; gcrRegs +[r0]
@@ -32,6 +27,7 @@ G_M18858_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
ldr r3, [r3]
blx r3 // BenchmarkDotNet.Characteristics.CharacteristicObject:AssertIsRoot():this
; gcrRegs -[r0]
+ ; gcr arg pop 0
ldrb r0, [r4+0x0C]
cmp r0, 0
bne SHORT G_M18858_IG04
@@ -40,37 +36,24 @@ G_M18858_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
movs r0, 1
strb r0, [r4+0x0C]
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M18858_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- mov r0, r4
- ; gcrRegs +[r0]
- ldr r1, [r0]
- ldr r0, [r0]
- ; gcrRegs -[r0]
+G_M18858_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ ldr r0, [r4]
ldr r0, [r0+0x24]
ldr r0, [r0]
ldr r0, [r0]
- cmp r1, r0
- beq SHORT G_M18858_IG06
- ;; size=16 bbWeight=1 PerfScore 8.00
-G_M18858_IG05: ; bbWeight=0.12, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
mov r1, r4
; gcrRegs +[r1]
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_CHKCASTANY
; gcrRegs -[r1] +[r0]
- ;; size=12 bbWeight=0.12 PerfScore 0.50
-G_M18858_IG06: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r0]
- mov r0, r4
- ; gcrRegs +[r0]
+ ; gcr arg pop 0
+ ;; size=20 bbWeight=1 PerfScore 8.00
+G_M18858_IG05: ; bbWeight=1, epilog, nogc, extend
+ pop {r2,r3,r4,pc}
;; size=2 bbWeight=1 PerfScore 1.00
-G_M18858_IG07: ; bbWeight=1, epilog, nogc, extend
- add sp, 12
- pop {r4,r11,pc}
- ;; size=6 bbWeight=1 PerfScore 2.00
-; Total bytes of code 76, prolog size 14, PerfScore 25.50, instruction count 30, allocated bytes for code 76 (MethodHash=830fb655) for method BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:Freeze():System.__Canon:this (FullOpts)
+; Total bytes of code 52, prolog size 4, PerfScore 21.00, instruction count 22, allocated bytes for code 52 (MethodHash=830fb655) for method BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:Freeze():System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
@@ -82,11 +65,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
+ Function Length : 26 (0x0001a) Actual length = 52 (0x000034)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- 03 add sp, sp, #12 ; opsize 16
- A8 10 pop {r4,r11,lr} ; opsize 32
+ ED 1C pop {r2,r3,r4,lr} ; opsize 16
+ FF end
FF end
+0 (0.00%) : 9716.dasm - FSharp.Compiler.NameResolution+TypeNameResolutionStaticArgsInfo:MangledNameForType(System.String):System.String:this (FullOpts)
@@ -8,36 +8,33 @@
; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 5, 4 ) ref -> r4 this class-hnd single-def <FSharp.Compiler.NameResolution+TypeNameResolutionStaticArgsInfo>
-; V01 arg1 [V01,T01] ( 5, 3.50) ref -> r5 class-hnd single-def <System.String>
+; V00 this [V00,T01] ( 4, 3.50) ref -> r5 this class-hnd single-def <FSharp.Compiler.NameResolution+TypeNameResolutionStaticArgsInfo>
+; V01 arg1 [V01,T00] ( 5, 3.50) ref -> r4 class-hnd single-def <System.String>
; V02 loc0 [V02 ] ( 2, 1 ) struct ( 8) [sp+0x08] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.FSharp.Core.FSharpValueOption`1[int]>
;* V03 loc1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref <Microsoft.FSharp.Core.FSharpValueOption`1[int]>
;* V04 loc2 [V04 ] ( 0, 0 ) int -> zero-ref single-def
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T09] ( 2, 1 ) int -> r0
+; V06 tmp1 [V06,T06] ( 2, 1 ) int -> r0
; V07 tmp2 [V07,T02] ( 4, 4 ) ref -> r0 class-hnd exact single-def "Single-def Box Helper" <Microsoft.FSharp.Core.FSharpValueOption`1[int]>
;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V09 tmp4 [V09,T11] ( 0, 0 ) ref -> zero-ref single-def
+;* V09 tmp4 [V09,T08] ( 0, 0 ) ref -> zero-ref single-def
;* V10 tmp5 [V10 ] ( 0, 0 ) ref -> zero-ref
;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref
-; V12 tmp7 [V12,T10] ( 2, 1 ) int -> r3
+; V12 tmp7 [V12,T07] ( 2, 1 ) int -> r3
; V13 tmp8 [V13 ] ( 2, 2 ) struct ( 4) [sp+0x04] do-not-enreg[XS] addr-exposed ld-addr-op class-hnd exact "Single-def Box Helper" <System.Int32>
;* V14 tmp9 [V14 ] ( 0, 0 ) ref -> zero-ref single-def
;* V15 tmp10 [V15 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V16 tmp11 [V16,T07] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V17 tmp12 [V17,T03] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-;* V18 tmp13 [V18,T08] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V19 tmp14 [V19,T04] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-;* V20 tmp15 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.FSharp.Core.FSharpValueOption`1[int]>
-; V21 tmp16 [V21 ] ( 2, 1 ) int -> [sp+0x08] do-not-enreg[X] addr-exposed "field V02.item (fldOffset=0x0)" P-DEP
-; V22 tmp17 [V22 ] ( 2, 1 ) int -> [sp+0x0C] do-not-enreg[X] addr-exposed "field V02._tag (fldOffset=0x4)" P-DEP
-;* V23 tmp18 [V23 ] ( 0, 0 ) int -> zero-ref single-def "field V03.item (fldOffset=0x0)" P-INDEP
-;* V24 tmp19 [V24 ] ( 0, 0 ) int -> zero-ref single-def "field V03._tag (fldOffset=0x4)" P-INDEP
-; V25 tmp20 [V25 ] ( 2, 1.50) int -> [sp+0x04] do-not-enreg[X] addr-exposed "field V13.m_value (fldOffset=0x0)" P-DEP
-;* V26 tmp21 [V26,T12] ( 0, 0 ) int -> zero-ref single-def "field V20.item (fldOffset=0x0)" P-INDEP
-;* V27 tmp22 [V27,T13] ( 0, 0 ) int -> zero-ref single-def "field V20._tag (fldOffset=0x4)" P-INDEP
-; V28 tmp23 [V28,T05] ( 2, 2 ) ref -> r2 single-def "argument with side effect"
-; V29 tmp24 [V29,T06] ( 2, 2 ) ref -> r2 single-def "argument with side effect"
+;* V16 tmp11 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.FSharp.Core.FSharpValueOption`1[int]>
+; V17 tmp12 [V17 ] ( 2, 1 ) int -> [sp+0x08] do-not-enreg[X] addr-exposed "field V02.item (fldOffset=0x0)" P-DEP
+; V18 tmp13 [V18 ] ( 2, 1 ) int -> [sp+0x0C] do-not-enreg[X] addr-exposed "field V02._tag (fldOffset=0x4)" P-DEP
+;* V19 tmp14 [V19 ] ( 0, 0 ) int -> zero-ref single-def "field V03.item (fldOffset=0x0)" P-INDEP
+;* V20 tmp15 [V20 ] ( 0, 0 ) int -> zero-ref single-def "field V03._tag (fldOffset=0x4)" P-INDEP
+; V21 tmp16 [V21 ] ( 2, 1.50) int -> [sp+0x04] do-not-enreg[X] addr-exposed "field V13.m_value (fldOffset=0x0)" P-DEP
+;* V22 tmp17 [V22,T09] ( 0, 0 ) int -> zero-ref single-def "field V16.item (fldOffset=0x0)" P-INDEP
+;* V23 tmp18 [V23,T10] ( 0, 0 ) int -> zero-ref single-def "field V16._tag (fldOffset=0x4)" P-INDEP
+; V24 tmp19 [V24,T03] ( 2, 2 ) ref -> r2 single-def "argument with side effect"
+; V25 tmp20 [V25,T04] ( 2, 2 ) ref -> r2 single-def "argument with side effect"
+; V26 cse0 [V26,T05] ( 3, 1.50) ref -> r5 "CSE - moderate"
;
; Lcl frame size = 16
@@ -48,13 +45,13 @@ G_M40596_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
movs r2, 0
str r2, [sp+0x08] // [V02 loc0]
str r2, [sp+0x0C] // [V02 loc0+0x04]
- mov r4, r0
- ; gcrRegs +[r4]
- mov r5, r1
+ mov r5, r0
; gcrRegs +[r5]
+ mov r4, r1
+ ; gcrRegs +[r4]
;; size=20 bbWeight=1 PerfScore 8.00
G_M40596_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- mov r1, r4
+ mov r1, r5
; gcrRegs +[r1]
movw r0, 0xd1ff
movt r0, 0xd1ff
@@ -67,11 +64,11 @@ G_M40596_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
;; size=24 bbWeight=1 PerfScore 8.00
G_M40596_IG03: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
- ldr r0, [r4+0x04]
+ ldr r0, [r5+0x04]
cmp r0, 0
beq SHORT G_M40596_IG05
add r0, sp, 8
- mov r1, r5
+ mov r1, r4
; gcrRegs +[r1]
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -105,9 +102,9 @@ G_M40596_IG04: ; bbWeight=0.50, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0000
cmp r0, 0
bne SHORT G_M40596_IG07
;; size=32 bbWeight=0.50 PerfScore 6.00
-G_M40596_IG05: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4]
- mov r0, r5
+G_M40596_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r5]
+ mov r0, r4
; gcrRegs +[r0]
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M40596_IG06: ; bbWeight=0.50, epilog, nogc, extend
@@ -115,14 +112,14 @@ G_M40596_IG06: ; bbWeight=0.50, epilog, nogc, extend
pop {r4,r5,r11,pc}
;; size=6 bbWeight=0.50 PerfScore 1.00
G_M40596_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r0] +[r4]
- ldr r3, [r4+0x04]
- str r3, [sp+0x04] // [V25 tmp20]
+ ; gcrRegs -[r0] +[r5]
+ ldr r3, [r5+0x04]
+ str r3, [sp+0x04] // [V21 tmp16]
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
- ; gcrRegs -[r4] +[r0]
+ ; gcrRegs -[r5] +[r0]
mov r2, r0
; gcrRegs +[r2]
add r0, sp, 4 // [V13 tmp8]
@@ -137,12 +134,12 @@ G_M40596_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5
; gcrRegs +[r2]
movw r1, 0xd1ff
movt r1, 0xd1ff
- mov r0, r5
+ mov r0, r4
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
- ; gcrRegs -[r2 r5]
+ ; gcrRegs -[r2 r4]
;; size=58 bbWeight=0.50 PerfScore 10.50
G_M40596_IG08: ; bbWeight=0.50, epilog, nogc, extend
add sp, 16
+2 (+0.24%) : 29892.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitAwaitableInfo(Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
@@ -5,116 +5,127 @@
; r11 based frame
; partially interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 31 single block inlinees; 20 inlinees without PGO data
+; 0 inlinees with PGO data; 34 single block inlinees; 19 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 36, 23 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.NullableWalker>
-; V01 arg1 [V01,T07] ( 4, 4 ) ref -> r5 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo>
+; V00 this [V00,T00] ( 32, 21 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.NullableWalker>
+; V01 arg1 [V01,T08] ( 4, 4 ) ref -> r5 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 10, 12 ) ref -> r6 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.BoundAwaitableValuePlaceholder>
-; V04 tmp2 [V04,T18] ( 2, 2 ) ubyte -> r7 "Inline stloc first use temp"
+; V04 tmp2 [V04,T19] ( 2, 2 ) ubyte -> r7 "Inline stloc first use temp"
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.BoundNode>
-; V06 tmp4 [V06,T08] ( 4, 6 ) ref -> r8 class-hnd exact single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.NullableWalker+SnapshotManager+Builder>
+; V06 tmp4 [V06,T09] ( 4, 6 ) ref -> r8 class-hnd exact single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.NullableWalker+SnapshotManager+Builder>
;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref single-def
-; V08 tmp6 [V08,T16] ( 2, 2 ) ref -> [sp+0x10] class-hnd spill-single-def "impAppendStmt" <System.Collections.Generic.SortedDictionary`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]>
+; V08 tmp6 [V08,T17] ( 2, 2 ) ref -> [sp+0x14] class-hnd spill-single-def "impAppendStmt" <System.Collections.Generic.SortedDictionary`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]>
;* V09 tmp7 [V09 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] ld-addr-op double-align "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState>
-; V10 tmp8 [V10,T19] ( 2, 2 ) int -> r10 "impAppendStmt"
+; V10 tmp8 [V10,T20] ( 2, 2 ) int -> r10 "impAppendStmt"
;* V11 tmp9 [V11 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot>
;* V12 tmp10 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <<unknown class>>
;* V13 tmp11 [V13 ] ( 0, 0 ) int -> zero-ref
;* V14 tmp12 [V14 ] ( 0, 0 ) ref -> zero-ref single-def
;* V15 tmp13 [V15 ] ( 0, 0 ) int -> zero-ref
-; V16 tmp14 [V16,T24] ( 3, 1.50) ref -> r9
+; V16 tmp14 [V16,T25] ( 3, 1.50) ref -> r9
; V17 tmp15 [V17,T03] ( 7, 7 ) ref -> r2 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalStateSnapshot>
;* V18 tmp16 [V18 ] ( 0, 0 ) struct (16) zero-ref double-align "spilled call-like call argument" <Microsoft.CodeAnalysis.BitVector>
;* V19 tmp17 [V19 ] ( 0, 0 ) struct (16) zero-ref double-align "Inline return value spill temp" <Microsoft.CodeAnalysis.BitVector>
-; V20 tmp18 [V20,T25] ( 3, 1.50) ref -> r3 class-hnd "Inline stloc first use temp" <ulong[]>
+; V20 tmp18 [V20,T26] ( 3, 1.50) ref -> r3 class-hnd "Inline stloc first use temp" <ulong[]>
;* V21 tmp19 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op double-align "NewObj constructor temp" <Microsoft.CodeAnalysis.BitVector>
;* V22 tmp20 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <ulong[]>
;* V23 tmp21 [V23 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V24 tmp22 [V24 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V25 tmp23 [V25 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V26 tmp24 [V26,T20] ( 2, 2 ) int -> r3 "Inlining Arg"
+; V26 tmp24 [V26,T21] ( 2, 2 ) int -> r3 "Inlining Arg"
;* V27 tmp25 [V27 ] ( 0, 0 ) ref -> zero-ref single-def
;* V28 tmp26 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.BoundNode>
;* V29 tmp27 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.BoundAwaitableValuePlaceholder>
;* V30 tmp28 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
; V31 tmp29 [V31,T04] ( 7, 7 ) byref -> r8 single-def "Inlining Arg"
;* V32 tmp30 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
-;* V33 tmp31 [V33 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
-;* V34 tmp32 [V34 ] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V35 tmp33 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
-;* V36 tmp34 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.BoundNode>
-;* V37 tmp35 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.BoundNode>
-; V38 tmp36 [V38,T02] ( 8, 10 ) ref -> r5 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
-; V39 tmp37 [V39,T21] ( 2, 2 ) ubyte -> r6 "Inline stloc first use temp"
-;* V40 tmp38 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.BoundNode>
-; V41 tmp39 [V41,T09] ( 4, 6 ) ref -> r7 class-hnd exact single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.NullableWalker+SnapshotManager+Builder>
-;* V42 tmp40 [V42 ] ( 0, 0 ) ref -> zero-ref single-def
-; V43 tmp41 [V43,T17] ( 2, 2 ) ref -> r8 class-hnd single-def "impAppendStmt" <System.Collections.Generic.SortedDictionary`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]>
-; V44 tmp42 [V44 ] ( 4, 4 ) struct (24) [sp+0x40] do-not-enreg[XSF] must-init addr-exposed ld-addr-op double-align "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState>
-; V45 tmp43 [V45,T22] ( 2, 2 ) int -> r9 "impAppendStmt"
-;* V46 tmp44 [V46 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot>
-; V47 tmp45 [V47,T10] ( 3, 3 ) ref -> r0 class-hnd exact single-def "dup spill" <<unknown class>>
-; V48 tmp46 [V48,T34] ( 2, 1 ) int -> r10
-;* V49 tmp47 [V49 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V50 tmp48 [V50 ] ( 0, 0 ) int -> zero-ref
-; V51 tmp49 [V51,T26] ( 3, 1.50) ref -> [sp+0x0C]
-; V52 tmp50 [V52,T05] ( 7, 7 ) ref -> [sp+0x08] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalStateSnapshot>
-; V53 tmp51 [V53 ] ( 5, 5 ) struct (16) [sp+0x30] do-not-enreg[HS] must-init hidden-struct-arg double-align "spilled call-like call argument" <Microsoft.CodeAnalysis.BitVector>
-; V54 tmp52 [V54,T23] ( 2, 2 ) int -> r3 "Inlining Arg"
-;* V55 tmp53 [V55 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V56 tmp54 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.BoundNode>
-;* V57 tmp55 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
-;* V58 tmp56 [V58 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.BoundNode>
-; V59 tmp57 [V59,T31] ( 2, 1 ) ref -> r2 single-def "field V11.VariableState (fldOffset=0x0)" P-INDEP
-; V60 tmp58 [V60,T35] ( 2, 1 ) int -> r3 "field V11.SharedStateIndex (fldOffset=0x4)" P-INDEP
-;* V61 tmp59 [V61 ] ( 0, 0 ) long -> zero-ref "field V18._bits0 (fldOffset=0x0)" P-INDEP
-;* V62 tmp60 [V62 ] ( 0, 0 ) ref -> zero-ref single-def "field V18._bits (fldOffset=0x8)" P-INDEP
-;* V63 tmp61 [V63 ] ( 0, 0 ) int -> zero-ref "field V18._capacity (fldOffset=0xc)" P-INDEP
-;* V64 tmp62 [V64 ] ( 0, 0 ) long -> zero-ref "field V19._bits0 (fldOffset=0x0)" P-INDEP
-;* V65 tmp63 [V65 ] ( 0, 0 ) ref -> zero-ref single-def "field V19._bits (fldOffset=0x8)" P-INDEP
-;* V66 tmp64 [V66 ] ( 0, 0 ) int -> zero-ref "field V19._capacity (fldOffset=0xc)" P-INDEP
-; V67 tmp65 [V67,T28] ( 3, 1.50) long -> [sp+0x28] do-not-enreg[F] "field V21._bits0 (fldOffset=0x0)" P-INDEP
-; V68 tmp66 [V68,T32] ( 2, 1 ) ref -> [sp+0x04] spill-single-def "field V21._bits (fldOffset=0x8)" P-INDEP
-; V69 tmp67 [V69,T36] ( 2, 1 ) int -> [sp+0x24] spill-single-def "field V21._capacity (fldOffset=0xc)" P-INDEP
-; V70 tmp68 [V70,T33] ( 2, 1 ) ref -> r2 single-def "field V46.VariableState (fldOffset=0x0)" P-INDEP
-; V71 tmp69 [V71,T37] ( 2, 1 ) int -> r3 "field V46.SharedStateIndex (fldOffset=0x4)" P-INDEP
-; V72 tmp70 [V72,T15] ( 3, 2 ) long -> [sp+0x30] do-not-enreg[H] hidden-struct-arg "field V53._bits0 (fldOffset=0x0)" P-DEP
-; V73 tmp71 [V73,T29] ( 2, 1.50) ref -> [sp+0x38] do-not-enreg[H] hidden-struct-arg "field V53._bits (fldOffset=0x8)" P-DEP
-; V74 tmp72 [V74,T30] ( 2, 1.50) int -> [sp+0x3C] do-not-enreg[H] hidden-struct-arg "field V53._capacity (fldOffset=0xc)" P-DEP
-; V75 tmp73 [V75,T27] ( 3, 1.50) ref -> r9 single-def "V09.[000..004)"
-; V76 tmp74 [V76,T38] ( 2, 1 ) int -> [sp+0x20] spill-single-def "V09.[004..008)"
-;* V77 tmp75 [V77 ] ( 0, 0 ) long -> zero-ref "V09.[008..016)"
-; V78 tmp76 [V78,T14] ( 4, 2 ) ref -> [sp+0x00] spill-single-def "V09.[016..020)"
-; V79 tmp77 [V79,T39] ( 2, 1 ) int -> [sp+0x1C] spill-single-def "V09.[020..024)"
-; V80 tmp78 [V80,T06] ( 6, 6 ) byref -> r0 single-def "Spilling address for field-by-field copy"
-;* V81 rat0 [V81 ] ( 0, 0 ) int -> zero-ref "field V24.lo (fldOffset=0x0)" P-INDEP
-;* V82 rat1 [V82 ] ( 0, 0 ) int -> zero-ref "field V24.hi (fldOffset=0x4)" P-INDEP
-; V83 rat2 [V83,T40] ( 2, 1 ) int -> [sp+0x18] spill-single-def "field V77.lo (fldOffset=0x0)" P-INDEP
-; V84 rat3 [V84,T41] ( 2, 1 ) int -> [sp+0x14] spill-single-def "field V77.hi (fldOffset=0x4)" P-INDEP
-; V85 rat4 [V85,T11] ( 3, 3 ) byref -> r3 "ReplaceWithLclVar is creating a new local variable"
-; V86 rat5 [V86,T12] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable"
-; V87 rat6 [V87,T13] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable"
+;* V33 tmp31 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.BoundNode>
+;* V34 tmp32 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.BoundNode>
+; V35 tmp33 [V35,T02] ( 8, 10 ) ref -> r5 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+; V36 tmp34 [V36,T22] ( 2, 2 ) ubyte -> r6 "Inline stloc first use temp"
+;* V37 tmp35 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.BoundNode>
+; V38 tmp36 [V38,T10] ( 4, 6 ) ref -> r7 class-hnd exact single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.NullableWalker+SnapshotManager+Builder>
+;* V39 tmp37 [V39 ] ( 0, 0 ) ref -> zero-ref single-def
+; V40 tmp38 [V40,T18] ( 2, 2 ) ref -> [sp+0x10] class-hnd spill-single-def "impAppendStmt" <System.Collections.Generic.SortedDictionary`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]>
+;* V41 tmp39 [V41 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] ld-addr-op double-align "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState>
+; V42 tmp40 [V42,T23] ( 2, 2 ) int -> r9 "impAppendStmt"
+;* V43 tmp41 [V43 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot>
+;* V44 tmp42 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <<unknown class>>
+;* V45 tmp43 [V45 ] ( 0, 0 ) int -> zero-ref
+;* V46 tmp44 [V46 ] ( 0, 0 ) ref -> zero-ref single-def
+;* V47 tmp45 [V47 ] ( 0, 0 ) int -> zero-ref
+; V48 tmp46 [V48,T27] ( 3, 1.50) ref -> r8
+; V49 tmp47 [V49,T05] ( 7, 7 ) ref -> r2 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalStateSnapshot>
+;* V50 tmp48 [V50 ] ( 0, 0 ) struct (16) zero-ref double-align "spilled call-like call argument" <Microsoft.CodeAnalysis.BitVector>
+;* V51 tmp49 [V51 ] ( 0, 0 ) struct (16) zero-ref double-align "Inline return value spill temp" <Microsoft.CodeAnalysis.BitVector>
+; V52 tmp50 [V52,T28] ( 3, 1.50) ref -> r3 class-hnd "Inline stloc first use temp" <ulong[]>
+;* V53 tmp51 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op double-align "NewObj constructor temp" <Microsoft.CodeAnalysis.BitVector>
+;* V54 tmp52 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <ulong[]>
+;* V55 tmp53 [V55 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V56 tmp54 [V56 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V57 tmp55 [V57 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+; V58 tmp56 [V58,T24] ( 2, 2 ) int -> r3 "Inlining Arg"
+;* V59 tmp57 [V59 ] ( 0, 0 ) ref -> zero-ref single-def
+; V60 tmp58 [V60,T33] ( 2, 1 ) ref -> r2 single-def "field V11.VariableState (fldOffset=0x0)" P-INDEP
+; V61 tmp59 [V61,T37] ( 2, 1 ) int -> r3 "field V11.SharedStateIndex (fldOffset=0x4)" P-INDEP
+;* V62 tmp60 [V62 ] ( 0, 0 ) long -> zero-ref "field V18._bits0 (fldOffset=0x0)" P-INDEP
+;* V63 tmp61 [V63 ] ( 0, 0 ) ref -> zero-ref single-def "field V18._bits (fldOffset=0x8)" P-INDEP
+;* V64 tmp62 [V64 ] ( 0, 0 ) int -> zero-ref "field V18._capacity (fldOffset=0xc)" P-INDEP
+;* V65 tmp63 [V65 ] ( 0, 0 ) long -> zero-ref "field V19._bits0 (fldOffset=0x0)" P-INDEP
+;* V66 tmp64 [V66 ] ( 0, 0 ) ref -> zero-ref single-def "field V19._bits (fldOffset=0x8)" P-INDEP
+;* V67 tmp65 [V67 ] ( 0, 0 ) int -> zero-ref "field V19._capacity (fldOffset=0xc)" P-INDEP
+; V68 tmp66 [V68,T31] ( 3, 1.50) long -> [sp+0x48] do-not-enreg[F] "field V21._bits0 (fldOffset=0x0)" P-INDEP
+; V69 tmp67 [V69,T34] ( 2, 1 ) ref -> [sp+0x0C] spill-single-def "field V21._bits (fldOffset=0x8)" P-INDEP
+; V70 tmp68 [V70,T38] ( 2, 1 ) int -> [sp+0x44] spill-single-def "field V21._capacity (fldOffset=0xc)" P-INDEP
+; V71 tmp69 [V71,T35] ( 2, 1 ) ref -> r2 single-def "field V43.VariableState (fldOffset=0x0)" P-INDEP
+; V72 tmp70 [V72,T39] ( 2, 1 ) int -> r3 "field V43.SharedStateIndex (fldOffset=0x4)" P-INDEP
+;* V73 tmp71 [V73 ] ( 0, 0 ) long -> zero-ref "field V50._bits0 (fldOffset=0x0)" P-INDEP
+;* V74 tmp72 [V74 ] ( 0, 0 ) ref -> zero-ref single-def "field V50._bits (fldOffset=0x8)" P-INDEP
+;* V75 tmp73 [V75 ] ( 0, 0 ) int -> zero-ref "field V50._capacity (fldOffset=0xc)" P-INDEP
+;* V76 tmp74 [V76 ] ( 0, 0 ) long -> zero-ref "field V51._bits0 (fldOffset=0x0)" P-INDEP
+;* V77 tmp75 [V77 ] ( 0, 0 ) ref -> zero-ref single-def "field V51._bits (fldOffset=0x8)" P-INDEP
+;* V78 tmp76 [V78 ] ( 0, 0 ) int -> zero-ref "field V51._capacity (fldOffset=0xc)" P-INDEP
+; V79 tmp77 [V79,T32] ( 3, 1.50) long -> [sp+0x38] do-not-enreg[F] "field V53._bits0 (fldOffset=0x0)" P-INDEP
+; V80 tmp78 [V80,T36] ( 2, 1 ) ref -> r10 single-def "field V53._bits (fldOffset=0x8)" P-INDEP
+; V81 tmp79 [V81,T40] ( 2, 1 ) int -> [sp+0x34] spill-single-def "field V53._capacity (fldOffset=0xc)" P-INDEP
+; V82 tmp80 [V82,T29] ( 3, 1.50) ref -> r9 single-def "V09.[000..004)"
+; V83 tmp81 [V83,T41] ( 2, 1 ) int -> [sp+0x30] spill-single-def "V09.[004..008)"
+;* V84 tmp82 [V84 ] ( 0, 0 ) long -> zero-ref "V09.[008..016)"
+; V85 tmp83 [V85,T15] ( 4, 2 ) ref -> [sp+0x08] spill-single-def "V09.[016..020)"
+; V86 tmp84 [V86,T42] ( 2, 1 ) int -> [sp+0x2C] spill-single-def "V09.[020..024)"
+; V87 tmp85 [V87,T30] ( 3, 1.50) ref -> r8 single-def "V41.[000..004)"
+; V88 tmp86 [V88,T43] ( 2, 1 ) int -> [sp+0x28] spill-single-def "V41.[004..008)"
+;* V89 tmp87 [V89 ] ( 0, 0 ) long -> zero-ref "V41.[008..016)"
+; V90 tmp88 [V90,T16] ( 4, 2 ) ref -> [sp+0x04] spill-single-def "V41.[016..020)"
+; V91 tmp89 [V91,T44] ( 2, 1 ) int -> [sp+0x24] spill-single-def "V41.[020..024)"
+; V92 tmp90 [V92,T06] ( 6, 6 ) byref -> r0 single-def "Spilling address for field-by-field copy"
+; V93 tmp91 [V93,T07] ( 6, 6 ) byref -> r0 single-def "Spilling address for field-by-field copy"
+;* V94 rat0 [V94 ] ( 0, 0 ) int -> zero-ref "field V24.lo (fldOffset=0x0)" P-INDEP
+;* V95 rat1 [V95 ] ( 0, 0 ) int -> zero-ref "field V24.hi (fldOffset=0x4)" P-INDEP
+;* V96 rat2 [V96 ] ( 0, 0 ) int -> zero-ref "field V56.lo (fldOffset=0x0)" P-INDEP
+;* V97 rat3 [V97 ] ( 0, 0 ) int -> zero-ref "field V56.hi (fldOffset=0x4)" P-INDEP
+; V98 rat4 [V98,T45] ( 2, 1 ) int -> [sp+0x20] spill-single-def "field V84.lo (fldOffset=0x0)" P-INDEP
+; V99 rat5 [V99,T46] ( 2, 1 ) int -> [sp+0x1C] spill-single-def "field V84.hi (fldOffset=0x4)" P-INDEP
+; V100 rat6 [V100,T47] ( 2, 1 ) int -> r10 "field V89.lo (fldOffset=0x0)" P-INDEP
+; V101 rat7 [V101,T48] ( 2, 1 ) int -> [sp+0x18] spill-single-def "field V89.hi (fldOffset=0x4)" P-INDEP
+; V102 rat8 [V102,T11] ( 3, 3 ) byref -> r3 "ReplaceWithLclVar is creating a new local variable"
+; V103 rat9 [V103,T12] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable"
+; V104 rat10 [V104,T13] ( 3, 3 ) byref -> r3 "ReplaceWithLclVar is creating a new local variable"
+; V105 rat11 [V105,T14] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 92
+; Lcl frame size = 84
G_M16287_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 92
- add r11, sp, 120
- sub r4, r11, 72
- movs r5, 5
- movs r2, 0
- movs r3, 0
- stm r4!, {r2,r3}
- subs r5, 1
- bhi SHORT pc-6 (-3 instructions)
+ sub sp, 84
+ add r11, sp, 112
mov r4, r0
; gcrRegs +[r4]
mov r5, r1
; gcrRegs +[r5]
- ;; size=30 bbWeight=1 PerfScore 12.00
+ ;; size=14 bbWeight=1 PerfScore 5.00
G_M16287_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
ldr r6, [r5+0x0C]
; gcrRegs +[r6]
@@ -132,20 +143,20 @@ G_M16287_IG03: ; bbWeight=0.50, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0
ldr r9, [r0]
; gcrRegs +[r9]
ldr r10, [r0+0x04]
- str r10, [sp+0x20] // [V76 tmp74]
+ str r10, [sp+0x30] // [V83 tmp81]
add r3, r0, 8
; byrRegs +[r3]
ldr r2, [r3]
ldr r3, [r3+0x04]
; byrRegs -[r3]
- str r2, [sp+0x18] // [V83 rat2]
- str r3, [sp+0x14] // [V84 rat3]
+ str r2, [sp+0x20] // [V98 rat4]
+ str r3, [sp+0x1C] // [V99 rat5]
ldr r1, [r0+0x10]
; gcrRegs +[r1]
- str r1, [sp] // [V78 tmp76]
- ; GC ptr vars +{V78}
+ str r1, [sp+0x08] // [V85 tmp83]
+ ; GC ptr vars +{V85}
ldr lr, [r0+0x14]
- str lr, [sp+0x1C] // [V79 tmp77]
+ str lr, [sp+0x2C] // [V86 tmp84]
cmp r6, 0
beq SHORT G_M16287_IG09
ldrsh r0, [r6+0x08]
@@ -155,7 +166,7 @@ G_M16287_IG03: ; bbWeight=0.50, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0
bne SHORT G_M16287_IG09
ldr r12, [r8+0x0C]
; gcrRegs +[r12]
- str r12, [sp+0x10] // [V08 tmp6]
+ str r12, [sp+0x14] // [V08 tmp6]
; GC ptr vars +{V08}
ldr r0, [r6+0x04]
; gcrRegs +[r0]
@@ -187,7 +198,7 @@ G_M16287_IG04: ; bbWeight=0.50, gcrefRegs=0370 {r4 r5 r6 r8 r9}, byrefReg
;; size=18 bbWeight=0.50 PerfScore 3.00
G_M16287_IG05: ; bbWeight=0.50, gcrefRegs=0370 {r4 r5 r6 r8 r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
- ldr r1, [sp] // [V78 tmp76]
+ ldr r1, [sp+0x08] // [V85 tmp83]
; gcrRegs +[r1]
cmp r1, 0
beq SHORT G_M16287_IG06
@@ -195,24 +206,24 @@ G_M16287_IG05: ; bbWeight=0.50, gcrefRegs=0370 {r4 r5 r6 r8 r9}, byrefReg
...
+10 (+2.60%) : 37055.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.Canon]:<.cctor>b4_0(System.Object):this (FullOpts)
@@ -8,33 +8,33 @@
; Final local variable assignments
;
; V00 this [V00,T07] ( 3, 3 ) ref -> [sp+0x08] this class-hnd EH-live single-def <System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]>
-; V01 arg1 [V01,T00] ( 6, 5.50) ref -> r4 class-hnd single-def <System.Object>
-; V02 loc0 [V02,T01] ( 9, 6 ) ref -> [sp+0x04] do-not-enreg[M] class-hnd exact EH-live <<unknown class>>
-; V03 loc1 [V03,T11] ( 4, 4 ) ref -> r7 class-hnd single-def <<unknown class>>
+; V01 arg1 [V01,T01] ( 4, 4 ) ref -> r4 class-hnd single-def <System.Object>
+; V02 loc0 [V02,T00] ( 10, 6 ) ref -> [sp+0x04] class-hnd exact EH-live single-def <<unknown class>>
+; V03 loc1 [V03,T11] ( 4, 4 ) ref -> r9 class-hnd single-def <<unknown class>>
; V04 loc2 [V04,T17] ( 2, 1 ) int -> [sp+0x10] do-not-enreg[Z] EH-live
;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
; V06 loc4 [V06,T19] ( 4, 0 ) ref -> r4 class-hnd single-def <<unknown class>>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T16] ( 2, 3 ) int -> r1 "spilling helperCall"
-;* V09 tmp2 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V08 tmp1 [V08 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
+;* V09 tmp2 [V09 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
;* V10 tmp3 [V10 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-;* V11 tmp4 [V11 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V12 tmp5 [V12,T02] ( 4, 6 ) int -> r4 "VirtualCall with runtime lookup"
-;* V13 tmp6 [V13 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V14 tmp7 [V14,T03] ( 4, 6 ) int -> r4 "VirtualCall with runtime lookup"
-; V15 tmp8 [V15,T20] ( 3, 0 ) ref -> r1 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-; V16 tmp9 [V16 ] ( 2, 0 ) struct ( 4) [sp+0x0C] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Threading.CancellationToken>
-;* V17 tmp10 [V17 ] ( 0, 0 ) struct ( 4) zero-ref single-def "spilled call-like call argument" <System.Threading.CancellationToken>
-; V18 tmp11 [V18 ] ( 2, 0 ) ref -> [sp+0x0C] do-not-enreg[X] addr-exposed "field V16._source (fldOffset=0x0)" P-DEP
-; V19 tmp12 [V19,T21] ( 2, 0 ) ref -> r1 "field V17._source (fldOffset=0x0)" P-INDEP
+; V11 tmp4 [V11,T02] ( 4, 6 ) int -> r4 "VirtualCall with runtime lookup"
+;* V12 tmp5 [V12 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
+; V13 tmp6 [V13,T03] ( 4, 6 ) int -> r4 "VirtualCall with runtime lookup"
+; V14 tmp7 [V14,T20] ( 3, 0 ) ref -> r1 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+; V15 tmp8 [V15 ] ( 2, 0 ) struct ( 4) [sp+0x0C] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Threading.CancellationToken>
+;* V16 tmp9 [V16 ] ( 0, 0 ) struct ( 4) zero-ref single-def "spilled call-like call argument" <System.Threading.CancellationToken>
+; V17 tmp10 [V17 ] ( 2, 0 ) ref -> [sp+0x0C] do-not-enreg[X] addr-exposed "field V15._source (fldOffset=0x0)" P-DEP
+; V18 tmp11 [V18,T21] ( 2, 0 ) ref -> r1 "field V16._source (fldOffset=0x0)" P-INDEP
+; V19 tmp12 [V19,T14] ( 2, 4 ) int -> r0 "argument with side effect"
; V20 tmp13 [V20,T13] ( 2, 4 ) ref -> r1 single-def "argument with side effect"
-; V21 tmp14 [V21,T14] ( 2, 4 ) int -> r0 "argument with side effect"
+; V21 tmp14 [V21,T15] ( 2, 4 ) int -> r0 "argument with side effect"
; V22 PSPSym [V22,T18] ( 1, 1 ) int -> [sp+0x1C] do-not-enreg[V] "PSPSym"
-; V23 cse0 [V23,T15] ( 3, 3 ) int -> r0 "CSE - aggressive"
+; V23 cse0 [V23,T16] ( 3, 3 ) int -> r7 "CSE - aggressive"
; V24 cse1 [V24,T08] ( 6, 4.56) int -> r6 "CSE - aggressive"
; V25 rat0 [V25,T10] ( 3, 4.40) int -> r0 "Spilling to split statement for tree"
-; V26 rat1 [V26,T12] ( 3, 4 ) int -> r3 "runtime lookup"
-; V27 rat2 [V27,T04] ( 3, 5.60) int -> r3 "fgMakeTemp is creating a new local variable"
+; V26 rat1 [V26,T12] ( 3, 4 ) int -> r7 "runtime lookup"
+; V27 rat2 [V27,T04] ( 3, 5.60) int -> r7 "fgMakeTemp is creating a new local variable"
; V28 rat3 [V28,T05] ( 3, 5.60) int -> r4 "fgMakeTemp is creating a new local variable"
; V29 rat4 [V29,T06] ( 3, 5.60) int -> r0 "spilling expr"
; V30 rat5 [V30,T09] ( 3, 4.48) int -> r4 "fgMakeTemp is creating a new local variable"
@@ -42,14 +42,14 @@
; Lcl frame size = 32
G_M57110_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r11,lr}
+ push {r4,r5,r6,r7,r8,r9,r11,lr}
sub sp, 32
- add r11, sp, 48
+ add r11, sp, 56
movs r2, 0
- str r2, [sp+0x0C] // [V16 tmp9]
- add r2, sp, 56
+ str r2, [sp+0x0C] // [V15 tmp8]
+ add r2, sp, 64
str r2, [sp+0x1C] // [V22 PSPSym]
- str r0, [r11-0x1C]
+ str r0, [r11-0x24]
str r0, [sp+0x08] // [V00 this]
; GC ptr vars +{V00}
mov r5, r0
@@ -62,8 +62,8 @@ G_M57110_IG02: ; bbWeight=1, gcVars=00000080 {V00}, gcrefRegs=0030 {r4 r5
mov r0, r6
ldr r1, [r0+0x24]
ldr r1, [r1]
- ldr r3, [r1+0x08]
- cmp r3, 0
+ ldr r7, [r1+0x08]
+ cmp r7, 0
beq SHORT G_M57110_IG04
;; size=14 bbWeight=1 PerfScore 7.00
G_M57110_IG03: ; bbWeight=0.80, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
@@ -76,32 +76,32 @@ G_M57110_IG04: ; bbWeight=0.20, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
- mov r3, r0
+ mov r7, r0
;; size=20 bbWeight=0.20 PerfScore 1.20
G_M57110_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- mov r0, r3
- mov r1, r0
- str r4, [sp+0x04] // [V02 loc0]
- ; GC ptr vars +{V02}
- cmp r4, 0
- beq SHORT G_M57110_IG08
- ;; size=10 bbWeight=1 PerfScore 5.00
-G_M57110_IG06: ; bbWeight=0.50, gcVars=00000082 {V00 V02}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
- ldr r3, [r4]
- cmp r3, r1
- bne SHORT G_M57110_IG08
- ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M57110_IG07: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- ldr r1, [sp+0x04] // [V02 loc0]
+ mov r0, r7
+ mov r1, r4
; gcrRegs +[r1]
- ldr r7, [r1+0x24]
- ; gcrRegs +[r7]
- cmp r7, 0
- bne SHORT G_M57110_IG10
- ;; size=8 bbWeight=1 PerfScore 4.00
-G_M57110_IG08: ; bbWeight=1, gcVars=00000080 {V00}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r1 r7]
- ; GC ptr vars -{V02}
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs -[r1] +[r0]
+ ; gcr arg pop 0
+ mov r8, r0
+ ; gcrRegs +[r8]
+ str r8, [sp+0x04]
+ ; GC ptr vars +{V02}
+ cmp r8, 0
+ beq SHORT G_M57110_IG06
+ ldr r9, [r8+0x24]
+ ; gcrRegs +[r9]
+ cmp r9, 0
+ bne SHORT G_M57110_IG08
+ ;; size=36 bbWeight=1 PerfScore 12.00
+G_M57110_IG06: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r0 r8-r9]
+ ; GC ptr vars -{V00 V02}
+ mov r0, r7
mov r1, r4
; gcrRegs +[r1]
movw r3, 0xd1ff
@@ -110,29 +110,26 @@ G_M57110_IG08: ; bbWeight=1, gcVars=00000080 {V00}, gcrefRegs=0030 {r4 r5
blx r3 // <unknown method>
; gcrRegs -[r1 r4]
; gcr arg pop 0
- ;; size=14 bbWeight=1 PerfScore 5.00
-G_M57110_IG09: ; bbWeight=1, epilog, nogc, extend
+ ;; size=16 bbWeight=1 PerfScore 6.00
+G_M57110_IG07: ; bbWeight=1, epilog, nogc, extend
add sp, 32
- pop {r4,r5,r6,r7,r11,pc}
+ pop {r4,r5,r6,r7,r8,r9,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00
-G_M57110_IG10: ; bbWeight=1, gcVars=00000082 {V00 V02}, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[r7]
- ; GC ptr vars +{V01 V02}
- ldr r0, [sp+0x04] // [V02 loc0]
- ; gcrRegs +[r0]
- movs r1, 0
- str r1, [r0+0x24]
+G_M57110_IG08: ; bbWeight=1, gcVars=00000081 {V00 V02}, gcrefRegs=0320 {r5 r8 r9}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[r8-r9]
+ ; GC ptr vars +{V00 V02}
+ movs r0, 0
+ str r0, [r8+0x24]
ldr r0, [r6+0x24]
- ; gcrRegs -[r0]
ldr r0, [r0]
ldr r4, [r0+0x0C]
cmp r4, 0
- beq SHORT G_M57110_IG12
- ;; size=16 bbWeight=1 PerfScore 8.00
-G_M57110_IG11: ; bbWeight=0.80, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M57110_IG13
+ beq SHORT G_M57110_IG10
+ ;; size=16 bbWeight=1 PerfScore 7.00
+G_M57110_IG09: ; bbWeight=0.80, gcrefRegs=0320 {r5 r8 r9}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M57110_IG11
;; size=2 bbWeight=0.80 PerfScore 0.80
-G_M57110_IG12: ; bbWeight=0.20, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref
+G_M57110_IG10: ; bbWeight=0.20, gcrefRegs=0320 {r5 r8 r9}, byrefRegs=0000 {}, byref
mov r0, r6
movw r1, 0xd1ff
movt r1, 0xd1ff
@@ -142,35 +139,32 @@ G_M57110_IG12: ; bbWeight=0.20, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}
; gcr arg pop 0
mov r4, r0
;; size=22 bbWeight=0.20 PerfScore 1.40
-G_M57110_IG13: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref
- ldr r1, [sp+0x04] // [V02 loc0]
- ; gcrRegs +[r1]
- ldrsh r1, [r1+0x28]
- ; gcrRegs -[r1]
- mov r0, r7
+G_M57110_IG11: ; bbWeight=1, gcrefRegs=0320 {r5 r8 r9}, byrefRegs=0000 {}, byref
+ ldrsh r1, [r8+0x28]
+ mov r0, r9
; gcrRegs +[r0]
ldr r3, [r4]
blx r3
; gcrRegs -[r0]
; gcr arg pop 0
str r0, [sp+0x10] // [V04 loc2]
- ;; size=14 bbWeight=1 PerfScore 6.00
-G_M57110_IG14: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
+ ;; size=12 bbWeight=1 PerfScore 5.00
+G_M57110_IG12: ; bbWeight=1, gcrefRegs=0320 {r5 r8 r9}, byrefRegs=0000 {}, byref, isz
ldr r0, [r6+0x24]
ldr r0, [r0]
ldr r1, [r0+0x04]
cmp r1, 16
- ble SHORT G_M57110_IG17
+ ble SHORT G_M57110_IG15
;; size=10 bbWeight=1 PerfScore 5.00
-G_M57110_IG15: ; bbWeight=0.80, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
+G_M57110_IG13: ; bbWeight=0.80, gcrefRegs=0320 {r5 r8 r9}, byrefRegs=0000 {}, byref, isz
ldr r4, [r0+0x10]
cmp r4, 0
- beq SHORT G_M57110_IG17
+ beq SHORT G_M57110_IG15
;; size=6 bbWeight=0.80 PerfScore 2.40
-G_M57110_IG16: ; bbWeight=0.64, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M57110_IG18
+G_M57110_IG14: ; bbWeight=0.64, gcrefRegs=0320 {r5 r8 r9}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M57110_IG16
;; size=2 bbWeight=0.64 PerfScore 0.64
-G_M57110_IG17: ; bbWeight=0.36, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref
+G_M57110_IG15: ; bbWeight=0.36, gcrefRegs=0320 {r5 r8 r9}, byrefRegs=0000 {}, byref
mov r0, r6
movw r1, 0xd1ff
movt r1, 0xd1ff
@@ -180,47 +174,44 @@ G_M57110_IG17: ; bbWeight=0.36, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}
; gcr arg pop 0
mov r4, r0
;; size=22 bbWeight=0.36 PerfScore 2.52
-G_M57110_IG18: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref
- ldr r1, [sp+0x04] // [V02 loc0]
- ; gcrRegs +[r1]
- ldrsh r1, [r1+0x28]
- ; gcrRegs -[r1]
- mov r0, r7
+G_M57110_IG16: ; bbWeight=1, gcrefRegs=0320 {r5 r8 r9}, byrefRegs=0000 {}, byref
+ ldrsh r1, [r8+0x28]
+ mov r0, r9
; gcrRegs +[r0]
ldr r3, [r4]
blx r3
- ; gcrRegs -[r7]
+ ; gcrRegs -[r9]
; gcr arg pop 0
mov r1, r0
; gcrRegs +[r1]
...
Details
Improvements/regressions per collection
| Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
| benchmarks.run.linux.arm.checked.mch |
93 |
80 |
12 |
1 |
-1,426 |
+96 |
| benchmarks.run_pgo.linux.arm.checked.mch |
2,111 |
2,094 |
14 |
3 |
-32,882 |
+198 |
| benchmarks.run_tiered.linux.arm.checked.mch |
66 |
57 |
8 |
1 |
-1,012 |
+76 |
| coreclr_tests.run.linux.arm.checked.mch |
231 |
195 |
26 |
10 |
-3,062 |
+406 |
| libraries.crossgen2.linux.arm.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| libraries.pmi.linux.arm.checked.mch |
518 |
479 |
17 |
22 |
-10,520 |
+140 |
| libraries_tests.run.linux.arm.Release.mch |
1,348 |
1,236 |
71 |
41 |
-21,892 |
+1,048 |
| librariestestsnotieredcompilation.run.linux.arm.Release.mch |
629 |
594 |
21 |
14 |
-13,328 |
+730 |
| realworld.run.linux.arm.checked.mch |
129 |
123 |
2 |
4 |
-2,340 |
+12 |
|
5,125 |
4,858 |
171 |
96 |
-86,462 |
+2,706 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.linux.arm.checked.mch |
41,659 |
5,309 |
36,350 |
1,203 (2.56%) |
5,405 (11.48%) |
| benchmarks.run_pgo.linux.arm.checked.mch |
144,832 |
59,183 |
85,649 |
3,288 (1.97%) |
21,932 (13.15%) |
| benchmarks.run_tiered.linux.arm.checked.mch |
73,721 |
42,033 |
31,688 |
1,064 (1.35%) |
5,019 (6.37%) |
| coreclr_tests.run.linux.arm.checked.mch |
462,197 |
259,246 |
202,951 |
7,156 (1.49%) |
17,192 (3.59%) |
| libraries.crossgen2.linux.arm.checked.mch |
1,763 |
0 |
1,763 |
0 (0.00%) |
0 (0.00%) |
| libraries.pmi.linux.arm.checked.mch |
245,068 |
6 |
245,062 |
7,783 (2.78%) |
34,849 (12.45%) |
| libraries_tests.run.linux.arm.Release.mch |
669,013 |
442,605 |
226,408 |
16,220 (2.24%) |
56,572 (7.80%) |
| librariestestsnotieredcompilation.run.linux.arm.Release.mch |
240,632 |
21,604 |
219,028 |
33,211 (10.79%) |
67,188 (21.83%) |
| realworld.run.linux.arm.checked.mch |
31,950 |
153 |
31,797 |
1,407 (3.72%) |
5,851 (15.48%) |
|
1,910,835 |
830,139 |
1,080,696 |
71,332 (3.36%) |
214,008 (10.07%) |
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: 9001894 (overridden on cmd)
Total bytes of diff: 9000564 (overridden on cmd)
Total bytes of delta: -1330 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
10 : 13307.dasm (10.42 % of base)
10 : 14907.dasm (10.42 % of base)
10 : 40859.dasm (10.64 % of base)
10 : 44815.dasm (10.64 % of base)
10 : 1559.dasm (2.60 % of base)
10 : 16388.dasm (1.44 % of base)
10 : 44545.dasm (10.42 % of base)
10 : 17815.dasm (10.42 % of base)
6 : 13644.dasm (4.17 % of base)
6 : 7908.dasm (1.01 % of base)
2 : 13311.dasm (0.72 % of base)
2 : 2788.dasm (0.26 % of base)
Top file improvements (bytes):
-56 : 4926.dasm (-9.86 % of base)
-46 : 2805.dasm (-8.24 % of base)
-40 : 2574.dasm (-0.95 % of base)
-36 : 3028.dasm (-10.59 % of base)
-32 : 412.dasm (-41.03 % of base)
-32 : 20574.dasm (-36.36 % of base)
-30 : 8417.dasm (-20.55 % of base)
-28 : 13730.dasm (-40.00 % of base)
-28 : 5457.dasm (-8.81 % of base)
-28 : 7898.dasm (-51.85 % of base)
-28 : 26203.dasm (-13.33 % of base)
-28 : 22966.dasm (-5.36 % of base)
-28 : 5427.dasm (-4.02 % of base)
-26 : 24186.dasm (-12.26 % of base)
-26 : 14222.dasm (-8.39 % of base)
-26 : 27145.dasm (-13.54 % of base)
-24 : 25381.dasm (-6.63 % of base)
-24 : 27008.dasm (-13.64 % of base)
-24 : 8491.dasm (-31.58 % of base)
-24 : 10547.dasm (-26.67 % of base)
58 total files with Code Size differences (46 improved, 12 regressed), 1 unchanged.
Top method regressions (bytes):
10 (10.42 % of base) : 44545.dasm - PerfLabTests.CastingPerf:FooObjIsFoo():this (FullOpts)
10 (10.64 % of base) : 44815.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (FullOpts)
10 (10.42 % of base) : 13307.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (FullOpts)
10 (10.42 % of base) : 14907.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (FullOpts)
10 (10.42 % of base) : 17815.dasm - PerfLabTests.CastingPerf:IntObj():this (FullOpts)
10 (10.64 % of base) : 40859.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (FullOpts)
10 (1.44 % of base) : 16388.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
10 (2.60 % of base) : 1559.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]:<.cctor>b__4_0(System.Object):this (FullOpts)
6 (1.01 % of base) : 7908.dasm - System.Collections.Generic.SortedDictionary`2[System.__Canon,System.__Canon]:.ctor(System.Collections.Generic.IDictionary`2[System.__Canon,System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
6 (4.17 % of base) : 13644.dasm - System.Net.Security.SslStream:MakeEx(System.Security.Cryptography.X509Certificates.X509Certificate):System.Security.Cryptography.X509Certificates.X509Certificate2 (FullOpts)
2 (0.72 % of base) : 13311.dasm - System.Collections.Perf_Frozen`1[System.__Canon]:GetUniqueValues(int):System.__Canon[]:this (FullOpts)
2 (0.26 % of base) : 2788.dasm - System.Xml.Serialization.TempAssembly:LoadAssemblyByPath(System.Type,System.String):System.Reflection.Assembly (FullOpts)
Top method improvements (bytes):
-56 (-9.86 % of base) : 4926.dasm - System.Security.Cryptography.X509Certificates.CertificateExtensionsCommon:GetPrivateKey[System.__Canon](System.Security.Cryptography.X509Certificates.X509Certificate2,System.Predicate`1[System.Security.Cryptography.X509Certificates.X509Certificate2]):System.__Canon (FullOpts)
-46 (-8.24 % of base) : 2805.dasm - System.Xml.Serialization.ContextAwareTables`1[System.__Canon]:GetOrCreateValue(System.Type,System.Func`2[System.__Canon,System.__Canon]):System.__Canon:this (FullOpts)
-40 (-0.95 % of base) : 2574.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
-36 (-10.59 % of base) : 3028.dasm - System.Xml.Serialization.XmlSerializationWriterILGen:GenerateElement(System.Xml.Serialization.XmlMapping):System.String:this (FullOpts)
-32 (-36.36 % of base) : 20574.dasm - Newtonsoft.Json.JsonConvert:DeserializeObject[System.__Canon](System.String,Newtonsoft.Json.JsonSerializerSettings):System.__Canon (FullOpts)
-32 (-41.03 % of base) : 412.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
-30 (-20.55 % of base) : 8417.dasm - BenchmarkDotNet.Characteristics.Characteristic`1[System.__Canon]:ResolveValueCore(BenchmarkDotNet.Characteristics.CharacteristicObject,System.Object):System.Object:this (FullOpts)
-28 (-5.36 % of base) : 22966.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithAnnotationsGreen[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxAnnotation]):System.__Canon (FullOpts)
-28 (-4.02 % of base) : 5427.dasm - Newtonsoft.Json.Utilities.ReflectionUtils:GetAttributes(System.Object,System.Type,ubyte):System.Attribute[] (FullOpts)
-28 (-51.85 % of base) : 7898.dasm - System.Collections.ContainsKeyTrue`2+<>c[System.__Canon,System.__Canon]:<Setup>b__10_1(System.__Canon):System.__Canon:this (FullOpts)
-28 (-13.33 % of base) : 26203.dasm - System.Collections.Generic.List`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
-28 (-8.81 % of base) : 5457.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (FullOpts)
-28 (-40.00 % of base) : 13730.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (FullOpts)
-26 (-13.54 % of base) : 27145.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-26 (-12.26 % of base) : 24186.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-26 (-8.39 % of base) : 14222.dasm - System.Collections.Generic.Dictionary`2[int,System.__Canon]:System.Collections.IDictionary.set_Item(System.Object,System.Object):this (FullOpts)
-24 (-31.58 % of base) : 8491.dasm - BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:Freeze():System.__Canon:this (FullOpts)
-24 (-13.64 % of base) : 27008.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-24 (-26.67 % of base) : 10547.dasm - Sigil.NonGeneric.Emit:CreateDelegate[System.__Canon](byref,int):System.__Canon:this (FullOpts)
-24 (-6.63 % of base) : 25381.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (FullOpts)
Top method regressions (percentages):
10 (10.64 % of base) : 44815.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (FullOpts)
10 (10.64 % of base) : 40859.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (FullOpts)
10 (10.42 % of base) : 44545.dasm - PerfLabTests.CastingPerf:FooObjIsFoo():this (FullOpts)
10 (10.42 % of base) : 13307.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (FullOpts)
10 (10.42 % of base) : 14907.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (FullOpts)
10 (10.42 % of base) : 17815.dasm - PerfLabTests.CastingPerf:IntObj():this (FullOpts)
6 (4.17 % of base) : 13644.dasm - System.Net.Security.SslStream:MakeEx(System.Security.Cryptography.X509Certificates.X509Certificate):System.Security.Cryptography.X509Certificates.X509Certificate2 (FullOpts)
10 (2.60 % of base) : 1559.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]:<.cctor>b__4_0(System.Object):this (FullOpts)
10 (1.44 % of base) : 16388.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
6 (1.01 % of base) : 7908.dasm - System.Collections.Generic.SortedDictionary`2[System.__Canon,System.__Canon]:.ctor(System.Collections.Generic.IDictionary`2[System.__Canon,System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
2 (0.72 % of base) : 13311.dasm - System.Collections.Perf_Frozen`1[System.__Canon]:GetUniqueValues(int):System.__Canon[]:this (FullOpts)
2 (0.26 % of base) : 2788.dasm - System.Xml.Serialization.TempAssembly:LoadAssemblyByPath(System.Type,System.String):System.Reflection.Assembly (FullOpts)
Top method improvements (percentages):
-28 (-51.85 % of base) : 7898.dasm - System.Collections.ContainsKeyTrue`2+<>c[System.__Canon,System.__Canon]:<Setup>b__10_1(System.__Canon):System.__Canon:this (FullOpts)
-22 (-47.83 % of base) : 3931.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
-32 (-41.03 % of base) : 412.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
-28 (-40.00 % of base) : 13730.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (FullOpts)
-32 (-36.36 % of base) : 20574.dasm - Newtonsoft.Json.JsonConvert:DeserializeObject[System.__Canon](System.String,Newtonsoft.Json.JsonSerializerSettings):System.__Canon (FullOpts)
-24 (-31.58 % of base) : 8491.dasm - BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:Freeze():System.__Canon:this (FullOpts)
-22 (-31.43 % of base) : 7316.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
-24 (-26.67 % of base) : 10547.dasm - Sigil.NonGeneric.Emit:CreateDelegate[System.__Canon](byref,int):System.__Canon:this (FullOpts)
-18 (-24.32 % of base) : 21812.dasm - System.Xml.Base64Decoder:SetNextOutputBuffer(System.Array,int,int):this (FullOpts)
-18 (-23.68 % of base) : 3703.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
-30 (-20.55 % of base) : 8417.dasm - BenchmarkDotNet.Characteristics.Characteristic`1[System.__Canon]:ResolveValueCore(BenchmarkDotNet.Characteristics.CharacteristicObject,System.Object):System.Object:this (FullOpts)
-16 (-18.18 % of base) : 12094.dasm - MicroBenchmarks.Serializers.Json_FromStream`1[System.__Canon]:DataContractJsonSerializer_():System.__Canon:this (FullOpts)
-16 (-18.18 % of base) : 12704.dasm - MicroBenchmarks.Serializers.Xml_FromStream`1[System.__Canon]:DataContractSerializer_():System.__Canon:this (FullOpts)
-16 (-18.18 % of base) : 16217.dasm - MicroBenchmarks.Serializers.Xml_FromStream`1[System.__Canon]:XmlSerializer_():System.__Canon:this (FullOpts)
-20 (-17.24 % of base) : 2597.dasm - System.Text.Json.Serialization.Converters.ListOfTConverter`2[System.__Canon,System.__Canon]:Add(byref,byref):this (FullOpts)
-14 (-16.67 % of base) : 23176.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
-18 (-16.67 % of base) : 13847.dasm - System.Text.Json.Serialization.Converters.IDictionaryConverter`1[System.__Canon]:Add(System.String,byref,System.Text.Json.JsonSerializerOptions,byref):this (FullOpts)
-14 (-14.89 % of base) : 39929.dasm - System.Diagnostics.Tracing.Statics:GetCustomAttribute[System.__Canon](System.Type):System.__Canon (FullOpts)
-16 (-14.81 % of base) : 24717.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (FullOpts)
-14 (-14.58 % of base) : 3941.dasm - System.Text.Json.Serialization.Converters.IListConverter`1[System.__Canon]:Add(byref,byref):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: 44895420 (overridden on cmd)
Total bytes of diff: 44862736 (overridden on cmd)
Total bytes of delta: -32684 (-0.07 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
28 : 92934.dasm (18.42 % of base)
28 : 82477.dasm (18.42 % of base)
26 : 107618.dasm (14.77 % of base)
26 : 24428.dasm (16.88 % of base)
10 : 150464.dasm (10.64 % of base)
10 : 152959.dasm (10.42 % of base)
10 : 156936.dasm (10.64 % of base)
10 : 63275.dasm (1.44 % of base)
10 : 76331.dasm (10.42 % of base)
10 : 48038.dasm (10.42 % of base)
10 : 100386.dasm (0.66 % of base)
10 : 56724.dasm (10.42 % of base)
8 : 100646.dasm (0.46 % of base)
2 : 12778.dasm (0.33 % of base)
Top file improvements (bytes):
-162 : 104291.dasm (-4.75 % of base)
-64 : 114996.dasm (-6.61 % of base)
-46 : 166502.dasm (-6.59 % of base)
-46 : 66976.dasm (-6.59 % of base)
-46 : 54810.dasm (-6.59 % of base)
-46 : 73713.dasm (-6.59 % of base)
-46 : 64470.dasm (-6.59 % of base)
-46 : 77355.dasm (-6.59 % of base)
-46 : 161458.dasm (-6.59 % of base)
-46 : 56364.dasm (-6.59 % of base)
-46 : 91534.dasm (-6.59 % of base)
-44 : 119737.dasm (-9.09 % of base)
-44 : 107621.dasm (-9.09 % of base)
-44 : 105084.dasm (-1.47 % of base)
-44 : 92061.dasm (-9.09 % of base)
-38 : 62693.dasm (-5.51 % of base)
-38 : 157746.dasm (-5.51 % of base)
-38 : 163263.dasm (-5.51 % of base)
-32 : 10625.dasm (-36.36 % of base)
-32 : 4654.dasm (-41.03 % of base)
59 total files with Code Size differences (45 improved, 14 regressed), 3 unchanged.
Top method regressions (bytes):
28 (18.42 % of base) : 92934.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
28 (18.42 % of base) : 82477.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
26 (14.77 % of base) : 107618.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
26 (16.88 % of base) : 24428.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
10 (0.66 % of base) : 100386.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:DeriveUseSiteInfoFromType(byref,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int):ubyte:this (Tier1)
10 (10.42 % of base) : 152959.dasm - PerfLabTests.CastingPerf:FooObjIsFoo():this (Tier0-FullOpts)
10 (10.64 % of base) : 156936.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier0-FullOpts)
10 (10.42 % of base) : 48038.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier0-FullOpts)
10 (10.42 % of base) : 56724.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier0-FullOpts)
10 (10.42 % of base) : 76331.dasm - PerfLabTests.CastingPerf:IntObj():this (Tier0-FullOpts)
10 (10.64 % of base) : 150464.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier0-FullOpts)
10 (1.44 % of base) : 63275.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (Tier0-FullOpts)
8 (0.46 % of base) : 100646.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetWellKnownTypeMember(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,int,byref,ubyte):Microsoft.CodeAnalysis.CSharp.Symbol (Tier1)
2 (0.33 % of base) : 12778.dasm - System.Collections.Generic.SortedDictionary`2[System.__Canon,System.__Canon]:.ctor(System.Collections.Generic.IDictionary`2[System.__Canon,System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (Tier0-FullOpts)
Top method improvements (bytes):
-162 (-4.75 % of base) : 104291.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
-64 (-6.61 % of base) : 114996.dasm - Microsoft.CodeAnalysis.CSharp.LocalBinderFactory:VisitLocalDeclarationStatement(Microsoft.CodeAnalysis.CSharp.Syntax.LocalDeclarationStatementSyntax):this (Tier0-FullOpts)
-46 (-6.59 % of base) : 166502.dasm - System.Xml.Serialization.ContextAwareTables`1[System.__Canon]:GetOrCreateValue(System.Type,System.Func`2[System.__Canon,System.__Canon]):System.__Canon:this (Tier1)
-46 (-6.59 % of base) : 66976.dasm - System.Xml.Serialization.ContextAwareTables`1[System.__Canon]:GetOrCreateValue(System.Type,System.Func`2[System.__Canon,System.__Canon]):System.__Canon:this (Tier1)
-46 (-6.59 % of base) : 54810.dasm - System.Xml.Serialization.ContextAwareTables`1[System.__Canon]:GetOrCreateValue(System.Type,System.Func`2[System.__Canon,System.__Canon]):System.__Canon:this (Tier1)
-46 (-6.59 % of base) : 73713.dasm - System.Xml.Serialization.ContextAwareTables`1[System.__Canon]:GetOrCreateValue(System.Type,System.Func`2[System.__Canon,System.__Canon]):System.__Canon:this (Tier1)
-46 (-6.59 % of base) : 64470.dasm - System.Xml.Serialization.ContextAwareTables`1[System.__Canon]:GetOrCreateValue(System.Type,System.Func`2[System.__Canon,System.__Canon]):System.__Canon:this (Tier1)
-46 (-6.59 % of base) : 77355.dasm - System.Xml.Serialization.ContextAwareTables`1[System.__Canon]:GetOrCreateValue(System.Type,System.Func`2[System.__Canon,System.__Canon]):System.__Canon:this (Tier1)
-46 (-6.59 % of base) : 161458.dasm - System.Xml.Serialization.ContextAwareTables`1[System.__Canon]:GetOrCreateValue(System.Type,System.Func`2[System.__Canon,System.__Canon]):System.__Canon:this (Tier1)
-46 (-6.59 % of base) : 56364.dasm - System.Xml.Serialization.ContextAwareTables`1[System.__Canon]:GetOrCreateValue(System.Type,System.Func`2[System.__Canon,System.__Canon]):System.__Canon:this (Tier1)
-46 (-6.59 % of base) : 91534.dasm - System.Xml.Serialization.ContextAwareTables`1[System.__Canon]:GetOrCreateValue(System.Type,System.Func`2[System.__Canon,System.__Canon]):System.__Canon:this (Tier1)
-44 (-1.47 % of base) : 105084.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeConversionNodeCore(Microsoft.CodeAnalysis.CSharp.BoundConversion,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,ubyte,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
-44 (-9.09 % of base) : 119737.dasm - System.ComponentModel.ReflectTypeDescriptionProvider+ReflectedTypeData:GetConverter(System.Object):System.ComponentModel.TypeConverter:this (Tier1)
-44 (-9.09 % of base) : 107621.dasm - System.ComponentModel.ReflectTypeDescriptionProvider+ReflectedTypeData:GetConverter(System.Object):System.ComponentModel.TypeConverter:this (Tier1)
-44 (-9.09 % of base) : 92061.dasm - System.ComponentModel.ReflectTypeDescriptionProvider+ReflectedTypeData:GetConverter(System.Object):System.ComponentModel.TypeConverter:this (Tier1)
-38 (-5.51 % of base) : 62693.dasm - System.Xml.Serialization.ContextAwareTables`1[System.__Canon]:GetOrCreateValue(System.Type,System.Func`2[System.__Canon,System.__Canon]):System.__Canon:this (Tier1)
-38 (-5.51 % of base) : 157746.dasm - System.Xml.Serialization.ContextAwareTables`1[System.__Canon]:GetOrCreateValue(System.Type,System.Func`2[System.__Canon,System.__Canon]):System.__Canon:this (Tier1)
-38 (-5.51 % of base) : 163263.dasm - System.Xml.Serialization.ContextAwareTables`1[System.__Canon]:GetOrCreateValue(System.Type,System.Func`2[System.__Canon,System.__Canon]):System.__Canon:this (Tier1)
-32 (-41.03 % of base) : 4654.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-32 (-36.36 % of base) : 10625.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
Top method regressions (percentages):
28 (18.42 % of base) : 92934.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
28 (18.42 % of base) : 82477.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
26 (16.88 % of base) : 24428.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
26 (14.77 % of base) : 107618.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
10 (10.64 % of base) : 156936.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier0-FullOpts)
10 (10.64 % of base) : 150464.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier0-FullOpts)
10 (10.42 % of base) : 152959.dasm - PerfLabTests.CastingPerf:FooObjIsFoo():this (Tier0-FullOpts)
10 (10.42 % of base) : 48038.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier0-FullOpts)
10 (10.42 % of base) : 56724.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier0-FullOpts)
10 (10.42 % of base) : 76331.dasm - PerfLabTests.CastingPerf:IntObj():this (Tier0-FullOpts)
10 (1.44 % of base) : 63275.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (Tier0-FullOpts)
10 (0.66 % of base) : 100386.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:DeriveUseSiteInfoFromType(byref,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int):ubyte:this (Tier1)
8 (0.46 % of base) : 100646.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetWellKnownTypeMember(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,int,byref,ubyte):Microsoft.CodeAnalysis.CSharp.Symbol (Tier1)
2 (0.33 % of base) : 12778.dasm - System.Collections.Generic.SortedDictionary`2[System.__Canon,System.__Canon]:.ctor(System.Collections.Generic.IDictionary`2[System.__Canon,System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (Tier0-FullOpts)
Top method improvements (percentages):
-22 (-47.83 % of base) : 131625.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
-22 (-47.83 % of base) : 152610.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
-22 (-47.83 % of base) : 43748.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
-22 (-47.83 % of base) : 84130.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
-32 (-41.03 % of base) : 4654.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-32 (-36.36 % of base) : 10625.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
-14 (-14.29 % of base) : 19089.dasm - System.Text.Json.Serialization.Converters.DictionaryOfTKeyTValueConverter`3[System.__Canon,System.__Canon,System.__Canon]:Add(System.__Canon,byref,System.Text.Json.JsonSerializerOptions,byref):this (Tier1)
-18 (-13.85 % of base) : 33958.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (Tier1)
-26 (-13.54 % of base) : 115147.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-14 (-12.07 % of base) : 116090.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
-14 (-10.61 % of base) : 3563.dasm - BenchmarkDotNet.Characteristics.Characteristic`1[System.__Canon]:ResolveValueCore(BenchmarkDotNet.Characteristics.CharacteristicObject,System.Object):System.Object:this (Tier1)
-14 (-10.61 % of base) : 70888.dasm - BenchmarkDotNet.Characteristics.Characteristic`1[System.__Canon]:ResolveValueCore(BenchmarkDotNet.Characteristics.CharacteristicObject,System.Object):System.Object:this (Tier1)
-16 (-10.53 % of base) : 21097.dasm - Microsoft.Extensions.Options.OptionsMonitor`1[System.__Canon]:add__onChange(System.Action`2[System.__Canon,System.__Canon]):this (Tier0-FullOpts)
-44 (-9.09 % of base) : 119737.dasm - System.ComponentModel.ReflectTypeDescriptionProvider+ReflectedTypeData:GetConverter(System.Object):System.ComponentModel.TypeConverter:this (Tier1)
-44 (-9.09 % of base) : 107621.dasm - System.ComponentModel.ReflectTypeDescriptionProvider+ReflectedTypeData:GetConverter(System.Object):System.ComponentModel.TypeConverter:this (Tier1)
-44 (-9.09 % of base) : 92061.dasm - System.ComponentModel.ReflectTypeDescriptionProvider+ReflectedTypeData:GetConverter(System.Object):System.ComponentModel.TypeConverter:this (Tier1)
-30 (-8.93 % of base) : 3490.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
-10 (-8.93 % of base) : 48986.dasm - System.Xml.Linq.XDocument:GetFirstNode[System.__Canon]():System.__Canon:this (Tier0-FullOpts)
-10 (-7.94 % of base) : 94069.dasm - PerfLabTests.CastingPerf:FooObjCastIfIsa():this (Tier0-FullOpts)
-10 (-7.81 % of base) : 124808.dasm - System.Text.Json.Serialization.Converters.ISetOfTConverter`2[System.__Canon,System.__Canon]:Add(byref,byref):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: 13975686 (overridden on cmd)
Total bytes of diff: 13974750 (overridden on cmd)
Total bytes of delta: -936 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
10 : 72134.dasm (10.42 % of base)
10 : 74966.dasm (10.64 % of base)
10 : 32378.dasm (10.42 % of base)
10 : 30662.dasm (10.42 % of base)
10 : 40071.dasm (10.42 % of base)
10 : 33325.dasm (1.44 % of base)
10 : 71803.dasm (10.64 % of base)
6 : 14718.dasm (1.01 % of base)
Top file improvements (bytes):
-46 : 29573.dasm (-7.85 % of base)
-32 : 13011.dasm (-36.36 % of base)
-32 : 2774.dasm (-41.03 % of base)
-30 : 26638.dasm (-20.55 % of base)
-28 : 17969.dasm (-40.00 % of base)
-28 : 12011.dasm (-8.81 % of base)
-28 : 2024.dasm (-9.27 % of base)
-28 : 11181.dasm (-4.02 % of base)
-28 : 47029.dasm (-5.36 % of base)
-26 : 32799.dasm (-8.39 % of base)
-26 : 57141.dasm (-13.54 % of base)
-24 : 56840.dasm (-13.64 % of base)
-24 : 24522.dasm (-26.67 % of base)
-24 : 52415.dasm (-6.63 % of base)
-24 : 26804.dasm (-31.58 % of base)
-22 : 16277.dasm (-31.43 % of base)
-22 : 17158.dasm (-47.83 % of base)
-20 : 29963.dasm (-18.52 % of base)
-20 : 27917.dasm (-10.00 % of base)
-18 : 20193.dasm (-14.29 % of base)
55 total files with Code Size differences (47 improved, 8 regressed), 1 unchanged.
Top method regressions (bytes):
10 (10.42 % of base) : 72134.dasm - PerfLabTests.CastingPerf:FooObjIsFoo():this (Tier0-FullOpts)
10 (10.64 % of base) : 74966.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier0-FullOpts)
10 (10.42 % of base) : 30662.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier0-FullOpts)
10 (10.42 % of base) : 32378.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier0-FullOpts)
10 (10.42 % of base) : 40071.dasm - PerfLabTests.CastingPerf:IntObj():this (Tier0-FullOpts)
10 (10.64 % of base) : 71803.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier0-FullOpts)
10 (1.44 % of base) : 33325.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (Tier0-FullOpts)
6 (1.01 % of base) : 14718.dasm - System.Collections.Generic.SortedDictionary`2[System.__Canon,System.__Canon]:.ctor(System.Collections.Generic.IDictionary`2[System.__Canon,System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (Tier0-FullOpts)
Top method improvements (bytes):
-46 (-7.85 % of base) : 29573.dasm - System.Xml.Serialization.ContextAwareTables`1[System.__Canon]:GetOrCreateValue(System.Type,System.Func`2[System.__Canon,System.__Canon]):System.__Canon:this (Tier1)
-32 (-41.03 % of base) : 2774.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-32 (-36.36 % of base) : 13011.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
-30 (-20.55 % of base) : 26638.dasm - BenchmarkDotNet.Characteristics.Characteristic`1[System.__Canon]:ResolveValueCore(BenchmarkDotNet.Characteristics.CharacteristicObject,System.Object):System.Object:this (Tier1)
-28 (-5.36 % of base) : 47029.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithAnnotationsGreen[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxAnnotation]):System.__Canon (Tier0-FullOpts)
-28 (-4.02 % of base) : 11181.dasm - Newtonsoft.Json.Utilities.ReflectionUtils:GetAttributes(System.Object,System.Type,ubyte):System.Attribute[] (Tier1)
-28 (-8.81 % of base) : 12011.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (Tier1)
-28 (-9.27 % of base) : 2024.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
-28 (-40.00 % of base) : 17969.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
-26 (-13.54 % of base) : 57141.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-26 (-8.39 % of base) : 32799.dasm - System.Collections.Generic.Dictionary`2[int,System.__Canon]:System.Collections.IDictionary.set_Item(System.Object,System.Object):this (Tier1)
-24 (-31.58 % of base) : 26804.dasm - BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:Freeze():System.__Canon:this (Tier1)
-24 (-13.64 % of base) : 56840.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-24 (-26.67 % of base) : 24522.dasm - Sigil.NonGeneric.Emit:CreateDelegate[System.__Canon](byref,int):System.__Canon:this (Tier1)
-24 (-6.63 % of base) : 52415.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (Tier0-FullOpts)
-22 (-31.43 % of base) : 16277.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (Tier1)
-22 (-47.83 % of base) : 17158.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
-20 (-10.00 % of base) : 27917.dasm - BenchmarkDotNet.Extensions.ValuesGenerator:GenerateValue[System.__Canon](System.Random):System.__Canon (Tier1)
-20 (-18.52 % of base) : 29963.dasm - System.Text.Json.Serialization.Converters.ListOfTConverter`2[System.__Canon,int]:Add(byref,byref):this (Tier1)
-18 (-14.29 % of base) : 20193.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (Tier1)
Top method regressions (percentages):
10 (10.64 % of base) : 74966.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier0-FullOpts)
10 (10.64 % of base) : 71803.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier0-FullOpts)
10 (10.42 % of base) : 72134.dasm - PerfLabTests.CastingPerf:FooObjIsFoo():this (Tier0-FullOpts)
10 (10.42 % of base) : 30662.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier0-FullOpts)
10 (10.42 % of base) : 32378.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier0-FullOpts)
10 (10.42 % of base) : 40071.dasm - PerfLabTests.CastingPerf:IntObj():this (Tier0-FullOpts)
10 (1.44 % of base) : 33325.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (Tier0-FullOpts)
6 (1.01 % of base) : 14718.dasm - System.Collections.Generic.SortedDictionary`2[System.__Canon,System.__Canon]:.ctor(System.Collections.Generic.IDictionary`2[System.__Canon,System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (Tier0-FullOpts)
Top method improvements (percentages):
-22 (-47.83 % of base) : 17158.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
-32 (-41.03 % of base) : 2774.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-28 (-40.00 % of base) : 17969.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
-32 (-36.36 % of base) : 13011.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
-24 (-31.58 % of base) : 26804.dasm - BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:Freeze():System.__Canon:this (Tier1)
-22 (-31.43 % of base) : 16277.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (Tier1)
-24 (-26.67 % of base) : 24522.dasm - Sigil.NonGeneric.Emit:CreateDelegate[System.__Canon](byref,int):System.__Canon:this (Tier1)
-18 (-23.68 % of base) : 59680.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
-30 (-20.55 % of base) : 26638.dasm - BenchmarkDotNet.Characteristics.Characteristic`1[System.__Canon]:ResolveValueCore(BenchmarkDotNet.Characteristics.CharacteristicObject,System.Object):System.Object:this (Tier1)
-20 (-18.52 % of base) : 29963.dasm - System.Text.Json.Serialization.Converters.ListOfTConverter`2[System.__Canon,int]:Add(byref,byref):this (Tier1)
-18 (-16.67 % of base) : 31243.dasm - System.Text.Json.Serialization.Converters.IDictionaryConverter`1[System.__Canon]:Add(System.String,byref,System.Text.Json.JsonSerializerOptions,byref):this (Tier1)
-14 (-14.89 % of base) : 69318.dasm - System.Diagnostics.Tracing.Statics:GetCustomAttribute[System.__Canon](System.Type):System.__Canon (Tier1)
-16 (-14.81 % of base) : 53919.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (Tier1)
-14 (-14.58 % of base) : 17186.dasm - System.Text.Json.Serialization.Converters.IListConverter`1[System.__Canon]:Add(byref,byref):this (Tier1)
-18 (-14.29 % of base) : 20193.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (Tier1)
-14 (-14.29 % of base) : 15225.dasm - System.Text.Json.Serialization.Converters.DictionaryOfTKeyTValueConverter`3[System.__Canon,System.__Canon,System.__Canon]:Add(System.__Canon,byref,System.Text.Json.JsonSerializerOptions,byref):this (Tier1)
-24 (-13.64 % of base) : 56840.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-26 (-13.54 % of base) : 57141.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-14 (-12.28 % of base) : 53409.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
-16 (-11.76 % of base) : 47919.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRed[System.__Canon](byref,int):System.__Canon:this (Tier1)
coreclr_tests.run.linux.arm.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 297649552 (overridden on cmd)
Total bytes of diff: 297646896 (overridden on cmd)
Total bytes of delta: -2656 (-0.00 % of base)
diff is an improvement.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
82 : 3089.dasm (1.09 % of base)
80 : 3068.dasm (1.06 % of base)
46 : 108122.dasm (766.67 % of base)
28 : 328825.dasm (18.42 % of base)
18 : 93666.dasm (2.43 % of base)
18 : 95699.dasm (2.43 % of base)
18 : 94301.dasm (2.43 % of base)
10 : 208693.dasm (1.44 % of base)
10 : 443237.dasm (1.44 % of base)
10 : 336376.dasm (0.66 % of base)
8 : 345327.dasm (2.17 % of base)
8 : 171058.dasm (2.06 % of base)
8 : 336629.dasm (0.46 % of base)
8 : 383491.dasm (2.05 % of base)
8 : 230080.dasm (1.86 % of base)
6 : 381953.dasm (0.79 % of base)
6 : 169947.dasm (0.79 % of base)
4 : 446668.dasm (1.98 % of base)
4 : 471900.dasm (1.96 % of base)
4 : 472058.dasm (1.92 % of base)
Top file improvements (bytes):
-64 : 338794.dasm (-6.84 % of base)
-44 : 326878.dasm (-1.75 % of base)
-40 : 156886.dasm (-18.87 % of base)
-36 : 162934.dasm (-29.03 % of base)
-36 : 345152.dasm (-20.00 % of base)
-32 : 233779.dasm (-41.03 % of base)
-32 : 227873.dasm (-41.03 % of base)
-30 : 111826.dasm (-4.07 % of base)
-30 : 93832.dasm (-20.83 % of base)
-30 : 228171.dasm (-44.12 % of base)
-28 : 113689.dasm (-5.36 % of base)
-28 : 470226.dasm (-9.27 % of base)
-28 : 232644.dasm (-41.18 % of base)
-28 : 111855.dasm (-8.81 % of base)
-28 : 329595.dasm (-5.30 % of base)
-26 : 115034.dasm (-12.26 % of base)
-26 : 117080.dasm (-13.54 % of base)
-26 : 336586.dasm (-7.14 % of base)
-26 : 97932.dasm (-10.32 % of base)
-26 : 97955.dasm (-10.32 % of base)
68 total files with Code Size differences (43 improved, 25 regressed), 10 unchanged.
Top method regressions (bytes):
82 (1.09 % of base) : 3089.dasm - Program:TestCase0003() (FullOpts)
80 (1.06 % of base) : 3068.dasm - Program:TestCase0003() (FullOpts)
46 (766.67 % of base) : 108122.dasm - T:TestEntryPoint():int (FullOpts)
28 (18.42 % of base) : 328825.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
18 (2.43 % of base) : 93666.dasm - DisabledRuntimeMarshalling.PInvokeAssemblyMarshallingDisabled.PInvokes:<Varargs_NotSupported>g__AssertThrowsCorrectException|6_1(System.Action) (FullOpts)
18 (2.43 % of base) : 95699.dasm - DisabledRuntimeMarshalling.PInvokeAssemblyMarshallingDisabled.PInvokes:<Varargs_NotSupported>g__AssertThrowsCorrectException|6_1(System.Action) (FullOpts)
18 (2.43 % of base) : 94301.dasm - DisabledRuntimeMarshalling.PInvokeAssemblyMarshallingDisabled.PInvokes:<Varargs_NotSupported>g__AssertThrowsCorrectException|6_1(System.Action) (FullOpts)
10 (0.66 % of base) : 336376.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:DeriveUseSiteInfoFromType(byref,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int):ubyte:this (Tier1)
10 (1.44 % of base) : 208693.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
10 (1.44 % of base) : 443237.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (Tier0-FullOpts)
8 (1.86 % of base) : 230080.dasm - Microsoft.Build.Logging.LoggerDescription:CreateForwardingLogger():Microsoft.Build.Framework.IForwardingLogger:this (FullOpts)
8 (0.46 % of base) : 336629.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetWellKnownTypeMember(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,int,byref,ubyte):Microsoft.CodeAnalysis.CSharp.Symbol (Tier1)
8 (2.17 % of base) : 345327.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler+<>c:<.cctor>b__10_0(System.Object):this (Tier1)
8 (2.06 % of base) : 171058.dasm - Test.DD:Main1() (FullOpts)
8 (2.05 % of base) : 383491.dasm - Test.DD:Main1() (Tier0-FullOpts)
6 (0.79 % of base) : 169947.dasm - AA`6[byte,ubyte,uint,uint,long,ubyte]:Static2(ulong,short,byref,byref):ushort[] (FullOpts)
6 (0.79 % of base) : 381953.dasm - AA`6[byte,ubyte,uint,uint,long,ubyte]:Static2(ulong,short,byref,byref):ushort[] (Tier0-FullOpts)
4 (1.92 % of base) : 472058.dasm - Internal.TypeSystem.MethodDesc:Equals(System.Object):ubyte:this (Tier1)
4 (1.87 % of base) : 467004.dasm - Internal.TypeSystem.MethodDesc:Equals(System.Object):ubyte:this (Tier1)
4 (1.52 % of base) : 475675.dasm - Internal.TypeSystem.MethodDesc:Equals(System.Object):ubyte:this (Tier1)
Top method improvements (bytes):
-64 (-6.84 % of base) : 338794.dasm - Microsoft.CodeAnalysis.CSharp.LocalBinderFactory:VisitLocalDeclarationStatement(Microsoft.CodeAnalysis.CSharp.Syntax.LocalDeclarationStatementSyntax):this (Tier0-FullOpts)
-44 (-1.75 % of base) : 326878.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1)
-40 (-18.87 % of base) : 156886.dasm - JitTest_castclass_ldlen_array_il.Test:Main():int (FullOpts)
-36 (-29.03 % of base) : 162934.dasm - My:foo[System.__Canon](ubyte,System.Object):System.Object (FullOpts)
-36 (-20.00 % of base) : 345152.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
-32 (-41.03 % of base) : 227873.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
-32 (-41.03 % of base) : 233779.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-30 (-4.07 % of base) : 111826.dasm - Newtonsoft.Json.Utilities.ReflectionUtils:GetAttributes(System.Object,System.Type,ubyte):System.Attribute[] (FullOpts)
-30 (-44.12 % of base) : 228171.dasm - Program+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
-30 (-20.83 % of base) : 93832.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (FullOpts)
-28 (-5.36 % of base) : 113689.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithAnnotationsGreen[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxAnnotation]):System.__Canon (FullOpts)
-28 (-5.30 % of base) : 329595.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithAnnotationsGreen[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxAnnotation]):System.__Canon (Tier0-FullOpts)
-28 (-8.81 % of base) : 111855.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (FullOpts)
-28 (-41.18 % of base) : 232644.dasm - System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]:<StartAsyncOperation>b__11_1(System.Object):this (FullOpts)
-28 (-9.27 % of base) : 470226.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
-26 (-13.54 % of base) : 117080.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-26 (-12.26 % of base) : 115034.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-26 (-10.32 % of base) : 97955.dasm - MyCounter[System.__Canon]:Decrement[System.__Canon](int):this (FullOpts)
-26 (-10.32 % of base) : 97932.dasm - MyCounter`1[System.__Canon]:Decrement[System.__Canon](int):this (FullOpts)
-26 (-7.14 % of base) : 336586.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (Tier0-FullOpts)
Top method regressions (percentages):
46 (766.67 % of base) : 108122.dasm - T:TestEntryPoint():int (FullOpts)
28 (18.42 % of base) : 328825.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
18 (2.43 % of base) : 93666.dasm - DisabledRuntimeMarshalling.PInvokeAssemblyMarshallingDisabled.PInvokes:<Varargs_NotSupported>g__AssertThrowsCorrectException|6_1(System.Action) (FullOpts)
18 (2.43 % of base) : 95699.dasm - DisabledRuntimeMarshalling.PInvokeAssemblyMarshallingDisabled.PInvokes:<Varargs_NotSupported>g__AssertThrowsCorrectException|6_1(System.Action) (FullOpts)
18 (2.43 % of base) : 94301.dasm - DisabledRuntimeMarshalling.PInvokeAssemblyMarshallingDisabled.PInvokes:<Varargs_NotSupported>g__AssertThrowsCorrectException|6_1(System.Action) (FullOpts)
8 (2.17 % of base) : 345327.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler+<>c:<.cctor>b__10_0(System.Object):this (Tier1)
8 (2.06 % of base) : 171058.dasm - Test.DD:Main1() (FullOpts)
8 (2.05 % of base) : 383491.dasm - Test.DD:Main1() (Tier0-FullOpts)
4 (1.98 % of base) : 446668.dasm - Internal.TypeSystem.TypeDesc:Equals(System.Object):ubyte:this (Tier1)
4 (1.98 % of base) : 466966.dasm - Internal.TypeSystem.TypeDesc:Equals(System.Object):ubyte:this (Tier1)
4 (1.96 % of base) : 471900.dasm - Internal.TypeSystem.TypeDesc:Equals(System.Object):ubyte:this (Tier1)
4 (1.96 % of base) : 475618.dasm - Internal.TypeSystem.TypeDesc:Equals(System.Object):ubyte:this (Tier1)
4 (1.92 % of base) : 472058.dasm - Internal.TypeSystem.MethodDesc:Equals(System.Object):ubyte:this (Tier1)
4 (1.90 % of base) : 467723.dasm - Internal.TypeSystem.TypeDesc:Equals(System.Object):ubyte:this (Tier1)
4 (1.87 % of base) : 467004.dasm - Internal.TypeSystem.MethodDesc:Equals(System.Object):ubyte:this (Tier1)
8 (1.86 % of base) : 230080.dasm - Microsoft.Build.Logging.LoggerDescription:CreateForwardingLogger():Microsoft.Build.Framework.IForwardingLogger:this (FullOpts)
4 (1.52 % of base) : 475675.dasm - Internal.TypeSystem.MethodDesc:Equals(System.Object):ubyte:this (Tier1)
10 (1.44 % of base) : 208693.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
10 (1.44 % of base) : 443237.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (Tier0-FullOpts)
82 (1.09 % of base) : 3089.dasm - Program:TestCase0003() (FullOpts)
Top method improvements (percentages):
-30 (-44.12 % of base) : 228171.dasm - Program+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
-28 (-41.18 % of base) : 232644.dasm - System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]:<StartAsyncOperation>b__11_1(System.Object):this (FullOpts)
-32 (-41.03 % of base) : 227873.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
-32 (-41.03 % of base) : 233779.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-22 (-31.43 % of base) : 133213.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
-14 (-30.43 % of base) : 132400.dasm - CastExpansionTests:CastToGeneric[System.__Canon](System.Object):System.Object:this (Tier1)
-36 (-29.03 % of base) : 162934.dasm - My:foo[System.__Canon](ubyte,System.Object):System.Object (FullOpts)
-30 (-20.83 % of base) : 93832.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (FullOpts)
-16 (-20.00 % of base) : 209776.dasm - Internal.TypeSystem.MetadataTypeSystemContext:ComputeHasStaticConstructor(Internal.TypeSystem.TypeDesc):ubyte:this (FullOpts)
-36 (-20.00 % of base) : 345152.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
-20 (-18.87 % of base) : 473259.dasm - Internal.TypeSystem.MetadataTypeSystemContext:ComputeHasStaticConstructor(Internal.TypeSystem.TypeDesc):ubyte:this (Tier1)
-20 (-18.87 % of base) : 476051.dasm - Internal.TypeSystem.MetadataTypeSystemContext:ComputeHasStaticConstructor(Internal.TypeSystem.TypeDesc):ubyte:this (Tier1)
-40 (-18.87 % of base) : 156886.dasm - JitTest_castclass_ldlen_array_il.Test:Main():int (FullOpts)
-18 (-18.00 % of base) : 95095.dasm - Xunit.Assert:Throws[System.__Canon](System.Action):System.__Canon (FullOpts)
-18 (-18.00 % of base) : 306064.dasm - Xunit.Assert:Throws[System.__Canon](System.Action):System.__Canon (Tier1)
-16 (-17.39 % of base) : 111846.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (FullOpts)
-14 (-16.67 % of base) : 113899.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
-18 (-16.67 % of base) : 94594.dasm - Xunit.Assert:Throws[System.__Canon](System.Func`1[System.Object]):System.__Canon (FullOpts)
-18 (-16.67 % of base) : 306060.dasm - Xunit.Assert:Throws[System.__Canon](System.Func`1[System.Object]):System.__Canon (Tier1)
-10 (-15.62 % of base) : 167543.dasm - Program+<>c__5`1[System.__Canon]:<GetCustomAttributes>b__5_0(Program+CustomAttributeData):System.__Canon: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: 36552836 (overridden on cmd)
Total bytes of diff: 36542456 (overridden on cmd)
Total bytes of delta: -10380 (-0.03 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
46 : 107676.dasm (2.41 % of base)
12 : 191093.dasm (1.12 % of base)
10 : 229802.dasm (0.43 % of base)
10 : 241278.dasm (1.57 % of base)
10 : 191410.dasm (1.44 % of base)
8 : 238212.dasm (1.85 % of base)
6 : 191377.dasm (0.44 % of base)
6 : 198449.dasm (4.17 % of base)
6 : 202482.dasm (1.10 % of base)
6 : 191380.dasm (0.62 % of base)
4 : 66668.dasm (1.22 % of base)
4 : 197967.dasm (1.38 % of base)
4 : 185680.dasm (4.55 % of base)
2 : 140589.dasm (0.25 % of base)
2 : 145770.dasm (0.78 % of base)
2 : 243789.dasm (0.16 % of base)
2 : 190864.dasm (0.33 % of base)
Top file improvements (bytes):
-400 : 251678.dasm (-23.92 % of base)
-164 : 92507.dasm (-12.97 % of base)
-164 : 171608.dasm (-12.50 % of base)
-124 : 258830.dasm (-20.46 % of base)
-108 : 141731.dasm (-36.73 % of base)
-102 : 141085.dasm (-7.70 % of base)
-96 : 26240.dasm (-14.95 % of base)
-96 : 26233.dasm (-15.24 % of base)
-82 : 257698.dasm (-2.05 % of base)
-68 : 66591.dasm (-17.09 % of base)
-64 : 8133.dasm (-8.18 % of base)
-60 : 26406.dasm (-12.30 % of base)
-60 : 26397.dasm (-12.35 % of base)
-58 : 133975.dasm (-15.76 % of base)
-50 : 141652.dasm (-34.25 % of base)
-48 : 184068.dasm (-13.48 % of base)
-46 : 140615.dasm (-7.85 % of base)
-44 : 147826.dasm (-12.87 % of base)
-44 : 147837.dasm (-12.87 % of base)
-42 : 141653.dasm (-7.75 % of base)
73 total files with Code Size differences (56 improved, 17 regressed), 21 unchanged.
Top method regressions (bytes):
46 (2.41 % of base) : 107676.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanXmlStringUnQuoted():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
12 (1.12 % of base) : 191093.dasm - System.Collections.Generic.SortedList`2[System.__Canon,System.Nullable`1[int]]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
10 (1.57 % of base) : 241278.dasm - Microsoft.Build.BackEnd.TaskExecutionHost:InternalSetTaskParameter(Microsoft.Build.Framework.TaskPropertyInfo,System.Object):ubyte:this (FullOpts)
10 (0.43 % of base) : 229802.dasm - Microsoft.CodeAnalysis.Emit.DefinitionMap:TryCreateVariableSlotAllocator(Microsoft.CodeAnalysis.Emit.EmitBaseline,Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.Symbols.IMethodSymbolInternal,Microsoft.CodeAnalysis.Symbols.IMethodSymbolInternal,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.CodeGen.VariableSlotAllocator:this (FullOpts)
10 (1.44 % of base) : 191410.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
8 (1.85 % of base) : 238212.dasm - Microsoft.Build.Logging.LoggerDescription:CreateForwardingLogger():Microsoft.Build.Framework.IForwardingLogger:this (FullOpts)
6 (0.62 % of base) : 191380.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:IntersectWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (FullOpts)
6 (0.44 % of base) : 191377.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (FullOpts)
6 (1.10 % of base) : 202482.dasm - System.Net.Http.Http3RequestStream:HandleReadResponseContentException(System.Exception,System.Threading.CancellationToken):this (FullOpts)
6 (4.17 % of base) : 198449.dasm - System.Net.Security.SslStream:MakeEx(System.Security.Cryptography.X509Certificates.X509Certificate):System.Security.Cryptography.X509Certificates.X509Certificate2 (FullOpts)
4 (1.22 % of base) : 66668.dasm - System.Data.ColumnTypeConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
4 (4.55 % of base) : 185680.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
4 (1.38 % of base) : 197967.dasm - System.Net.NegotiateAuthenticationPal:CheckHasSystemNetSecurityNative():ubyte (FullOpts)
2 (0.78 % of base) : 145770.dasm - Internal.TypeSystem.TypeDesc:get_TypeHasCharacteristicsRequiredToBeTypeEquivalent():ubyte:this (FullOpts)
2 (0.16 % of base) : 243789.dasm - Microsoft.Build.Execution.BuildManager+<>c__DisplayClass100_0:<IssueBuildRequestForBuildSubmission>g__IssueBuildSubmissionToSchedulerImpl|1(Microsoft.Build.Execution.BuildSubmission,ubyte):this (FullOpts)
2 (0.33 % of base) : 190864.dasm - System.Collections.Generic.SortedDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(System.Collections.Generic.IDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
2 (0.25 % of base) : 140589.dasm - System.Xml.Serialization.TempAssembly:LoadAssemblyByPath(System.Type,System.String):System.Reflection.Assembly (FullOpts)
Top method improvements (bytes):
-400 (-23.92 % of base) : 251678.dasm - System.CodeDom.Compiler.CodeGenerator:GenerateExpression(System.CodeDom.CodeExpression):this (FullOpts)
-164 (-12.97 % of base) : 92507.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
-164 (-12.50 % of base) : 171608.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
-124 (-20.46 % of base) : 258830.dasm - System.Runtime.Serialization.Formatters.Binary.PrimitiveArray:.ctor(int,System.Array):this (FullOpts)
-108 (-36.73 % of base) : 141731.dasm - System.Xml.Serialization.XmlSchemas:ItemName(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
-102 (-7.70 % of base) : 141085.dasm - System.Xml.Serialization.SchemaObjectWriter:Write54_XmlSchemaSequence(System.Xml.Schema.XmlSchemaSequence):this (FullOpts)
-96 (-15.24 % of base) : 26233.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2520[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
-96 (-14.95 % of base) : 26240.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2543-1[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
-82 (-2.05 % of base) : 257698.dasm - Newtonsoft.Json.JsonTextReader+<DoReadAsBytesAsync>d__42:MoveNext():this (FullOpts)
-68 (-17.09 % of base) : 66591.dasm - System.Data.XSDSchema:GetParticleItems(System.Xml.Schema.XmlSchemaParticle):System.Xml.Schema.XmlSchemaObjectCollection (FullOpts)
-64 (-8.18 % of base) : 8133.dasm - System.Runtime.InteropServices.Marshalling.ComVariant:As[System.__Canon]():System.__Canon:this (FullOpts)
-60 (-12.30 % of base) : 26406.dasm - Microsoft.FSharp.Core.LanguagePrimitives+GenericOneDynamicImplTable`1[System.__Canon]:.cctor() (FullOpts)
-60 (-12.35 % of base) : 26397.dasm - Microsoft.FSharp.Core.LanguagePrimitives+GenericZeroDynamicImplTable`1[System.__Canon]:.cctor() (FullOpts)
-58 (-15.76 % of base) : 133975.dasm - System.Xml.Schema.Compiler:CanonicalizeParticle(System.Xml.Schema.XmlSchemaParticle,ubyte):System.Xml.Schema.XmlSchemaParticle:this (FullOpts)
-50 (-34.25 % of base) : 141652.dasm - System.Xml.Serialization.XmlSchemaImporter:IsMixed(System.Xml.Schema.XmlSchemaType):ubyte (FullOpts)
-48 (-13.48 % of base) : 184068.dasm - System.Security.Cryptography.Xml.XmlDsigBase64Transform:LoadInput(System.Object):this (FullOpts)
-46 (-7.85 % of base) : 140615.dasm - System.Xml.Serialization.ContextAwareTables`1[System.__Canon]:GetOrCreateValue(System.Type,System.Func`2[System.__Canon,System.__Canon]):System.__Canon:this (FullOpts)
-44 (-12.87 % of base) : 147826.dasm - System.Reflection.Context.Custom.CustomConstructorInfo:GetCustomAttributes(ubyte):System.Object[]:this (FullOpts)
-44 (-12.87 % of base) : 147837.dasm - System.Reflection.Context.Custom.CustomParameterInfo:GetCustomAttributes(ubyte):System.Object[]:this (FullOpts)
-42 (-7.75 % of base) : 141653.dasm - System.Xml.Serialization.XmlSchemaImporter:GetTypeItems(System.Xml.Schema.XmlSchemaType):System.Xml.Serialization.XmlSchemaImporter+TypeItems:this (FullOpts)
Top method regressions (percentages):
4 (4.55 % of base) : 185680.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
6 (4.17 % of base) : 198449.dasm - System.Net.Security.SslStream:MakeEx(System.Security.Cryptography.X509Certificates.X509Certificate):System.Security.Cryptography.X509Certificates.X509Certificate2 (FullOpts)
46 (2.41 % of base) : 107676.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanXmlStringUnQuoted():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
8 (1.85 % of base) : 238212.dasm - Microsoft.Build.Logging.LoggerDescription:CreateForwardingLogger():Microsoft.Build.Framework.IForwardingLogger:this (FullOpts)
10 (1.57 % of base) : 241278.dasm - Microsoft.Build.BackEnd.TaskExecutionHost:InternalSetTaskParameter(Microsoft.Build.Framework.TaskPropertyInfo,System.Object):ubyte:this (FullOpts)
10 (1.44 % of base) : 191410.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
4 (1.38 % of base) : 197967.dasm - System.Net.NegotiateAuthenticationPal:CheckHasSystemNetSecurityNative():ubyte (FullOpts)
4 (1.22 % of base) : 66668.dasm - System.Data.ColumnTypeConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
12 (1.12 % of base) : 191093.dasm - System.Collections.Generic.SortedList`2[System.__Canon,System.Nullable`1[int]]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
6 (1.10 % of base) : 202482.dasm - System.Net.Http.Http3RequestStream:HandleReadResponseContentException(System.Exception,System.Threading.CancellationToken):this (FullOpts)
2 (0.78 % of base) : 145770.dasm - Internal.TypeSystem.TypeDesc:get_TypeHasCharacteristicsRequiredToBeTypeEquivalent():ubyte:this (FullOpts)
6 (0.62 % of base) : 191380.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:IntersectWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (FullOpts)
6 (0.44 % of base) : 191377.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (FullOpts)
10 (0.43 % of base) : 229802.dasm - Microsoft.CodeAnalysis.Emit.DefinitionMap:TryCreateVariableSlotAllocator(Microsoft.CodeAnalysis.Emit.EmitBaseline,Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.Symbols.IMethodSymbolInternal,Microsoft.CodeAnalysis.Symbols.IMethodSymbolInternal,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.CodeGen.VariableSlotAllocator:this (FullOpts)
2 (0.33 % of base) : 190864.dasm - System.Collections.Generic.SortedDictionary`2[System.__Canon,System.Nullable`1[int]]:.ctor(System.Collections.Generic.IDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
2 (0.25 % of base) : 140589.dasm - System.Xml.Serialization.TempAssembly:LoadAssemblyByPath(System.Type,System.String):System.Reflection.Assembly (FullOpts)
2 (0.16 % of base) : 243789.dasm - Microsoft.Build.Execution.BuildManager+<>c__DisplayClass100_0:<IssueBuildRequestForBuildSubmission>g__IssueBuildSubmissionToSchedulerImpl|1(Microsoft.Build.Execution.BuildSubmission,ubyte):this (FullOpts)
Top method improvements (percentages):
-28 (-51.85 % of base) : 267626.dasm - System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]:<GetMetadataViewProvider>b__1_0(System.Collections.Generic.IDictionary`2[System.String,System.Object]):System.__Canon:this (FullOpts)
-28 (-50.00 % of base) : 169514.dasm - CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]:<Cast>b__0():System.__Canon:this (FullOpts)
-22 (-47.83 % of base) : 25951.dasm - Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
-22 (-47.83 % of base) : 124127.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
-30 (-42.86 % of base) : 176283.dasm - System.Runtime.Serialization.KeyValue`2[System.__Canon,System.Nullable`1[int]]:System.Runtime.Serialization.IKeyValue.set_Key(System.Object):this (FullOpts)
-30 (-41.67 % of base) : 160083.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.Remove(System.Object):this (FullOpts)
-30 (-41.67 % of base) : 161775.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.Remove(System.Object):this (FullOpts)
-30 (-38.46 % of base) : 161014.dasm - System.Collections.Immutable.ImmutableList`1+Builder[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
-26 (-37.14 % of base) : 8461.dasm - System.Resources.ResourceReader+<>c__DisplayClass7_0`1[System.__Canon]:<CreateUntypedDelegate>b__0(System.Object,System.IO.Stream):System.Object:this (FullOpts)
-108 (-36.73 % of base) : 141731.dasm - System.Xml.Serialization.XmlSchemas:ItemName(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
-32 (-36.36 % of base) : 265849.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:CreateInstance[System.__Canon](System.IServiceProvider,System.Object[]):System.__Canon (FullOpts)
-32 (-36.36 % of base) : 254507.dasm - Newtonsoft.Json.JsonConvert:DeserializeObject[System.__Canon](System.String,Newtonsoft.Json.JsonSerializerSettings):System.__Canon (FullOpts)
-32 (-36.36 % of base) : 257117.dasm - Newtonsoft.Json.Linq.JToken:ToObject[System.__Canon](Newtonsoft.Json.JsonSerializer):System.__Canon:this (FullOpts)
-26 (-36.11 % of base) : 272894.dasm - Microsoft.Extensions.Hosting.Internal.ConfigureContainerAdapter`1[System.__Canon]:ConfigureContainer(Microsoft.Extensions.Hosting.HostBuilderContext,System.Object):this (FullOpts)
-26 (-36.11 % of base) : 159897.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
-26 (-36.11 % of base) : 126245.dasm - System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1+<>c__DisplayClass10_0[System.__Canon]:<SetSetter>b__0(System.Object,System.Object):this (FullOpts)
-26 (-36.11 % of base) : 126254.dasm - System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1+<>c__DisplayClass15_0[System.__Canon]:<SetShouldSerialize>b__0(System.Object,System.Object):ubyte:this (FullOpts)
-26 (-36.11 % of base) : 138914.dasm - System.Xml.Xsl.Runtime.XmlQuerySequence`1[System.__Canon]:System.Collections.IList.IndexOf(System.Object):int:this (FullOpts)
-28 (-35.90 % of base) : 91467.dasm - Microsoft.Diagnostics.Tracing.AutomatedAnalysis.Process:Equals(System.Object):ubyte:this (FullOpts)
-30 (-35.71 % of base) : 138913.dasm - System.Xml.Xsl.Runtime.XmlQuerySequence`1[System.__Canon]:System.Collections.IList.Contains(System.Object):ubyte:this (FullOpts)
libraries_tests.run.linux.arm.Release.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 203563396 (overridden on cmd)
Total bytes of diff: 203542552 (overridden on cmd)
Total bytes of delta: -20844 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
74 : 318097.dasm (2.98 % of base)
54 : 527693.dasm (1.01 % of base)
52 : 645589.dasm (6.16 % of base)
50 : 565478.dasm (2.06 % of base)
48 : 279988.dasm (1.67 % of base)
44 : 526885.dasm (0.90 % of base)
36 : 527916.dasm (0.73 % of base)
30 : 79403.dasm (0.66 % of base)
26 : 489540.dasm (14.77 % of base)
26 : 523448.dasm (14.77 % of base)
24 : 65744.dasm (4.60 % of base)
22 : 143746.dasm (4.20 % of base)
22 : 435123.dasm (3.70 % of base)
18 : 633353.dasm (2.08 % of base)
18 : 430517.dasm (2.09 % of base)
18 : 387864.dasm (2.09 % of base)
18 : 373528.dasm (2.09 % of base)
18 : 618836.dasm (2.08 % of base)
16 : 433695.dasm (4.30 % of base)
14 : 170438.dasm (0.33 % of base)
Top file improvements (bytes):
-286 : 177275.dasm (-8.99 % of base)
-218 : 431559.dasm (-12.84 % of base)
-216 : 431586.dasm (-13.20 % of base)
-198 : 429209.dasm (-10.53 % of base)
-192 : 90498.dasm (-11.51 % of base)
-184 : 431565.dasm (-14.42 % of base)
-162 : 66118.dasm (-4.74 % of base)
-162 : 172178.dasm (-4.78 % of base)
-140 : 431555.dasm (-7.99 % of base)
-114 : 697908.dasm (-7.94 % of base)
-100 : 526921.dasm (-1.87 % of base)
-94 : 430774.dasm (-7.63 % of base)
-94 : 500646.dasm (-7.83 % of base)
-92 : 431581.dasm (-10.11 % of base)
-90 : 431573.dasm (-7.51 % of base)
-88 : 490060.dasm (-16.60 % of base)
-76 : 314777.dasm (-15.51 % of base)
-72 : 588093.dasm (-2.88 % of base)
-72 : 179213.dasm (-3.14 % of base)
-56 : 80895.dasm (-2.90 % of base)
83 total files with Code Size differences (51 improved, 32 regressed), 20 unchanged.
Top method regressions (bytes):
74 (2.98 % of base) : 318097.dasm - System.IO.Tests.BaseSymbolicLinks_FileSystem:ResolveLinkTarget_Succeeds(System.String,ubyte):this (Tier1)
54 (1.01 % of base) : 527693.dasm - System.Tests.StringTests:WhiteSpaceAtStartAndEndTrim_Memory() (Tier0-FullOpts)
52 (6.16 % of base) : 645589.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.SymbolLoader:HasImplicitReferenceConversion(Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType):ubyte (Tier1)
50 (2.06 % of base) : 565478.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1)
48 (1.67 % of base) : 279988.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitUnliftedBinaryOp(int,System.Type,System.Type):this (Tier1)
44 (0.90 % of base) : 526885.dasm - System.Tests.StringTests:WhiteSpaceAtEndTrim_Memory() (Tier0-FullOpts)
36 (0.73 % of base) : 527916.dasm - System.Tests.StringTests:WhiteSpaceAtStartTrim_Memory() (Tier0-FullOpts)
30 (0.66 % of base) : 79403.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:CalculateUseSiteDiagnostic(byref):ubyte:this (Tier1)
26 (14.77 % of base) : 489540.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
26 (14.77 % of base) : 523448.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
24 (4.60 % of base) : 65744.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],ubyte):System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:this (Tier1)
22 (4.20 % of base) : 143746.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],ubyte):System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:this (Tier1)
22 (3.70 % of base) : 435123.dasm - System.Xml.XPath.XNodeNavigator:GetNextNamespaceDeclarationGlobal(System.Xml.Linq.XAttribute):System.Xml.Linq.XAttribute (Tier1)
18 (2.08 % of base) : 633353.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):this (Tier1)
18 (2.09 % of base) : 430517.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):this (Tier1)
18 (2.09 % of base) : 387864.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):this (Tier1)
18 (2.09 % of base) : 373528.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):this (Tier1)
18 (2.08 % of base) : 618836.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):this (Tier1)
16 (4.30 % of base) : 433695.dasm - System.Xml.XmlLoader:Load(System.Xml.XmlDocument,System.Xml.XmlReader,ubyte):this (Tier1)
14 (0.33 % of base) : 170438.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:CalculateUseSiteDiagnostic(byref):ubyte:this (Tier1)
Top method improvements (bytes):
-286 (-8.99 % of base) : 177275.dasm - Microsoft.CodeAnalysis.CSharp.RefSafetyAnalysis:GetValEscape(Microsoft.CodeAnalysis.CSharp.BoundExpression,uint):uint:this (Tier1)
-218 (-12.84 % of base) : 431559.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write59_XmlSchemaComplexType(System.String,System.String,System.Xml.Schema.XmlSchemaComplexType,ubyte,ubyte):this (Tier0-FullOpts)
-216 (-13.20 % of base) : 431586.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write28_XmlSchemaSimpleTypeRestriction(System.String,System.String,System.Xml.Schema.XmlSchemaSimpleTypeRestriction,ubyte,ubyte):this (Tier0-FullOpts)
-198 (-10.53 % of base) : 429209.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write63_XmlSchema(System.String,System.String,System.Xml.Schema.XmlSchema,ubyte,ubyte):this (Tier0-FullOpts)
-192 (-11.51 % of base) : 90498.dasm - Microsoft.CodeAnalysis.Shared.Utilities.AbstractSpeculationAnalyzer`8[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Conversion]:ReplacementChangesSemanticsForNode(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode):ubyte:this (Tier1)
-184 (-14.42 % of base) : 431565.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write57_Item(System.String,System.String,System.Xml.Schema.XmlSchemaComplexContentExtension,ubyte,ubyte):this (Tier0-FullOpts)
-162 (-4.74 % of base) : 66118.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
-162 (-4.78 % of base) : 172178.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
-140 (-7.99 % of base) : 431555.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write51_XmlSchemaElement(System.String,System.String,System.Xml.Schema.XmlSchemaElement,ubyte,ubyte):this (Tier0-FullOpts)
-114 (-7.94 % of base) : 697908.dasm - Microsoft.CodeAnalysis.Shared.Utilities.AbstractSpeculationAnalyzer`8[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Conversion]:ReplacementChangesSemanticsForNode(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode):ubyte:this (Tier1)
-100 (-1.87 % of base) : 526921.dasm - System.Tests.StringTests:TrimWhiteSpaceMultipleTimes_Memory() (Tier0-FullOpts)
-94 (-7.63 % of base) : 430774.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterAliasedTestType:Write2_AliasedTestType(System.String,System.String,AliasedTestType,ubyte,ubyte):this (Tier0-FullOpts)
-94 (-7.83 % of base) : 500646.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write54_XmlSchemaChoice(System.String,System.String,System.Xml.Schema.XmlSchemaChoice,ubyte,ubyte):this (Tier0-FullOpts)
-92 (-10.11 % of base) : 431581.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write31_XmlSchemaSimpleType(System.String,System.String,System.Xml.Schema.XmlSchemaSimpleType,ubyte,ubyte):this (Tier0-FullOpts)
-90 (-7.51 % of base) : 431573.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write53_XmlSchemaSequence(System.String,System.String,System.Xml.Schema.XmlSchemaSequence,ubyte,ubyte):this (Tier0-FullOpts)
-88 (-16.60 % of base) : 490060.dasm - System.Tuple`2[System.__Canon,System.__Canon]:Equals(System.Object,System.Collections.IEqualityComparer):ubyte:this (Tier1)
-76 (-15.51 % of base) : 314777.dasm - System.Tuple`2[System.__Canon,System.__Canon]:Equals(System.Object,System.Collections.IEqualityComparer):ubyte:this (Tier1)
-72 (-3.14 % of base) : 179213.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ExtractTupleElementNames(Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.ArgumentSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.ValueTuple`3[System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte] (Tier0-FullOpts)
-72 (-2.88 % of base) : 588093.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1)
-56 (-2.90 % of base) : 80895.dasm - Microsoft.CodeAnalysis.LanguageService.AbstractDeclaredSymbolInfoFactoryService`10[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:AddDeclaredSymbolInfos(Microsoft.CodeAnalysis.SyntaxNode,System.__Canon,Roslyn.Utilities.StringTable,System.String,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.FindSymbols.DeclaredSymbolInfo],System.Collections.Generic.Dictionary`2[System.String,System.String],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int]],System.String,System.String,System.Threading.CancellationToken):this (Tier0-FullOpts)
Top method regressions (percentages):
26 (14.77 % of base) : 489540.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
26 (14.77 % of base) : 523448.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
12 (8.11 % of base) : 675368.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:TryCastToImmutableMap(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],byref):ubyte (Tier1)
12 (8.11 % of base) : 162967.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:TryCastToImmutableMap(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],byref):ubyte (Tier1)
12 (8.11 % of base) : 149496.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:TryCastToImmutableMap(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],byref):ubyte (Tier1)
12 (8.11 % of base) : 108608.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:TryCastToImmutableMap(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],byref):ubyte (Tier1)
12 (8.11 % of base) : 168689.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:TryCastToImmutableMap(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],byref):ubyte (Tier1)
12 (8.11 % of base) : 695181.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.__Canon]:TryCastToImmutableMap(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],byref):ubyte (Tier1)
52 (6.16 % of base) : 645589.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.SymbolLoader:HasImplicitReferenceConversion(Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType):ubyte (Tier1)
6 (5.17 % of base) : 455841.dasm - OLEDB.Test.ModuleCore.CTestCase:get_TestModule():OLEDB.Test.ModuleCore.CTestModule:this (Tier1)
24 (4.60 % of base) : 65744.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],ubyte):System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:this (Tier1)
16 (4.30 % of base) : 433695.dasm - System.Xml.XmlLoader:Load(System.Xml.XmlDocument,System.Xml.XmlReader,ubyte):this (Tier1)
22 (4.20 % of base) : 143746.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],ubyte):System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:this (Tier1)
22 (3.70 % of base) : 435123.dasm - System.Xml.XPath.XNodeNavigator:GetNextNamespaceDeclarationGlobal(System.Xml.Linq.XAttribute):System.Xml.Linq.XAttribute (Tier1)
6 (3.06 % of base) : 712718.dasm - System.Threading.Tasks.TaskFactory`1+<>c[System.Threading.Tasks.VoidTaskResult]:<ContinueWhenAnyImpl>b__66_1(System.Threading.Tasks.Task`1[System.Threading.Tasks.Task],System.Object):System.Threading.Tasks.VoidTaskResult:this (Tier1)
74 (2.98 % of base) : 318097.dasm - System.IO.Tests.BaseSymbolicLinks_FileSystem:ResolveLinkTarget_Succeeds(System.String,ubyte):this (Tier1)
6 (2.86 % of base) : 448777.dasm - System.Xml.Schema.XsdBuilder:BuildIdentityConstraint_Refer(System.Xml.Schema.XsdBuilder,System.String) (Tier1)
12 (2.63 % of base) : 209132.dasm - System.Collections.Frozen.FrozenSetInternalBase`2[System.__Canon,System.Collections.Frozen.LengthBucketsFrozenSet+GSW]:ComparersAreCompatible(System.Collections.Generic.IReadOnlySet`1[System.__Canon]):ubyte:this (Tier1)
12 (2.63 % of base) : 209175.dasm - System.Collections.Frozen.FrozenSetInternalBase`2[System.__Canon,System.Collections.Frozen.OrdinalStringFrozenSet+GSW]:ComparersAreCompatible(System.Collections.Generic.IReadOnlySet`1[System.__Canon]):ubyte:this (Tier1)
6 (2.11 % of base) : 200224.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler+<>c:<.cctor>b__10_0(System.Object):this (Tier1)
Top method improvements (percentages):
-22 (-47.83 % of base) : 624420.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
-22 (-47.83 % of base) : 595454.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
-28 (-41.18 % of base) : 329741.dasm - System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]:<StartAsyncOperation>b__11_1(System.Object):this (Tier1)
-32 (-41.03 % of base) : 1319.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-20 (-40.00 % of base) : 61028.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (Tier1)
-28 (-40.00 % of base) : 130048.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
-40 (-39.22 % of base) : 432496.dasm - System.Xml.Serialization.ReflectionXmlSerializationReaderHelper+<>c__DisplayClass1_0`2[System.__Canon,System.__Canon]:<GetSetMemberValueDelegateWithType>b__0(System.Object,System.Object):this (Tier1)
-32 (-36.36 % of base) : 122799.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:CreateInstance[System.__Canon](System.IServiceProvider,System.Object[]):System.__Canon (Tier1)
-32 (-36.36 % of base) : 620815.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
-32 (-36.36 % of base) : 99793.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.ParameterInfo,ubyte):System.__Canon (Tier1)
-26 (-36.11 % of base) : 635459.dasm - System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1+<>c__DisplayClass15_0[System.__Canon]:<SetShouldSerialize>b__0(System.Object,System.Object):ubyte:this (Tier1)
-30 (-34.88 % of base) : 614258.dasm - System.Text.Json.Serialization.Tests.StructDictionary`2[System.__Canon,System.Text.Json.JsonElement]:Contains(System.Object):ubyte:this (Tier1)
-30 (-34.88 % of base) : 638657.dasm - System.Text.Json.Serialization.Tests.StructDictionary`2[System.__Canon,System.Text.Json.JsonElement]:Contains(System.Object):ubyte:this (Tier1)
-32 (-32.65 % of base) : 573212.dasm - Moq.Mock`1[System.__Canon]:get_Object():System.__Canon:this (Tier1)
-20 (-31.25 % of base) : 133208.dasm - Microsoft.Extensions.DependencyInjection.ServiceDescriptor:get_ImplementationFactory():System.Func`2[System.IServiceProvider,System.Object]:this (Tier1)
-24 (-30.77 % of base) : 130367.dasm - Xunit.Assert:IsAssignableFrom[System.__Canon](System.Object):System.__Canon (Tier1)
-24 (-30.77 % of base) : 121589.dasm - Xunit.Assert:IsType[System.__Canon](System.Object):System.__Canon (Tier1)
-22 (-29.73 % of base) : 148686.dasm - System.Composition.Hosting.Providers.Lazy.LazyWithMetadataExportDescriptorProvider+<>c__DisplayClass2_2`2[System.__Canon,System.__Canon]:<GetLazyDefinitions>b__4():System.__Canon:this (Tier1)
-22 (-29.73 % of base) : 108318.dasm - System.Composition.Hosting.Providers.Lazy.LazyWithMetadataExportDescriptorProvider+<>c__DisplayClass2_3`2[System.__Canon,System.__Canon]:<GetLazyDefinitions>b__4():System.__Canon:this (Tier1)
-24 (-29.27 % of base) : 122178.dasm - Microsoft.Extensions.DependencyInjection.Specification.DependencyInjectionSpecificationTests:CreateInstance[System.__Canon](Microsoft.Extensions.DependencyInjection.Specification.DependencyInjectionSpecificationTests+CreateInstanceFunc,System.IServiceProvider,System.Object[]):System.__Canon (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: 76220792 (overridden on cmd)
Total bytes of diff: 76208194 (overridden on cmd)
Total bytes of delta: -12598 (-0.02 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
152 : 213975.dasm (35.51 % of base)
148 : 206853.dasm (32.03 % of base)
130 : 202527.dasm (32.02 % of base)
80 : 181416.dasm (4.63 % of base)
58 : 70194.dasm (2.61 % of base)
30 : 94851.dasm (88.24 % of base)
26 : 94737.dasm (43.33 % of base)
26 : 91476.dasm (43.33 % of base)
12 : 76126.dasm (1.15 % of base)
12 : 69846.dasm (0.98 % of base)
10 : 4115.dasm (1.44 % of base)
8 : 74606.dasm (0.87 % of base)
6 : 155412.dasm (4.17 % of base)
6 : 77100.dasm (0.44 % of base)
6 : 77257.dasm (0.62 % of base)
4 : 37991.dasm (1.75 % of base)
4 : 67046.dasm (0.69 % of base)
4 : 96840.dasm (4.55 % of base)
4 : 156977.dasm (1.37 % of base)
2 : 68607.dasm (0.33 % of base)
Top file improvements (bytes):
-400 : 61560.dasm (-23.92 % of base)
-266 : 305548.dasm (-5.03 % of base)
-234 : 208960.dasm (-5.18 % of base)
-220 : 167225.dasm (-13.41 % of base)
-218 : 167219.dasm (-12.84 % of base)
-202 : 166108.dasm (-10.73 % of base)
-178 : 14810.dasm (-16.79 % of base)
-158 : 167221.dasm (-12.64 % of base)
-138 : 204102.dasm (-11.46 % of base)
-122 : 203987.dasm (-9.47 % of base)
-120 : 167217.dasm (-6.96 % of base)
-102 : 166790.dasm (-8.24 % of base)
-98 : 196223.dasm (-5.82 % of base)
-98 : 194854.dasm (-5.82 % of base)
-94 : 167222.dasm (-7.83 % of base)
-94 : 199053.dasm (-7.83 % of base)
-92 : 167224.dasm (-10.04 % of base)
-64 : 18882.dasm (-9.38 % of base)
-56 : 23335.dasm (-2.90 % of base)
-56 : 91635.dasm (-17.28 % of base)
76 total files with Code Size differences (55 improved, 21 regressed), 14 unchanged.
Top method regressions (bytes):
152 (35.51 % of base) : 213975.dasm - System.Tests.Int32Tests_GenericMath:CreateCheckedFromIntPtrTest() (FullOpts)
148 (32.03 % of base) : 206853.dasm - System.Tests.Int64Tests_GenericMath:CreateCheckedFromUIntPtrTest() (FullOpts)
130 (32.02 % of base) : 202527.dasm - System.Tests.UInt32Tests_GenericMath:CreateCheckedFromUIntPtrTest() (FullOpts)
80 (4.63 % of base) : 181416.dasm - System.Reflection.Tests.GetCustomAttributes_Compat:GetCustomAttributes_thisAsm():this (FullOpts)
58 (2.61 % of base) : 70194.dasm - System.Collections.Immutable.Tests.ImmutableSortedDictionaryTest:ToUnorderedTest():this (FullOpts)
30 (88.24 % of base) : 94851.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0:<Insert>b__2():this (FullOpts)
26 (43.33 % of base) : 91476.dasm - System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
26 (43.33 % of base) : 94737.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
12 (1.15 % of base) : 76126.dasm - System.Collections.Generic.SortedList`2[System.__Canon,System.__Canon]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
12 (0.98 % of base) : 69846.dasm - System.Collections.Immutable.Tests.ImmutableQueueTest:EnqueueDequeueTestHelper[System.__Canon](System.__Canon[]):this (FullOpts)
10 (1.44 % of base) : 4115.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
8 (0.87 % of base) : 74606.dasm - System.Collections.Generic.SortedSet`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
6 (0.62 % of base) : 77257.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:IntersectWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (FullOpts)
6 (0.44 % of base) : 77100.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (FullOpts)
6 (4.17 % of base) : 155412.dasm - System.Net.Security.SslStream:MakeEx(System.Security.Cryptography.X509Certificates.X509Certificate):System.Security.Cryptography.X509Certificates.X509Certificate2 (FullOpts)
4 (1.75 % of base) : 37991.dasm - FluentAssertions.Primitives.StringAssertions`1[System.__Canon]:Be(System.String,System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
4 (0.69 % of base) : 67046.dasm - System.Collections.Frozen.FrozenSetInternalBase`2[System.__Canon,System.Collections.Frozen.SmallFrozenSet`1+GSW[System.__Canon]]:ComparersAreCompatible(System.Collections.Generic.IReadOnlySet`1[System.__Canon]):ubyte:this (FullOpts)
4 (4.55 % of base) : 96840.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
4 (1.37 % of base) : 156977.dasm - System.Net.NegotiateAuthenticationPal:CheckHasSystemNetSecurityNative():ubyte (FullOpts)
2 (0.33 % of base) : 68607.dasm - System.Collections.Generic.SortedDictionary`2[System.__Canon,int]:.ctor(System.Collections.Generic.IDictionary`2[System.__Canon,int],System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
Top method improvements (bytes):
-400 (-23.92 % of base) : 61560.dasm - System.CodeDom.Compiler.CodeGenerator:GenerateExpression(System.CodeDom.CodeExpression):this (FullOpts)
-266 (-5.03 % of base) : 305548.dasm - System.Tests.ValueTupleTests+ValueTupleTestDriver`10[short,int,long,System.__Canon,ushort,float,double,System.DateTime,System.ValueTuple`2[ubyte,System.__Canon],System.TimeSpan]:.ctor(System.Object[]):this (FullOpts)
-234 (-5.18 % of base) : 208960.dasm - System.Tests.TupleTests+TupleTestDriver`10[short,int,long,System.__Canon,ushort,float,double,System.DateTime,System.__Canon,System.TimeSpan]:.ctor(System.Object[]):this (FullOpts)
-220 (-13.41 % of base) : 167225.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write28_XmlSchemaSimpleTypeRestriction(System.String,System.String,System.Xml.Schema.XmlSchemaSimpleTypeRestriction,ubyte,ubyte):this (FullOpts)
-218 (-12.84 % of base) : 167219.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write59_XmlSchemaComplexType(System.String,System.String,System.Xml.Schema.XmlSchemaComplexType,ubyte,ubyte):this (FullOpts)
-202 (-10.73 % of base) : 166108.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write63_XmlSchema(System.String,System.String,System.Xml.Schema.XmlSchema,ubyte,ubyte):this (FullOpts)
-178 (-16.79 % of base) : 14810.dasm - Microsoft.CodeAnalysis.Shared.Utilities.AbstractSpeculationAnalyzer`8[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Conversion]:ReplacementChangesSemanticsForNode(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode):ubyte:this (FullOpts)
-158 (-12.64 % of base) : 167221.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write57_Item(System.String,System.String,System.Xml.Schema.XmlSchemaComplexContentExtension,ubyte,ubyte):this (FullOpts)
-138 (-11.46 % of base) : 204102.dasm - System.Tests.ArrayTests:Sort_Array_Generic[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon[]) (FullOpts)
-122 (-9.47 % of base) : 203987.dasm - System.Tests.ArrayTests:Sort_Array_Array_Generic[System.__Canon](System.__Canon[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon[],System.__Canon[]) (FullOpts)
-120 (-6.96 % of base) : 167217.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write51_XmlSchemaElement(System.String,System.String,System.Xml.Schema.XmlSchemaElement,ubyte,ubyte):this (FullOpts)
-102 (-8.24 % of base) : 166790.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterAliasedTestType:Write2_AliasedTestType(System.String,System.String,AliasedTestType,ubyte,ubyte):this (FullOpts)
-98 (-5.82 % of base) : 196223.dasm - DataContractJsonSerializerTests:DCJS_SuspensionManager() (FullOpts)
-98 (-5.82 % of base) : 194854.dasm - DataContractJsonSerializerTests:DCJS_SuspensionManager() (FullOpts)
-94 (-7.83 % of base) : 167222.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write53_XmlSchemaSequence(System.String,System.String,System.Xml.Schema.XmlSchemaSequence,ubyte,ubyte):this (FullOpts)
-94 (-7.83 % of base) : 199053.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write54_XmlSchemaChoice(System.String,System.String,System.Xml.Schema.XmlSchemaChoice,ubyte,ubyte):this (FullOpts)
-92 (-10.04 % of base) : 167224.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write31_XmlSchemaSimpleType(System.String,System.String,System.Xml.Schema.XmlSchemaSimpleType,ubyte,ubyte):this (FullOpts)
-64 (-9.38 % of base) : 18882.dasm - System.Runtime.InteropServices.Marshalling.ComVariant:As[System.__Canon]():System.__Canon:this (FullOpts)
-56 (-2.90 % of base) : 23335.dasm - Microsoft.CodeAnalysis.LanguageService.AbstractDeclaredSymbolInfoFactoryService`10[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:AddDeclaredSymbolInfos(Microsoft.CodeAnalysis.SyntaxNode,System.__Canon,Roslyn.Utilities.StringTable,System.String,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.FindSymbols.DeclaredSymbolInfo],System.Collections.Generic.Dictionary`2[System.String,System.String],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int]],System.String,System.String,System.Threading.CancellationToken):this (FullOpts)
-56 (-17.28 % of base) : 91635.dasm - System.Xml.Schema.Compiler:CanonicalizeParticle(System.Xml.Schema.XmlSchemaParticle,ubyte):System.Xml.Schema.XmlSchemaParticle:this (FullOpts)
Top method regressions (percentages):
30 (88.24 % of base) : 94851.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0:<Insert>b__2():this (FullOpts)
26 (43.33 % of base) : 91476.dasm - System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
26 (43.33 % of base) : 94737.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
152 (35.51 % of base) : 213975.dasm - System.Tests.Int32Tests_GenericMath:CreateCheckedFromIntPtrTest() (FullOpts)
148 (32.03 % of base) : 206853.dasm - System.Tests.Int64Tests_GenericMath:CreateCheckedFromUIntPtrTest() (FullOpts)
130 (32.02 % of base) : 202527.dasm - System.Tests.UInt32Tests_GenericMath:CreateCheckedFromUIntPtrTest() (FullOpts)
80 (4.63 % of base) : 181416.dasm - System.Reflection.Tests.GetCustomAttributes_Compat:GetCustomAttributes_thisAsm():this (FullOpts)
4 (4.55 % of base) : 96840.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
6 (4.17 % of base) : 155412.dasm - System.Net.Security.SslStream:MakeEx(System.Security.Cryptography.X509Certificates.X509Certificate):System.Security.Cryptography.X509Certificates.X509Certificate2 (FullOpts)
58 (2.61 % of base) : 70194.dasm - System.Collections.Immutable.Tests.ImmutableSortedDictionaryTest:ToUnorderedTest():this (FullOpts)
4 (1.75 % of base) : 37991.dasm - FluentAssertions.Primitives.StringAssertions`1[System.__Canon]:Be(System.String,System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
10 (1.44 % of base) : 4115.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
4 (1.37 % of base) : 156977.dasm - System.Net.NegotiateAuthenticationPal:CheckHasSystemNetSecurityNative():ubyte (FullOpts)
12 (1.15 % of base) : 76126.dasm - System.Collections.Generic.SortedList`2[System.__Canon,System.__Canon]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
12 (0.98 % of base) : 69846.dasm - System.Collections.Immutable.Tests.ImmutableQueueTest:EnqueueDequeueTestHelper[System.__Canon](System.__Canon[]):this (FullOpts)
8 (0.87 % of base) : 74606.dasm - System.Collections.Generic.SortedSet`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
4 (0.69 % of base) : 67046.dasm - System.Collections.Frozen.FrozenSetInternalBase`2[System.__Canon,System.Collections.Frozen.SmallFrozenSet`1+GSW[System.__Canon]]:ComparersAreCompatible(System.Collections.Generic.IReadOnlySet`1[System.__Canon]):ubyte:this (FullOpts)
6 (0.62 % of base) : 77257.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:IntersectWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (FullOpts)
6 (0.44 % of base) : 77100.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (FullOpts)
2 (0.33 % of base) : 68607.dasm - System.Collections.Generic.SortedDictionary`2[System.__Canon,int]:.ctor(System.Collections.Generic.IDictionary`2[System.__Canon,int],System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
Top method improvements (percentages):
-28 (-51.85 % of base) : 87886.dasm - System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]:<GetMetadataViewProvider>b__1_0(System.Collections.Generic.IDictionary`2[System.String,System.Object]):System.__Canon:this (FullOpts)
-28 (-51.85 % of base) : 133529.dasm - System.Linq.ParallelQuery`1+<>c__2`1[System.__Canon,System.__Canon]:<OfType>b__2_1(System.__Canon):System.__Canon:this (FullOpts)
-28 (-50.00 % of base) : 42656.dasm - Microsoft.CodeAnalysis.Options.Option`1[System.__Canon]:Microsoft.CodeAnalysis.Options.IOption.get_DefaultValue():System.Object:this (FullOpts)
-28 (-50.00 % of base) : 48290.dasm - Microsoft.CodeAnalysis.Options.Option`1[System.__Canon]:Microsoft.CodeAnalysis.Options.IOption.get_DefaultValue():System.Object:this (FullOpts)
-28 (-50.00 % of base) : 42650.dasm - Microsoft.CodeAnalysis.Options.Option2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
-28 (-50.00 % of base) : 48287.dasm - Microsoft.CodeAnalysis.Options.Option2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
-28 (-50.00 % of base) : 42648.dasm - Microsoft.CodeAnalysis.Options.PerLanguageOption2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
-28 (-50.00 % of base) : 48284.dasm - Microsoft.CodeAnalysis.Options.PerLanguageOption2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
-22 (-47.83 % of base) : 35051.dasm - LamarCodeGeneration.Util.TypeExtensions:As[System.__Canon](System.Object):System.__Canon (FullOpts)
-22 (-47.83 % of base) : 142063.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
-20 (-43.48 % of base) : 29918.dasm - Microsoft.Extensions.Configuration.Binder.SourceGeneration.BindingHelperInfo+Builder+<>c:<ToIncrementalValue>b__7_2[System.__Canon](Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec):System.__Canon:this (FullOpts)
-30 (-42.86 % of base) : 194869.dasm - System.Runtime.Serialization.KeyValue`2[System.__Canon,System.__Canon]:System.Runtime.Serialization.IKeyValue.set_Key(System.Object):this (FullOpts)
-30 (-42.86 % of base) : 194871.dasm - System.Runtime.Serialization.KeyValue`2[System.__Canon,System.__Canon]:System.Runtime.Serialization.IKeyValue.set_Value(System.Object):this (FullOpts)
-30 (-41.67 % of base) : 70891.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,int]:System.Collections.IDictionary.Remove(System.Object):this (FullOpts)
-30 (-41.67 % of base) : 68792.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,int]:System.Collections.IDictionary.Remove(System.Object):this (FullOpts)
-28 (-41.18 % of base) : 98498.dasm - System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]:<StartAsyncOperation>b__11_1(System.Object):this (FullOpts)
-40 (-39.22 % of base) : 165261.dasm - System.Xml.Serialization.ReflectionXmlSerializationReaderHelper+<>c__DisplayClass1_0`2[System.__Canon,System.__Canon]:<GetSetMemberValueDelegateWithType>b__0(System.Object,System.Object):this (FullOpts)
-26 (-37.14 % of base) : 186759.dasm - System.Resources.ResourceReader+<>c__DisplayClass7_0`1[System.__Canon]:<CreateUntypedDelegate>b__0(System.Object,System.IO.Stream):System.Object:this (FullOpts)
-26 (-36.11 % of base) : 39509.dasm - Microsoft.Extensions.Hosting.Internal.ConfigureContainerAdapter`1[System.__Canon]:ConfigureContainer(Microsoft.Extensions.Hosting.HostBuilderContext,System.Object):this (FullOpts)
-26 (-36.11 % of base) : 70698.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (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: 10142178 (overridden on cmd)
Total bytes of diff: 10139850 (overridden on cmd)
Total bytes of delta: -2328 (-0.02 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
10 : 37055.dasm (2.60 % of base)
2 : 29892.dasm (0.24 % of base)
Top file improvements (bytes):
-62 : 36976.dasm (-22.79 % of base)
-52 : 36593.dasm (-3.02 % of base)
-44 : 36623.dasm (-20.37 % of base)
-42 : 8772.dasm (-1.10 % of base)
-40 : 34938.dasm (-8.58 % of base)
-38 : 36618.dasm (-23.46 % of base)
-36 : 32563.dasm (-5.41 % of base)
-36 : 8460.dasm (-6.36 % of base)
-36 : 9591.dasm (-27.69 % of base)
-36 : 14114.dasm (-18.18 % of base)
-32 : 436.dasm (-41.03 % of base)
-30 : 36993.dasm (-28.30 % of base)
-30 : 5802.dasm (-19.23 % of base)
-30 : 773.dasm (-20.55 % of base)
-30 : 7937.dasm (-2.07 % of base)
-28 : 12193.dasm (-23.73 % of base)
-28 : 21027.dasm (-5.36 % of base)
-28 : 37676.dasm (-51.85 % of base)
-28 : 5570.dasm (-27.45 % of base)
-28 : 5814.dasm (-13.33 % of base)
60 total files with Code Size differences (58 improved, 2 regressed), 4 unchanged.
Top method regressions (bytes):
10 (2.60 % of base) : 37055.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]:<.cctor>b__4_0(System.Object):this (FullOpts)
2 (0.24 % of base) : 29892.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitAwaitableInfo(Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
Top method improvements (bytes):
-62 (-22.79 % of base) : 36976.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Invoke(System.Object,System.Object,System.Object,System.Object,System.Object):System.Object:this (FullOpts)
-52 (-3.02 % of base) : 36593.dasm - System.Management.Automation.ScriptBlock:BindArgumentsForScriptblockInvoke(System.Management.Automation.RuntimeDefinedParameter[],System.Object[],System.Management.Automation.ExecutionContext,ubyte,System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.PSVariable],System.Management.Automation.MutableTuple):System.Object[] (FullOpts)
-44 (-20.37 % of base) : 36623.dasm - System.Management.Automation.Interpreter.DynamicInstruction`3[System.__Canon,System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-42 (-1.10 % of base) : 8772.dasm - FSharp.Compiler.NameResolution:ResolveTypeLongIdentPrim(FSharp.Compiler.NameResolution+TcResultsSink,FSharp.Compiler.NameResolution+NameResolver,FSharp.Compiler.NameResolution+ItemOccurence,ubyte,FSharp.Compiler.NameResolution+FullyQualifiedFlag,FSharp.Compiler.Text.Range,FSharp.Compiler.NameResolution+NameResolutionEnv,FSharp.Compiler.AccessibilityLogic+AccessorDomain,FSharp.Compiler.Syntax.Ident,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.Ident],FSharp.Compiler.NameResolution+TypeNameResolutionStaticArgsInfo,FSharp.Compiler.NameResolution+PermitDirectReferenceToGeneratedType):Internal.Utilities.Library.ResultOrException`1[System.Tuple`2[FSharp.Compiler.NameResolution+ResolutionInfo,FSharp.Compiler.TypedTree+EntityRef]] (FullOpts)
-40 (-8.58 % of base) : 34938.dasm - System.Management.Automation.SessionStateScope:CreateFunction(System.String,System.Management.Automation.ScriptBlock,System.Management.Automation.FunctionInfo,int,System.Management.Automation.ExecutionContext,System.String):System.Management.Automation.FunctionInfo (FullOpts)
-38 (-23.46 % of base) : 36618.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`2[System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-36 (-6.36 % of base) : 8460.dasm - FSharp.Compiler.CheckDeclarations+TcDeclarations:SplitTyconDefn(FSharp.Compiler.Syntax.SynTypeDefn):System.Tuple`2[FSharp.Compiler.CheckDeclarations+MutRecDefnsPhase1DataForTycon,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynMemberDefn]] (FullOpts)
-36 (-18.18 % of base) : 14114.dasm - FSharp.Compiler.CompilerDiagnostics:GetWarningLevel(FSharp.Compiler.ErrorLogger+PhasedDiagnostic):int (FullOpts)
-36 (-27.69 % of base) : 9591.dasm - FSharp.Compiler.TypedTreeOps:targetOfSuccessDecisionTree(FSharp.Compiler.TypedTree+DecisionTree):Microsoft.FSharp.Core.FSharpOption`1[int] (FullOpts)
-36 (-5.41 % of base) : 32563.dasm - Microsoft.CodeAnalysis.CSharp.AsyncMethodBuilderMemberCollection:TryGetBuilderMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.SyntheticBoundNodeFactory,System.Nullable`1[int],Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,ubyte,byref):ubyte (FullOpts)
-32 (-41.03 % of base) : 436.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
-30 (-20.55 % of base) : 773.dasm - BenchmarkDotNet.Characteristics.Characteristic`1[System.__Canon]:ResolveValueCore(BenchmarkDotNet.Characteristics.CharacteristicObject,System.Object):System.Object:this (FullOpts)
-30 (-2.07 % of base) : 7937.dasm - FSharp.Compiler.Lexer:endline(FSharp.Compiler.ParseHelpers+LexerEndlineContinuation,FSharp.Compiler.Lexhelp+LexArgs,ubyte,Internal.Utilities.Text.Lexing.LexBuffer`1[ushort]):FSharp.Compiler.Parser+token (FullOpts)
-30 (-28.30 % of base) : 36993.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`1[System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-30 (-19.23 % of base) : 5802.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)
-28 (-27.45 % of base) : 5570.dasm - FSharp.Compiler.ParseAndCheckInputs+PostParseModuleImpls@183:Invoke(FSharp.Compiler.Syntax.ParsedImplFileFragment):Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.Ident]]:this (FullOpts)
-28 (-24.56 % of base) : 10726.dasm - FSharp.Compiler.TypedTreeBasics:ccuOfTyconRef(FSharp.Compiler.TypedTree+EntityRef):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk] (FullOpts)
-28 (-23.73 % of base) : 12193.dasm - FSharp.Compiler.TypedTreeOps:remapAttribKind(FSharp.Compiler.TypedTreeOps+Remap,FSharp.Compiler.TypedTree+AttribKind):FSharp.Compiler.TypedTree+AttribKind (FullOpts)
-28 (-5.36 % of base) : 21027.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithAnnotationsGreen[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxAnnotation]):System.__Canon (FullOpts)
-28 (-15.56 % of base) : 37587.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)
Top method regressions (percentages):
10 (2.60 % of base) : 37055.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]:<.cctor>b__4_0(System.Object):this (FullOpts)
2 (0.24 % of base) : 29892.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitAwaitableInfo(Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
Top method improvements (percentages):
-28 (-51.85 % of base) : 37676.dasm - System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]:<GetCustomAttributes>b__7_1(System.Object):System.__Canon:this (FullOpts)
-32 (-41.03 % of base) : 436.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
-24 (-31.58 % of base) : 976.dasm - BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:Freeze():System.__Canon:this (FullOpts)
-22 (-31.43 % of base) : 34827.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
-30 (-28.30 % of base) : 36993.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`1[System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-36 (-27.69 % of base) : 9591.dasm - FSharp.Compiler.TypedTreeOps:targetOfSuccessDecisionTree(FSharp.Compiler.TypedTree+DecisionTree):Microsoft.FSharp.Core.FSharpOption`1[int] (FullOpts)
-28 (-27.45 % of base) : 5570.dasm - FSharp.Compiler.ParseAndCheckInputs+PostParseModuleImpls@183:Invoke(FSharp.Compiler.Syntax.ParsedImplFileFragment):Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.Ident]]:this (FullOpts)
-28 (-24.56 % of base) : 10726.dasm - FSharp.Compiler.TypedTreeBasics:ccuOfTyconRef(FSharp.Compiler.TypedTree+EntityRef):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk] (FullOpts)
-28 (-23.73 % of base) : 12193.dasm - FSharp.Compiler.TypedTreeOps:remapAttribKind(FSharp.Compiler.TypedTreeOps+Remap,FSharp.Compiler.TypedTree+AttribKind):FSharp.Compiler.TypedTree+AttribKind (FullOpts)
-18 (-23.68 % of base) : 23481.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
-38 (-23.46 % of base) : 36618.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`2[System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-62 (-22.79 % of base) : 36976.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Invoke(System.Object,System.Object,System.Object,System.Object,System.Object):System.Object:this (FullOpts)
-14 (-21.21 % of base) : 21772.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithDiagnosticsGreen[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.DiagnosticInfo[]):System.__Canon (FullOpts)
-30 (-20.55 % of base) : 773.dasm - BenchmarkDotNet.Characteristics.Characteristic`1[System.__Canon]:ResolveValueCore(BenchmarkDotNet.Characteristics.CharacteristicObject,System.Object):System.Object:this (FullOpts)
-44 (-20.37 % of base) : 36623.dasm - System.Management.Automation.Interpreter.DynamicInstruction`3[System.__Canon,System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-30 (-19.23 % of base) : 5802.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)
-36 (-18.18 % of base) : 14114.dasm - FSharp.Compiler.CompilerDiagnostics:GetWarningLevel(FSharp.Compiler.ErrorLogger+PhasedDiagnostic):int (FullOpts)
-22 (-17.46 % of base) : 37066.dasm - System.Management.Automation.Interpreter.DynamicInstruction`2[System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-14 (-16.67 % of base) : 21491.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
-26 (-16.25 % of base) : 36588.dasm - System.Management.Automation.LanguagePrimitives:ConvertTo[System.__Canon](System.Object):System.__Canon (FullOpts)
windows x86
Diffs are based on 2,165,680 contexts (837,213 MinOpts, 1,328,467 FullOpts).
MISSED contexts: base: 0 (0.00%), diff: 126,838 (5.53%)
Overall (-87,302 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.windows.x86.checked.mch |
5,980,860 |
-1,173 |
| benchmarks.run_pgo.windows.x86.checked.mch |
27,314,129 |
-15,223 |
| benchmarks.run_tiered.windows.x86.checked.mch |
8,634,134 |
-690 |
| coreclr_tests.run.windows.x86.checked.mch |
291,128,494 |
-2,850 |
| libraries.crossgen2.windows.x86.checked.mch |
31,699,024 |
-29,758 |
| libraries.pmi.windows.x86.checked.mch |
36,396,395 |
-8,486 |
| libraries_tests.run.windows.x86.Release.mch |
157,355,291 |
-13,759 |
| librariestestsnotieredcompilation.run.windows.x86.Release.mch |
89,450,088 |
-13,035 |
| realworld.run.windows.x86.checked.mch |
7,928,176 |
-2,328 |
FullOpts (-87,302 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.windows.x86.checked.mch |
5,980,579 |
-1,173 |
| benchmarks.run_pgo.windows.x86.checked.mch |
20,759,622 |
-15,223 |
| benchmarks.run_tiered.windows.x86.checked.mch |
4,365,997 |
-690 |
| coreclr_tests.run.windows.x86.checked.mch |
89,300,911 |
-2,850 |
| libraries.crossgen2.windows.x86.checked.mch |
31,697,964 |
-29,758 |
| libraries.pmi.windows.x86.checked.mch |
36,301,162 |
-8,486 |
| libraries_tests.run.windows.x86.Release.mch |
59,778,090 |
-13,759 |
| librariestestsnotieredcompilation.run.windows.x86.Release.mch |
80,770,009 |
-13,035 |
| realworld.run.windows.x86.checked.mch |
7,632,462 |
-2,328 |
Example diffs
benchmarks.run.windows.x86.checked.mch
-14 (-41.18%) : 7049.dasm - System.Collections.ContainsKeyTrue`2+<>c[System.Canon,System.Canon]:b10_1(System.Canon):System.__Canon:this (FullOpts)
@@ -2,51 +2,35 @@
; Emitting BLENDED_CODE for X86 with AVX512 - Windows
; FullOpts code
; optimized code
-; ebp based frame
+; esp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 2.25) ref -> esi this class-hnd single-def <System.Collections.ContainsKeyTrue`2+<>c[System.__Canon,System.__Canon]>
-; V01 arg1 [V01,T01] ( 4, 3.12) ref -> edx class-hnd single-def <System.__Canon>
-; V02 tmp0 [V02,T03] ( 3, 1.25) int -> ecx "fgMakeTemp is creating a new local variable"
-; V03 tmp1 [V03,T00] ( 5, 6.75) ref -> eax class-hnd "spilling QMark2" <System.__Canon>
+; V00 this [V00,T00] ( 3, 3 ) ref -> esi this class-hnd single-def <System.Collections.ContainsKeyTrue`2+<>c[System.__Canon,System.__Canon]>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> edx class-hnd single-def <System.__Canon>
;
; Lcl frame size = 0
G_M11807_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- push ebp
- mov ebp, esp
push esi
mov esi, ecx
- ; gcrRegs +[esi]
- ;; size=6 bbWeight=1 PerfScore 2.50
-G_M11807_IG02: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[edx]
- mov eax, edx
- ; gcrRegs +[eax]
- test eax, eax
- je SHORT G_M11807_IG05
- ;; size=6 bbWeight=1 PerfScore 1.50
-G_M11807_IG03: ; bbWeight=0.25, gcrefRegs=00000045 {eax edx esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=3 bbWeight=1 PerfScore 1.25
+G_M11807_IG02: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs +[edx esi]
mov ecx, dword ptr [esi]
mov ecx, dword ptr [ecx+0x24]
mov ecx, dword ptr [ecx]
mov ecx, dword ptr [ecx+0x04]
- cmp dword ptr [eax], ecx
- je SHORT G_M11807_IG05
- ;; size=14 bbWeight=0.25 PerfScore 3.00
-G_M11807_IG04: ; bbWeight=0.12, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[edx] +[eax]
- ;; size=5 bbWeight=0.12 PerfScore 0.12
-G_M11807_IG05: ; bbWeight=1, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ; gcr arg pop 0
+ ;; size=15 bbWeight=1 PerfScore 9.00
+G_M11807_IG03: ; bbWeight=1, epilog, nogc, extend
pop esi
- pop ebp
ret
- ;; size=3 bbWeight=1 PerfScore 2.00
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 34, prolog size 4, PerfScore 9.12, instruction count 17, allocated bytes for code 34 (MethodHash=4ad6d1e0) for method System.Collections.ContainsKeyTrue`2+<>c[System.__Canon,System.__Canon]:<Setup>b__10_1(System.__Canon):System.__Canon:this (FullOpts)
+; Total bytes of code 20, prolog size 1, PerfScore 11.75, instruction count 9, allocated bytes for code 20 (MethodHash=4ad6d1e0) for method System.Collections.ContainsKeyTrue`2+<>c[System.__Canon,System.__Canon]:<Setup>b__10_1(System.__Canon):System.__Canon:this (FullOpts)
; ============================================================
-16 (-39.02%) : 3752.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (FullOpts)
@@ -7,11 +7,9 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 4, 3.12) ref -> eax class-hnd single-def <System.Object>
-; V01 TypeCtx [V01,T01] ( 4, 3.25) int -> edx single-def
+; V00 arg0 [V00,T01] ( 3, 3 ) ref -> eax class-hnd single-def <System.Object>
+; V01 TypeCtx [V01,T00] ( 4, 4 ) int -> edx single-def
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
-; V03 loc1 [V03,T03] ( 3, 1.25) int -> edx "fgMakeTemp is creating a new local variable"
-; V04 tmp1 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 4
@@ -23,39 +21,20 @@ G_M8451_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
mov eax, ecx
; gcrRegs +[eax]
;; size=9 bbWeight=1 PerfScore 3.50
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
- mov ecx, eax
- ; gcrRegs +[ecx]
- test ecx, ecx
- je SHORT G_M8451_IG05
- ;; size=6 bbWeight=1 PerfScore 1.50
-G_M8451_IG03: ; bbWeight=0.25, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz
- mov edx, dword ptr [edx+0x20]
- mov edx, dword ptr [edx]
- cmp dword ptr [ecx], edx
- je SHORT G_M8451_IG05
- ;; size=9 bbWeight=0.25 PerfScore 2.00
-G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[ecx]
- mov ecx, edx
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
+ mov ecx, dword ptr [edx+0x20]
+ mov ecx, dword ptr [ecx]
mov edx, eax
; gcrRegs +[edx]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[edx]
- mov ecx, eax
- ; gcrRegs +[ecx]
- ;; size=11 bbWeight=0.12 PerfScore 0.22
-G_M8451_IG05: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
- mov eax, ecx
- ; gcrRegs +[eax]
- ;; size=2 bbWeight=1 PerfScore 0.25
-G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 5.25
+G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
mov esp, ebp
pop ebp
ret
;; size=4 bbWeight=1 PerfScore 1.75
-; Total bytes of code 41, prolog size 7, PerfScore 9.22, instruction count 20, allocated bytes for code 41 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 25, prolog size 7, PerfScore 10.50, instruction count 12, allocated bytes for code 25 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================
-18 (-38.30%) : 12004.dasm - System.Threading.AsyncLocal`1[System.Canon]:get_Value():System.Canon:this (FullOpts)
@@ -2,64 +2,43 @@
; Emitting BLENDED_CODE for X86 with AVX512 - Windows
; FullOpts code
; optimized code
-; ebp based frame
+; esp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 4, 3.25) ref -> esi this class-hnd single-def <System.Threading.AsyncLocal`1[System.__Canon]>
-; V01 loc0 [V01,T02] ( 3, 2.12) ref -> eax class-hnd single-def <System.Object>
+; V00 this [V00,T00] ( 4, 4 ) ref -> esi this class-hnd single-def <System.Threading.AsyncLocal`1[System.__Canon]>
+; V01 loc0 [V01,T01] ( 2, 2 ) ref -> edx class-hnd single-def <System.Object>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
-; V03 tmp0 [V03,T03] ( 3, 1.25) int -> ecx "fgMakeTemp is creating a new local variable"
-; V04 tmp1 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 0
G_M1970_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- push ebp
- mov ebp, esp
push esi
mov esi, ecx
+ ;; size=3 bbWeight=1 PerfScore 1.25
+G_M1970_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs +[esi]
- ;; size=6 bbWeight=1 PerfScore 2.50
-G_M1970_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, esi
; gcrRegs +[ecx]
call [System.Threading.ExecutionContext:GetLocalValue(System.Threading.IAsyncLocal):System.Object]
; gcrRegs -[ecx] +[eax]
+ ; gcr arg pop 0
mov edx, eax
; gcrRegs +[edx]
- test edx, edx
- je SHORT G_M1970_IG05
- ;; size=14 bbWeight=1 PerfScore 4.75
-G_M1970_IG03: ; bbWeight=0.25, gcrefRegs=00000045 {eax edx esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [esi]
mov ecx, dword ptr [ecx+0x24]
mov ecx, dword ptr [ecx]
mov ecx, dword ptr [ecx]
- cmp dword ptr [edx], ecx
- je SHORT G_M1970_IG05
- ;; size=13 bbWeight=0.25 PerfScore 3.00
-G_M1970_IG04: ; bbWeight=0.12, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[edx]
- mov edx, eax
- ; gcrRegs +[edx]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[edx]
- mov edx, eax
- ; gcrRegs +[edx]
- ;; size=9 bbWeight=0.12 PerfScore 0.19
-G_M1970_IG05: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
- mov eax, edx
- ; gcrRegs +[eax]
- ;; size=2 bbWeight=1 PerfScore 0.25
-G_M1970_IG06: ; bbWeight=1, epilog, nogc, extend
+ ; gcr arg pop 0
+ ;; size=24 bbWeight=1 PerfScore 12.50
+G_M1970_IG03: ; bbWeight=1, epilog, nogc, extend
pop esi
- pop ebp
ret
- ;; size=3 bbWeight=1 PerfScore 2.00
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 47, prolog size 4, PerfScore 12.69, instruction count 22, allocated bytes for code 47 (MethodHash=11a2f84d) for method System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (FullOpts)
+; Total bytes of code 29, prolog size 1, PerfScore 15.25, instruction count 12, allocated bytes for code 29 (MethodHash=11a2f84d) for method System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (FullOpts)
; ============================================================
+6 (+9.68%) : 16056.dasm - PerfLabTests.CastingPerf:IntObj():this (FullOpts)
@@ -8,11 +8,9 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf>
-; V01 loc0 [V01,T02] ( 4, 13 ) int -> esi
-; V02 tmp0 [V02,T01] ( 3, 17 ) ref -> edx "CASTCLASS eval op1"
-; V03 tmp1 [V03,T04] ( 3, 5 ) int -> ecx "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 27 ) ref -> eax class-hnd "spilling QMark2" <<unknown class>>
-; V05 cse0 [V05,T03] ( 3, 6 ) int -> edi "CSE - aggressive"
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> esi
+; V02 cse0 [V02,T02] ( 3, 6 ) int -> edi "CSE - aggressive"
+; V03 cse1 [V03,T01] ( 3, 6 ) ref -> ebx "CSE - aggressive"
;
; Lcl frame size = 0
@@ -21,46 +19,44 @@ G_M36328_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov ebp, esp
push edi
push esi
- ;; size=5 bbWeight=1 PerfScore 3.25
+ push ebx
+ ;; size=6 bbWeight=1 PerfScore 4.25
G_M36328_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
xor esi, esi
mov edi, dword ptr [D1FFAB1EH]
test edi, edi
- jle SHORT G_M36328_IG07
- ;; size=12 bbWeight=1 PerfScore 3.50
-G_M36328_IG03: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov edx, gword ptr [D1FFAB1EH] ; static handle
+ jle SHORT G_M36328_IG04
+ mov ebx, gword ptr [D1FFAB1EH]
+ ; gcrRegs +[ebx]
+ mov edx, ebx
+ ; gcrRegs +[edx]
+ mov ecx, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_CHKCASTARRAY
+ ; gcrRegs -[edx] +[eax]
+ ;; size=30 bbWeight=1 PerfScore 7.00
+G_M36328_IG03: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax]
+ mov edx, ebx
; gcrRegs +[edx]
- mov eax, edx
- ; gcrRegs +[eax]
- test eax, eax
- je SHORT G_M36328_IG06
- ;; size=12 bbWeight=4 PerfScore 14.00
-G_M36328_IG04: ; bbWeight=1, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz
mov ecx, 0xD1FFAB1E ; <unknown class>
- cmp dword ptr [eax], ecx
- je SHORT G_M36328_IG06
- ;; size=9 bbWeight=1 PerfScore 4.25
-G_M36328_IG05: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
call CORINFO_HELP_CHKCASTARRAY
; gcrRegs -[edx] +[eax]
- ;; size=5 bbWeight=0.50 PerfScore 0.50
-G_M36328_IG06: ; bbWeight=4, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
mov edx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
call CORINFO_HELP_ASSIGN_REF_EAX
; gcrRegs -[eax]
inc esi
cmp esi, edi
jl SHORT G_M36328_IG03
- ;; size=15 bbWeight=4 PerfScore 11.00
-G_M36328_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=27 bbWeight=4 PerfScore 17.00
+G_M36328_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ; gcrRegs -[ebx]
+ pop ebx
pop esi
pop edi
pop ebp
ret
- ;; size=4 bbWeight=1 PerfScore 2.50
+ ;; size=5 bbWeight=1 PerfScore 3.00
-; Total bytes of code 62, prolog size 5, PerfScore 39.00, instruction count 25, allocated bytes for code 62 (MethodHash=58d37217) for method PerfLabTests.CastingPerf:IntObj():this (FullOpts)
+; Total bytes of code 68, prolog size 6, PerfScore 31.25, instruction count 26, allocated bytes for code 68 (MethodHash=58d37217) for method PerfLabTests.CastingPerf:IntObj():this (FullOpts)
; ============================================================
+6 (+9.68%) : 23860.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (FullOpts)
@@ -8,11 +8,9 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf>
-; V01 loc0 [V01,T02] ( 4, 13 ) int -> esi
-; V02 tmp0 [V02,T01] ( 3, 17 ) ref -> edx "CASTCLASS eval op1"
-; V03 tmp1 [V03,T04] ( 3, 5 ) int -> ecx "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 27 ) ref -> eax class-hnd "spilling QMark2" <<unknown class>>
-; V05 cse0 [V05,T03] ( 3, 6 ) int -> edi "CSE - aggressive"
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> esi
+; V02 cse0 [V02,T02] ( 3, 6 ) int -> edi "CSE - aggressive"
+; V03 cse1 [V03,T01] ( 3, 6 ) ref -> ebx "CSE - aggressive"
;
; Lcl frame size = 0
@@ -21,46 +19,44 @@ G_M896_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
mov ebp, esp
push edi
push esi
- ;; size=5 bbWeight=1 PerfScore 3.25
+ push ebx
+ ;; size=6 bbWeight=1 PerfScore 4.25
G_M896_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
xor esi, esi
mov edi, dword ptr [D1FFAB1EH]
test edi, edi
- jle SHORT G_M896_IG07
- ;; size=12 bbWeight=1 PerfScore 3.50
-G_M896_IG03: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov edx, gword ptr [D1FFAB1EH] ; static handle
+ jle SHORT G_M896_IG04
+ mov ebx, gword ptr [D1FFAB1EH]
+ ; gcrRegs +[ebx]
+ mov edx, ebx
+ ; gcrRegs +[edx]
+ mov ecx, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_CHKCASTARRAY
+ ; gcrRegs -[edx] +[eax]
+ ;; size=30 bbWeight=1 PerfScore 7.00
+G_M896_IG03: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax]
+ mov edx, ebx
; gcrRegs +[edx]
- mov eax, edx
- ; gcrRegs +[eax]
- test eax, eax
- je SHORT G_M896_IG06
- ;; size=12 bbWeight=4 PerfScore 14.00
-G_M896_IG04: ; bbWeight=1, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz
mov ecx, 0xD1FFAB1E ; <unknown class>
- cmp dword ptr [eax], ecx
- je SHORT G_M896_IG06
- ;; size=9 bbWeight=1 PerfScore 4.25
-G_M896_IG05: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
call CORINFO_HELP_CHKCASTARRAY
; gcrRegs -[edx] +[eax]
- ;; size=5 bbWeight=0.50 PerfScore 0.50
-G_M896_IG06: ; bbWeight=4, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
mov edx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
call CORINFO_HELP_ASSIGN_REF_EAX
; gcrRegs -[eax]
inc esi
cmp esi, edi
jl SHORT G_M896_IG03
- ;; size=15 bbWeight=4 PerfScore 11.00
-G_M896_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=27 bbWeight=4 PerfScore 17.00
+G_M896_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ; gcrRegs -[ebx]
+ pop ebx
pop esi
pop edi
pop ebp
ret
- ;; size=4 bbWeight=1 PerfScore 2.50
+ ;; size=5 bbWeight=1 PerfScore 3.00
-; Total bytes of code 62, prolog size 5, PerfScore 39.00, instruction count 25, allocated bytes for code 62 (MethodHash=984afc7f) for method PerfLabTests.CastingPerf:ObjObjIsFoo():this (FullOpts)
+; Total bytes of code 68, prolog size 6, PerfScore 31.25, instruction count 26, allocated bytes for code 68 (MethodHash=984afc7f) for method PerfLabTests.CastingPerf:ObjObjIsFoo():this (FullOpts)
; ============================================================
+6 (+9.68%) : 24196.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (FullOpts)
@@ -8,11 +8,9 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf>
-; V01 loc0 [V01,T02] ( 4, 13 ) int -> esi
-; V02 tmp0 [V02,T01] ( 3, 17 ) ref -> edx "CASTCLASS eval op1"
-; V03 tmp1 [V03,T04] ( 3, 5 ) int -> ecx "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 27 ) ref -> eax class-hnd "spilling QMark2" <<unknown class>>
-; V05 cse0 [V05,T03] ( 3, 6 ) int -> edi "CSE - aggressive"
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> esi
+; V02 cse0 [V02,T02] ( 3, 6 ) int -> edi "CSE - aggressive"
+; V03 cse1 [V03,T01] ( 3, 6 ) ref -> ebx "CSE - aggressive"
;
; Lcl frame size = 0
@@ -21,46 +19,44 @@ G_M40467_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov ebp, esp
push edi
push esi
- ;; size=5 bbWeight=1 PerfScore 3.25
+ push ebx
+ ;; size=6 bbWeight=1 PerfScore 4.25
G_M40467_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
xor esi, esi
mov edi, dword ptr [D1FFAB1EH]
test edi, edi
- jle SHORT G_M40467_IG07
- ;; size=12 bbWeight=1 PerfScore 3.50
-G_M40467_IG03: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov edx, gword ptr [D1FFAB1EH] ; static handle
+ jle SHORT G_M40467_IG04
+ mov ebx, gword ptr [D1FFAB1EH]
+ ; gcrRegs +[ebx]
+ mov edx, ebx
+ ; gcrRegs +[edx]
+ mov ecx, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_CHKCASTARRAY
+ ; gcrRegs -[edx] +[eax]
+ ;; size=30 bbWeight=1 PerfScore 7.00
+G_M40467_IG03: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax]
+ mov edx, ebx
; gcrRegs +[edx]
- mov eax, edx
- ; gcrRegs +[eax]
- test eax, eax
- je SHORT G_M40467_IG06
- ;; size=12 bbWeight=4 PerfScore 14.00
-G_M40467_IG04: ; bbWeight=1, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz
mov ecx, 0xD1FFAB1E ; <unknown class>
- cmp dword ptr [eax], ecx
- je SHORT G_M40467_IG06
- ;; size=9 bbWeight=1 PerfScore 4.25
-G_M40467_IG05: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
call CORINFO_HELP_CHKCASTARRAY
; gcrRegs -[edx] +[eax]
- ;; size=5 bbWeight=0.50 PerfScore 0.50
-G_M40467_IG06: ; bbWeight=4, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
mov edx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
call CORINFO_HELP_ASSIGN_REF_EAX
; gcrRegs -[eax]
inc esi
cmp esi, edi
jl SHORT G_M40467_IG03
- ;; size=15 bbWeight=4 PerfScore 11.00
-G_M40467_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=27 bbWeight=4 PerfScore 17.00
+G_M40467_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ; gcrRegs -[ebx]
+ pop ebx
pop esi
pop edi
pop ebp
ret
- ;; size=4 bbWeight=1 PerfScore 2.50
+ ;; size=5 bbWeight=1 PerfScore 3.00
-; Total bytes of code 62, prolog size 5, PerfScore 39.00, instruction count 25, allocated bytes for code 62 (MethodHash=dc5f61ec) for method PerfLabTests.CastingPerf:FooObjIsFoo2():this (FullOpts)
+; Total bytes of code 68, prolog size 6, PerfScore 31.25, instruction count 26, allocated bytes for code 68 (MethodHash=dc5f61ec) for method PerfLabTests.CastingPerf:FooObjIsFoo2():this (FullOpts)
; ============================================================
benchmarks.run_pgo.windows.x86.checked.mch
-19 (-32.76%) : 9124.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (Tier1)
@@ -7,10 +7,9 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) int -> esi single-def
-; V01 loc0 [V01,T02] ( 3, 4.25) ref -> eax single-def "CASTCLASS eval op1"
-; V02 tmp1 [V02,T03] ( 3, 1.25) int -> ecx "fgMakeTemp is creating a new local variable"
-; V03 tmp2 [V03,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) int -> ecx single-def
+; V01 loc0 [V01,T01] ( 2, 4 ) ref -> edx single-def "argument with side effect"
+; V02 cse0 [V02,T02] ( 3, 3 ) int -> esi "CSE - aggressive"
;
; Lcl frame size = 4
@@ -20,11 +19,10 @@ G_M13946_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push esi
push eax
mov dword ptr [ebp-0x08], ecx
- mov esi, ecx
- ;; size=10 bbWeight=1 PerfScore 4.50
-G_M13946_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov ecx, dword ptr [esi+0x20]
- mov ecx, dword ptr [ecx]
+ ;; size=8 bbWeight=1 PerfScore 4.25
+G_M13946_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ mov esi, dword ptr [ecx+0x20]
+ mov ecx, dword ptr [esi]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[eax]
mov ecx, eax
@@ -33,36 +31,17 @@ G_M13946_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; gcrRegs -[ecx]
mov edx, eax
; gcrRegs +[edx]
- test edx, edx
- je SHORT G_M13946_IG05
- ;; size=24 bbWeight=1 PerfScore 9.75
-G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz
- mov ecx, dword ptr [esi+0x20]
- mov ecx, dword ptr [ecx]
- cmp dword ptr [edx], ecx
- je SHORT G_M13946_IG05
- ;; size=9 bbWeight=0.25 PerfScore 2.00
-G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[edx]
- mov edx, eax
- ; gcrRegs +[edx]
+ mov ecx, dword ptr [esi]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[edx]
- mov edx, eax
- ; gcrRegs +[edx]
- ;; size=9 bbWeight=0.12 PerfScore 0.19
-G_M13946_IG05: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
- mov eax, edx
- ; gcrRegs +[eax]
- ;; size=2 bbWeight=1 PerfScore 0.25
-G_M13946_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=27 bbWeight=1 PerfScore 11.50
+G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
pop ecx
pop esi
pop ebp
ret
;; size=4 bbWeight=1 PerfScore 2.50
-; Total bytes of code 58, prolog size 8, PerfScore 19.19, instruction count 26, allocated bytes for code 58 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
+; Total bytes of code 39, prolog size 8, PerfScore 18.25, instruction count 17, allocated bytes for code 39 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
; ============================================================
-17 (-21.79%) : 49257.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttributeSystem.__Canon:System.__Canon (Tier1)
@@ -8,13 +8,12 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 3, 3 ) ref -> esi class-hnd single-def <System.Reflection.MemberInfo>
-; V01 arg1 [V01,T02] ( 3, 3 ) ubyte -> ebx single-def
-; V02 TypeCtx [V02,T05] ( 3, 2.25) int -> edi single-def
-; V03 loc0 [V03,T03] ( 3, 4.25) ref -> eax single-def "CASTCLASS eval op1"
-; V04 tmp1 [V04,T06] ( 3, 1.25) int -> ecx "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
-; V06 tmp3 [V06,T04] ( 2, 4 ) ref -> edx single-def "argument with side effect"
+; V00 arg0 [V00,T00] ( 3, 3 ) ref -> esi class-hnd single-def <System.Reflection.MemberInfo>
+; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> ebx single-def
+; V02 TypeCtx [V02,T05] ( 2, 2 ) int -> ecx single-def
+; V03 loc0 [V03,T02] ( 2, 4 ) ref -> edx single-def "argument with side effect"
+; V04 tmp1 [V04,T03] ( 2, 4 ) ref -> edx single-def "argument with side effect"
+; V05 cse0 [V05,T04] ( 3, 3 ) int -> edi "CSE - aggressive"
;
; Lcl frame size = 4
@@ -30,11 +29,11 @@ G_M29548_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov esi, ecx
; gcrRegs +[esi]
mov ebx, edx
- mov edi, dword ptr [ebp+0x08]
+ mov ecx, dword ptr [ebp+0x08]
;; size=20 bbWeight=1 PerfScore 9.75
-G_M29548_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, dword ptr [edi+0x20]
- mov ecx, dword ptr [ecx]
+G_M29548_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ mov edi, dword ptr [ecx+0x20]
+ mov ecx, dword ptr [edi]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[eax]
mov edx, eax
@@ -47,30 +46,11 @@ G_M29548_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
; gcrRegs -[ecx edx esi]
mov edx, eax
; gcrRegs +[edx]
- test edx, edx
- je SHORT G_M29548_IG05
- ;; size=30 bbWeight=1 PerfScore 11.25
-G_M29548_IG03: ; bbWeight=0.25, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz
- mov ecx, dword ptr [edi+0x20]
- mov ecx, dword ptr [ecx]
- cmp dword ptr [edx], ecx
- je SHORT G_M29548_IG05
- ;; size=9 bbWeight=0.25 PerfScore 2.00
-G_M29548_IG04: ; bbWeight=0.12, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[edx]
- mov edx, eax
- ; gcrRegs +[edx]
+ mov ecx, dword ptr [edi]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[edx]
- mov edx, eax
- ; gcrRegs +[edx]
- ;; size=9 bbWeight=0.12 PerfScore 0.19
-G_M29548_IG05: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
- mov eax, edx
- ; gcrRegs +[eax]
- ;; size=2 bbWeight=1 PerfScore 0.25
-G_M29548_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=33 bbWeight=1 PerfScore 13.00
+G_M29548_IG03: ; bbWeight=1, epilog, nogc, extend
pop ecx
pop ebx
pop esi
@@ -79,6 +59,6 @@ G_M29548_IG06: ; bbWeight=1, epilog, nogc, extend
ret 4
;; size=8 bbWeight=1 PerfScore 4.50
-; Total bytes of code 78, prolog size 13, PerfScore 27.94, instruction count 36, allocated bytes for code 78 (MethodHash=c5378c93) for method System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
+; Total bytes of code 61, prolog size 13, PerfScore 27.25, instruction count 28, allocated bytes for code 61 (MethodHash=c5378c93) for method System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
; ============================================================
-26 (-18.44%) : 19722.dasm - Microsoft.Extensions.Options.OptionsMonitor1[System.__Canon]:add__onChange(System.Action2[System.Canon,System.Canon]):this (Tier0-FullOpts)
@@ -8,25 +8,24 @@
; 0 inlinees with PGO data; 1 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T07] ( 5, 19 ) ref -> esi this class-hnd single-def <Microsoft.Extensions.Options.OptionsMonitor`1[System.__Canon]>
-; V01 arg1 [V01,T12] ( 4, 6 ) ref -> edi class-hnd single-def <System.Action`2[System.__Canon,System.__Canon]>
+; V00 this [V00,T09] ( 5, 19 ) ref -> esi this class-hnd single-def <Microsoft.Extensions.Options.OptionsMonitor`1[System.__Canon]>
+; V01 arg1 [V01,T13] ( 4, 6 ) ref -> edi class-hnd single-def <System.Action`2[System.__Canon,System.__Canon]>
; V02 loc0 [V02,T08] ( 4, 25 ) ref -> registers class-hnd <System.Action`2[System.__Canon,System.__Canon]>
-; V03 loc1 [V03,T06] ( 5, 34 ) ref -> ebx class-hnd <System.Action`2[System.__Canon,System.__Canon]>
-;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Action`2[System.__Canon,System.__Canon]>
-; V05 tmp0 [V05,T09] ( 4, 19 ) int -> edx "spilling helperCall"
-;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref "CASTCLASS eval op1"
-;* V07 tmp2 [V07 ] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
-; V08 tmp3 [V08,T00] ( 5, 51 ) ref -> [ebp-0x10] class-hnd "spilling QMark2" <System.Action`2[System.__Canon,System.__Canon]>
-;* V09 tmp4 [V09 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V10 tmp5 [V10,T11] ( 4, 12.50) ref -> [ebp-0x14] class-hnd "Inline return value spill temp" <System.Delegate>
-; V11 tmp6 [V11,T01] ( 3, 48 ) byref -> edx "Inlining Arg"
-; V12 rat0 [V12,T04] ( 3, 35.20) int -> ecx "Spilling to split statement for tree"
-; V13 rat1 [V13,T02] ( 3, 44.80) int -> edx "fgMakeTemp is creating a new local variable"
-;* V14 rat2 [V14,T05] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
-;* V15 rat3 [V15,T10] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V16 rat4 [V16,T03] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V03 loc1 [V03,T04] ( 5, 34 ) ref -> ebx class-hnd <System.Action`2[System.__Canon,System.__Canon]>
+; V04 loc2 [V04,T10] ( 2, 16 ) ref -> edx class-hnd <System.Action`2[System.__Canon,System.__Canon]>
+;* V05 tmp0 [V05 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
+;* V06 tmp1 [V06 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
+; V07 tmp2 [V07,T12] ( 3, 12 ) ref -> [ebp-0x10] class-hnd "Inline return value spill temp" <System.Delegate>
+; V08 tmp3 [V08,T00] ( 3, 48 ) byref -> ecx "Inlining Arg"
+; V09 tmp4 [V09,T06] ( 2, 32 ) int -> ecx "argument with side effect"
+; V10 cse0 [V10,T07] ( 2, 16 ) int -> ecx "CSE - aggressive"
+; V11 rat0 [V11,T03] ( 3, 35.20) int -> ecx "Spilling to split statement for tree"
+; V12 rat1 [V12,T05] ( 3, 32 ) int -> ecx "runtime lookup"
+; V13 rat2 [V13,T01] ( 3, 44.80) int -> edx "fgMakeTemp is creating a new local variable"
+;* V14 rat3 [V14,T11] ( 0, 0 ) int -> zero-ref "runtime lookup"
+;* V15 rat4 [V15,T02] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 4
G_M51739_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -34,11 +33,11 @@ G_M51739_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 8
+ push eax
mov esi, ecx
mov edi, edx
; gcrRegs +[edi]
- ;; size=13 bbWeight=1 PerfScore 5.00
+ ;; size=11 bbWeight=1 PerfScore 5.75
G_M51739_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs +[esi]
mov ebx, gword ptr [esi+0x10]
@@ -61,12 +60,12 @@ G_M51739_IG05: ; bbWeight=2, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=
; gcrRegs +[edx]
call [<unknown method>]
; gcrRegs -[ecx edx] +[eax]
- mov gword ptr [ebp-0x14], eax
- ; GC ptr vars +{V10}
- mov eax, gword ptr [ebp-0x14]
+ mov gword ptr [ebp-0x10], eax
+ ; GC ptr vars +{V07}
+ mov eax, gword ptr [ebp-0x10]
;; size=16 bbWeight=2 PerfScore 11.00
G_M51739_IG06: ; bbWeight=8, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- ; GC ptr vars -{V10}
+ ; GC ptr vars -{V07}
mov ecx, dword ptr [esi]
mov edx, dword ptr [ecx+0x24]
mov edx, dword ptr [edx]
@@ -75,81 +74,55 @@ G_M51739_IG06: ; bbWeight=8, gcrefRegs=000000C9 {eax ebx esi edi}, byrefR
je SHORT G_M51739_IG08
;; size=14 bbWeight=8 PerfScore 74.00
G_M51739_IG07: ; bbWeight=6.40, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov ecx, edx
jmp SHORT G_M51739_IG09
- ;; size=2 bbWeight=6.40 PerfScore 12.80
+ ;; size=4 bbWeight=6.40 PerfScore 14.40
G_M51739_IG08: ; bbWeight=1.60, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref
- mov gword ptr [ebp-0x14], eax
- ; GC ptr vars +{V10}
+ mov gword ptr [ebp-0x10], eax
+ ; GC ptr vars +{V07}
mov edx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcrRegs -[eax]
- mov edx, eax
- mov eax, gword ptr [ebp-0x14]
+ mov ecx, eax
+ mov eax, gword ptr [ebp-0x10]
; gcrRegs +[eax]
;; size=18 bbWeight=1.60 PerfScore 5.60
G_M51739_IG09: ; bbWeight=8, gcVars=00000000 {}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V10}
- mov ecx, eax
- ; gcrRegs +[ecx]
- test ecx, ecx
- je SHORT G_M51739_IG12
- ;; size=6 bbWeight=8 PerfScore 12.00
-G_M51739_IG10: ; bbWeight=1, gcrefRegs=000000CB {eax ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- cmp dword ptr [ecx], edx
- je SHORT G_M51739_IG12
- ;; size=4 bbWeight=1 PerfScore 4.00
-G_M51739_IG11: ; bbWeight=0.50, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[ecx]
- mov ecx, edx
+ ; GC ptr vars -{V07}
mov edx, eax
; gcrRegs +[edx]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[edx]
- mov gword ptr [ebp-0x10], eax
- ; GC ptr vars +{V08}
- mov ecx, gword ptr [ebp-0x10]
- ; gcrRegs +[ecx]
- ;; size=15 bbWeight=0.50 PerfScore 1.75
-G_M51739_IG12: ; bbWeight=8, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax]
- ; GC ptr vars -{V08}
- lea edx, bword ptr [esi+0x10]
- ; byrRegs +[edx]
- test edx, edx
- je SHORT G_M51739_IG14
- mov gword ptr [ebp-0x10], ecx
- ; GC ptr vars +{V08}
+ mov edx, eax
+ ; gcrRegs +[edx]
+ lea ecx, bword ptr [esi+0x10]
+ ; byrRegs +[ecx]
+ test ecx, ecx
+ je SHORT G_M51739_IG11
push ebx
; gcr arg push 0
- mov ecx, edx
- ; gcrRegs -[ecx]
- ; byrRegs +[ecx]
- mov edx, gword ptr [ebp-0x10]
- ; gcrRegs +[edx]
- ; byrRegs -[edx]
- ; GC ptr vars -{V08}
call <unknown method>
- ; gcrRegs -[edx] +[eax]
+ ; gcrRegs -[edx]
; byrRegs -[ecx]
; gcr arg pop 1
cmp eax, ebx
mov ebx, eax
jne SHORT G_M51739_IG03
- ;; size=27 bbWeight=8 PerfScore 60.00
-G_M51739_IG13: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=28 bbWeight=8 PerfScore 54.00
+G_M51739_IG10: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[eax ebx edi]
- lea esp, [ebp-0x0C]
+ pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret
- ;; size=8 bbWeight=1 PerfScore 3.50
-G_M51739_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=6 bbWeight=1 PerfScore 3.50
+G_M51739_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
call [System.ThrowHelper:ThrowNullReferenceException()]
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 141, prolog size 13, PerfScore 206.15, instruction count 59, allocated bytes for code 141 (MethodHash=33ac35e4) for method Microsoft.Extensions.Options.OptionsMonitor`1[System.__Canon]:add__onChange(System.Action`2[System.__Canon,System.__Canon]):this (Tier0-FullOpts)
+; Total bytes of code 115, prolog size 11, PerfScore 184.75, instruction count 50, allocated bytes for code 115 (MethodHash=33ac35e4) for method Microsoft.Extensions.Options.OptionsMonitor`1[System.__Canon]:add__onChange(System.Action`2[System.__Canon,System.__Canon]):this (Tier0-FullOpts)
; ============================================================
+6 (+9.68%) : 113462.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier0-FullOpts)
@@ -8,11 +8,9 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf>
-; V01 loc0 [V01,T02] ( 4, 13 ) int -> esi
-; V02 tmp0 [V02,T01] ( 3, 17 ) ref -> edx "CASTCLASS eval op1"
-; V03 tmp1 [V03,T04] ( 3, 5 ) int -> ecx "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 27 ) ref -> eax class-hnd "spilling QMark2" <<unknown class>>
-; V05 cse0 [V05,T03] ( 3, 6 ) int -> edi "CSE - aggressive"
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> esi
+; V02 cse0 [V02,T02] ( 3, 6 ) int -> edi "CSE - aggressive"
+; V03 cse1 [V03,T01] ( 3, 6 ) ref -> ebx "CSE - aggressive"
;
; Lcl frame size = 0
@@ -21,46 +19,44 @@ G_M40467_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov ebp, esp
push edi
push esi
- ;; size=5 bbWeight=1 PerfScore 3.25
+ push ebx
+ ;; size=6 bbWeight=1 PerfScore 4.25
G_M40467_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
xor esi, esi
mov edi, dword ptr [D1FFAB1EH]
test edi, edi
- jle SHORT G_M40467_IG07
- ;; size=12 bbWeight=1 PerfScore 3.50
-G_M40467_IG03: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov edx, gword ptr [D1FFAB1EH] ; static handle
+ jle SHORT G_M40467_IG04
+ mov ebx, gword ptr [D1FFAB1EH]
+ ; gcrRegs +[ebx]
+ mov edx, ebx
+ ; gcrRegs +[edx]
+ mov ecx, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_CHKCASTARRAY
+ ; gcrRegs -[edx] +[eax]
+ ;; size=30 bbWeight=1 PerfScore 7.00
+G_M40467_IG03: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax]
+ mov edx, ebx
; gcrRegs +[edx]
- mov eax, edx
- ; gcrRegs +[eax]
- test eax, eax
- je SHORT G_M40467_IG06
- ;; size=12 bbWeight=4 PerfScore 14.00
-G_M40467_IG04: ; bbWeight=1, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz
mov ecx, 0xD1FFAB1E ; <unknown class>
- cmp dword ptr [eax], ecx
- je SHORT G_M40467_IG06
- ;; size=9 bbWeight=1 PerfScore 4.25
-G_M40467_IG05: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
call CORINFO_HELP_CHKCASTARRAY
; gcrRegs -[edx] +[eax]
- ;; size=5 bbWeight=0.50 PerfScore 0.50
-G_M40467_IG06: ; bbWeight=4, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
mov edx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
call CORINFO_HELP_ASSIGN_REF_EAX
; gcrRegs -[eax]
inc esi
cmp esi, edi
jl SHORT G_M40467_IG03
- ;; size=15 bbWeight=4 PerfScore 11.00
-G_M40467_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=27 bbWeight=4 PerfScore 17.00
+G_M40467_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ; gcrRegs -[ebx]
+ pop ebx
pop esi
pop edi
pop ebp
ret
- ;; size=4 bbWeight=1 PerfScore 2.50
+ ;; size=5 bbWeight=1 PerfScore 3.00
-; Total bytes of code 62, prolog size 5, PerfScore 39.00, instruction count 25, allocated bytes for code 62 (MethodHash=dc5f61ec) for method PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier0-FullOpts)
+; Total bytes of code 68, prolog size 6, PerfScore 31.25, instruction count 26, allocated bytes for code 68 (MethodHash=dc5f61ec) for method PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier0-FullOpts)
; ============================================================
+6 (+9.68%) : 30788.dasm - PerfLabTests.CastingPerf:FooObjIsDescendant():this (Tier0-FullOpts)
@@ -8,11 +8,9 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf>
-; V01 loc0 [V01,T02] ( 4, 13 ) int -> esi
-; V02 tmp0 [V02,T01] ( 3, 17 ) ref -> edx "CASTCLASS eval op1"
-; V03 tmp1 [V03,T04] ( 3, 5 ) int -> ecx "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 27 ) ref -> eax class-hnd "spilling QMark2" <<unknown class>>
-; V05 cse0 [V05,T03] ( 3, 6 ) int -> edi "CSE - aggressive"
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> esi
+; V02 cse0 [V02,T02] ( 3, 6 ) int -> edi "CSE - aggressive"
+; V03 cse1 [V03,T01] ( 3, 6 ) ref -> ebx "CSE - aggressive"
;
; Lcl frame size = 0
@@ -21,46 +19,44 @@ G_M34178_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov ebp, esp
push edi
push esi
- ;; size=5 bbWeight=1 PerfScore 3.25
+ push ebx
+ ;; size=6 bbWeight=1 PerfScore 4.25
G_M34178_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
xor esi, esi
mov edi, dword ptr [D1FFAB1EH]
test edi, edi
- jle SHORT G_M34178_IG07
- ;; size=12 bbWeight=1 PerfScore 3.50
-G_M34178_IG03: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov edx, gword ptr [D1FFAB1EH] ; static handle
+ jle SHORT G_M34178_IG04
+ mov ebx, gword ptr [D1FFAB1EH]
+ ; gcrRegs +[ebx]
+ mov edx, ebx
+ ; gcrRegs +[edx]
+ mov ecx, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_CHKCASTARRAY
+ ; gcrRegs -[edx] +[eax]
+ ;; size=30 bbWeight=1 PerfScore 7.00
+G_M34178_IG03: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax]
+ mov edx, ebx
; gcrRegs +[edx]
- mov eax, edx
- ; gcrRegs +[eax]
- test eax, eax
- je SHORT G_M34178_IG06
- ;; size=12 bbWeight=4 PerfScore 14.00
-G_M34178_IG04: ; bbWeight=1, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz
mov ecx, 0xD1FFAB1E ; <unknown class>
- cmp dword ptr [eax], ecx
- je SHORT G_M34178_IG06
- ;; size=9 bbWeight=1 PerfScore 4.25
-G_M34178_IG05: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
call CORINFO_HELP_CHKCASTARRAY
; gcrRegs -[edx] +[eax]
- ;; size=5 bbWeight=0.50 PerfScore 0.50
-G_M34178_IG06: ; bbWeight=4, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
mov edx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
call CORINFO_HELP_ASSIGN_REF_EAX
; gcrRegs -[eax]
inc esi
cmp esi, edi
jl SHORT G_M34178_IG03
- ;; size=15 bbWeight=4 PerfScore 11.00
-G_M34178_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=27 bbWeight=4 PerfScore 17.00
+G_M34178_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ; gcrRegs -[ebx]
+ pop ebx
pop esi
pop edi
pop ebp
ret
- ;; size=4 bbWeight=1 PerfScore 2.50
+ ;; size=5 bbWeight=1 PerfScore 3.00
-; Total bytes of code 62, prolog size 5, PerfScore 39.00, instruction count 25, allocated bytes for code 62 (MethodHash=1eb67a7d) for method PerfLabTests.CastingPerf:FooObjIsDescendant():this (Tier0-FullOpts)
+; Total bytes of code 68, prolog size 6, PerfScore 31.25, instruction count 26, allocated bytes for code 68 (MethodHash=1eb67a7d) for method PerfLabTests.CastingPerf:FooObjIsDescendant():this (Tier0-FullOpts)
; ============================================================
+14 (+10.61%) : 66532.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
@@ -10,23 +10,21 @@
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 11, 7 ) ref -> esi class-hnd single-def <System.Type>
-; V01 tmp0 [V01,T06] ( 3, 2 ) ref -> eax "guarded devirt return temp"
+; V01 tmp0 [V01,T05] ( 3, 2 ) ref -> eax "guarded devirt return temp"
;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
-; V03 tmp2 [V03,T05] ( 4, 2 ) ubyte -> edx "Inline return value spill temp"
-;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V05 tmp4 [V05,T10] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
-;* V06 tmp5 [V06 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.TypeHandle>
-; V07 tmp6 [V07,T07] ( 3, 2 ) int -> ebx
-; V08 tmp7 [V08,T08] ( 2, 2 ) ubyte -> edx "Inline stloc first use temp"
-;* V09 tmp8 [V09 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TypeHandle>
-;* V10 tmp9 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V11 tmp10 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V12 tmp11 [V12,T02] ( 2, 4 ) byref -> eax single-def "Inlining Arg"
-;* V13 tmp12 [V13,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V14 tmp13 [V14,T03] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V15 tmp14 [V15 ] ( 0, 0 ) int -> zero-ref "field V06.m_asTAddr (fldOffset=0x0)" P-INDEP
-; V16 tmp15 [V16,T04] ( 3, 3 ) int -> eax "field V09.m_asTAddr (fldOffset=0x0)" P-INDEP
-; V17 cse0 [V17,T01] ( 3, 3 ) int -> edi "CSE - aggressive"
+; V03 tmp2 [V03,T06] ( 3, 2 ) ubyte -> edx "Inline return value spill temp"
+; V04 tmp3 [V04,T02] ( 4, 4 ) ref -> edi class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
+;* V05 tmp4 [V05 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.TypeHandle>
+; V06 tmp5 [V06,T07] ( 3, 2 ) int -> ebx
+; V07 tmp6 [V07,T08] ( 2, 2 ) ubyte -> edx "Inline stloc first use temp"
+;* V08 tmp7 [V08 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TypeHandle>
+;* V09 tmp8 [V09 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V10 tmp9 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V11 tmp10 [V11,T03] ( 2, 4 ) byref -> eax single-def "Inlining Arg"
+;* V12 tmp11 [V12,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V13 tmp12 [V13 ] ( 0, 0 ) int -> zero-ref "field V05.m_asTAddr (fldOffset=0x0)" P-INDEP
+; V14 tmp13 [V14,T04] ( 3, 3 ) int -> eax "field V08.m_asTAddr (fldOffset=0x0)" P-INDEP
+; V15 rat0 [V15,T01] ( 5, 7.50) ref -> edi class-hnd "replacement local" <System.RuntimeType>
;
; Lcl frame size = 0
@@ -40,68 +38,78 @@ G_M8853_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
; gcrRegs +[esi]
;; size=8 bbWeight=1 PerfScore 4.50
G_M8853_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov edi, dword ptr [esi]
- cmp edi, 0xD1FFAB1E
+ mov ebx, esi
+ ; gcrRegs +[ebx]
+ cmp byte ptr [ebx], bl
+ mov edi, esi
+ ; gcrRegs +[edi]
+ test edi, edi
+ je SHORT G_M8853_IG04
+ ;; size=10 bbWeight=1 PerfScore 4.75
+G_M8853_IG03: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[ebx]
+ cmp dword ptr [edi], 0xD1FFAB1E
jne SHORT G_M8853_IG10
- mov eax, dword ptr [esi+0x0C]
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M8853_IG04: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ test edi, edi
+ je SHORT G_M8853_IG12
+ mov eax, dword ptr [edi+0x0C]
test al, 2
- jne SHORT G_M8853_IG09
+ jne SHORT G_M8853_IG11
mov eax, dword ptr [eax]
and eax, 0xD1FFAB1E
xor ebx, ebx
cmp eax, 0xD1FFAB1E
sete bl
- ;; size=34 bbWeight=1 PerfScore 10.25
-G_M8853_IG03: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=28 bbWeight=1 PerfScore 8.25
+G_M8853_IG05: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
movzx edx, bl
+ ;; size=3 bbWeight=1 PerfScore 0.25
+G_M8853_IG06: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[edi]
test edx, edx
- jne SHORT G_M8853_IG11
- ;; size=7 bbWeight=1 PerfScore 1.50
-G_M8853_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ jne SHORT G_M8853_IG14
cmp esi, 0xD1FFAB1E
- je SHORT G_M8853_IG06
- cmp edi, 0xD1FFAB1E
- jne SHORT G_M8853_IG08
+ je SHORT G_M8853_IG08
+ cmp dword ptr [esi], 0xD1FFAB1E
+ jne SHORT G_M8853_IG13
mov ecx, esi
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[ecx esi] +[eax]
- ;; size=24 bbWeight=1 PerfScore 5.75
-G_M8853_IG05: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=28 bbWeight=1 PerfScore 9.75
+G_M8853_IG07: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
pop ebx
pop esi
pop edi
pop ebp
ret
;; size=5 bbWeight=1 PerfScore 3.00
-G_M8853_IG06: ; bbWeight=0.71, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M8853_IG08: ; bbWeight=0.71, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax]
xor eax, eax
; gcrRegs +[eax]
;; size=2 bbWeight=0.71 PerfScore 0.18
-G_M8853_IG07: ; bbWeight=0.71, epilog, nogc, extend
+G_M8853_IG09: ; bbWeight=0.71, epilog, nogc, extend
pop ebx
pop esi
pop edi
pop ebp
ret
;; size=5 bbWeight=0.71 PerfScore 2.14
-G_M8853_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax] +[esi]
- mov ecx, esi
- ; gcrRegs +[ecx]
- mov eax, dword ptr [esi]
- mov eax, dword ptr [eax+0x58]
- call [eax+0x10]<unknown method>
- ; gcrRegs -[ecx esi] +[eax]
- jmp SHORT G_M8853_IG05
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M8853_IG09: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M8853_IG10: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax] +[esi]
+ xor edi, edi
+ ; gcrRegs +[edi]
+ jmp SHORT G_M8853_IG04
+ ;; size=4 bbWeight=0.25 PerfScore 0.56
+G_M8853_IG11: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
xor ebx, ebx
- jmp SHORT G_M8853_IG03
+ jmp SHORT G_M8853_IG05
;; size=4 bbWeight=0 PerfScore 0.00
-G_M8853_IG10: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M8853_IG12: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[edi]
mov ecx, esi
; gcrRegs +[ecx]
mov eax, dword ptr [esi]
@@ -111,15 +119,23 @@ G_M8853_IG10: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000
xor edx, edx
test al, 32
setne dl
- test edx, edx
- je SHORT G_M8853_IG04
- ;; size=21 bbWeight=0 PerfScore 0.00
-G_M8853_IG11: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[esi]
+ jmp SHORT G_M8853_IG06
+ ;; size=19 bbWeight=0 PerfScore 0.00
+G_M8853_IG13: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov ecx, esi
+ ; gcrRegs +[ecx]
+ mov eax, dword ptr [esi]
+ mov eax, dword ptr [eax+0x58]
+ call [eax+0x10]<unknown method>
+ ; gcrRegs -[ecx esi] +[eax]
+ jmp SHORT G_M8853_IG07
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M8853_IG14: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax]
mov eax, 0xD1FFAB1E
; gcrRegs +[eax]
;; size=5 bbWeight=0 PerfScore 0.00
-G_M8853_IG12: ; bbWeight=0, epilog, nogc, extend
+G_M8853_IG15: ; bbWeight=0, epilog, nogc, extend
pop ebx
pop esi
pop edi
@@ -127,6 +143,6 @@ G_M8853_IG12: ; bbWeight=0, epilog, nogc, extend
ret
;; size=5 bbWeight=0 PerfScore 0.00
-; Total bytes of code 132, prolog size 6, PerfScore 27.32, instruction count 59, allocated bytes for code 132 (MethodHash=a7e7dd6a) for method System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
+; Total bytes of code 146, prolog size 6, PerfScore 35.38, instruction count 66, allocated bytes for code 146 (MethodHash=a7e7dd6a) for method System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
; ============================================================
benchmarks.run_tiered.windows.x86.checked.mch
-16 (-39.02%) : 19649.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (Tier1)
@@ -7,11 +7,9 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 4, 3.12) ref -> eax class-hnd single-def <System.Object>
-; V01 TypeCtx [V01,T01] ( 4, 3.25) int -> edx single-def
+; V00 arg0 [V00,T01] ( 3, 3 ) ref -> eax class-hnd single-def <System.Object>
+; V01 TypeCtx [V01,T00] ( 4, 4 ) int -> edx single-def
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
-; V03 loc1 [V03,T03] ( 3, 1.25) int -> edx "fgMakeTemp is creating a new local variable"
-; V04 tmp1 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 4
@@ -23,39 +21,20 @@ G_M8451_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
mov eax, ecx
; gcrRegs +[eax]
;; size=9 bbWeight=1 PerfScore 3.50
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
- mov ecx, eax
- ; gcrRegs +[ecx]
- test ecx, ecx
- je SHORT G_M8451_IG05
- ;; size=6 bbWeight=1 PerfScore 1.50
-G_M8451_IG03: ; bbWeight=0.25, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz
- mov edx, dword ptr [edx+0x20]
- mov edx, dword ptr [edx]
- cmp dword ptr [ecx], edx
- je SHORT G_M8451_IG05
- ;; size=9 bbWeight=0.25 PerfScore 2.00
-G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[ecx]
- mov ecx, edx
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
+ mov ecx, dword ptr [edx+0x20]
+ mov ecx, dword ptr [ecx]
mov edx, eax
; gcrRegs +[edx]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[edx]
- mov ecx, eax
- ; gcrRegs +[ecx]
- ;; size=11 bbWeight=0.12 PerfScore 0.22
-G_M8451_IG05: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
- mov eax, ecx
- ; gcrRegs +[eax]
- ;; size=2 bbWeight=1 PerfScore 0.25
-G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 5.25
+G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
mov esp, ebp
pop ebp
ret
;; size=4 bbWeight=1 PerfScore 1.75
-; Total bytes of code 41, prolog size 7, PerfScore 9.22, instruction count 20, allocated bytes for code 41 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
+; Total bytes of code 25, prolog size 7, PerfScore 10.50, instruction count 12, allocated bytes for code 25 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
; ============================================================
-18 (-38.30%) : 24065.dasm - System.Threading.AsyncLocal`1[System.Canon]:get_Value():System.Canon:this (Tier1)
@@ -2,64 +2,43 @@
; Emitting BLENDED_CODE for X86 with AVX512 - Windows
; Tier1 code
; optimized code
-; ebp based frame
+; esp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 4, 3.25) ref -> esi this class-hnd single-def <System.Threading.AsyncLocal`1[System.__Canon]>
-; V01 loc0 [V01,T02] ( 3, 2.12) ref -> eax class-hnd single-def <System.Object>
+; V00 this [V00,T00] ( 4, 4 ) ref -> esi this class-hnd single-def <System.Threading.AsyncLocal`1[System.__Canon]>
+; V01 loc0 [V01,T01] ( 2, 2 ) ref -> edx class-hnd single-def <System.Object>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
-; V03 tmp0 [V03,T03] ( 3, 1.25) int -> ecx "fgMakeTemp is creating a new local variable"
-; V04 tmp1 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 0
G_M1970_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- push ebp
- mov ebp, esp
push esi
mov esi, ecx
+ ;; size=3 bbWeight=1 PerfScore 1.25
+G_M1970_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs +[esi]
- ;; size=6 bbWeight=1 PerfScore 2.50
-G_M1970_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, esi
; gcrRegs +[ecx]
call [System.Threading.ExecutionContext:GetLocalValue(System.Threading.IAsyncLocal):System.Object]
; gcrRegs -[ecx] +[eax]
+ ; gcr arg pop 0
mov edx, eax
; gcrRegs +[edx]
- test edx, edx
- je SHORT G_M1970_IG05
- ;; size=14 bbWeight=1 PerfScore 4.75
-G_M1970_IG03: ; bbWeight=0.25, gcrefRegs=00000045 {eax edx esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [esi]
mov ecx, dword ptr [ecx+0x24]
mov ecx, dword ptr [ecx]
mov ecx, dword ptr [ecx]
- cmp dword ptr [edx], ecx
- je SHORT G_M1970_IG05
- ;; size=13 bbWeight=0.25 PerfScore 3.00
-G_M1970_IG04: ; bbWeight=0.12, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[edx]
- mov edx, eax
- ; gcrRegs +[edx]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[edx]
- mov edx, eax
- ; gcrRegs +[edx]
- ;; size=9 bbWeight=0.12 PerfScore 0.19
-G_M1970_IG05: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
- mov eax, edx
- ; gcrRegs +[eax]
- ;; size=2 bbWeight=1 PerfScore 0.25
-G_M1970_IG06: ; bbWeight=1, epilog, nogc, extend
+ ; gcr arg pop 0
+ ;; size=24 bbWeight=1 PerfScore 12.50
+G_M1970_IG03: ; bbWeight=1, epilog, nogc, extend
pop esi
- pop ebp
ret
- ;; size=3 bbWeight=1 PerfScore 2.00
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 47, prolog size 4, PerfScore 12.69, instruction count 22, allocated bytes for code 47 (MethodHash=11a2f84d) for method System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
+; Total bytes of code 29, prolog size 1, PerfScore 15.25, instruction count 12, allocated bytes for code 29 (MethodHash=11a2f84d) for method System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
; ============================================================
-19 (-32.76%) : 7625.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (Tier1)
@@ -7,10 +7,9 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) int -> esi single-def
-; V01 loc0 [V01,T02] ( 3, 4.25) ref -> eax single-def "CASTCLASS eval op1"
-; V02 tmp1 [V02,T03] ( 3, 1.25) int -> ecx "fgMakeTemp is creating a new local variable"
-; V03 tmp2 [V03,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) int -> ecx single-def
+; V01 loc0 [V01,T01] ( 2, 4 ) ref -> edx single-def "argument with side effect"
+; V02 cse0 [V02,T02] ( 3, 3 ) int -> esi "CSE - aggressive"
;
; Lcl frame size = 4
@@ -20,11 +19,10 @@ G_M13946_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push esi
push eax
mov dword ptr [ebp-0x08], ecx
- mov esi, ecx
- ;; size=10 bbWeight=1 PerfScore 4.50
-G_M13946_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov ecx, dword ptr [esi+0x20]
- mov ecx, dword ptr [ecx]
+ ;; size=8 bbWeight=1 PerfScore 4.25
+G_M13946_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ mov esi, dword ptr [ecx+0x20]
+ mov ecx, dword ptr [esi]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[eax]
mov ecx, eax
@@ -33,36 +31,17 @@ G_M13946_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; gcrRegs -[ecx]
mov edx, eax
; gcrRegs +[edx]
- test edx, edx
- je SHORT G_M13946_IG05
- ;; size=24 bbWeight=1 PerfScore 9.75
-G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz
- mov ecx, dword ptr [esi+0x20]
- mov ecx, dword ptr [ecx]
- cmp dword ptr [edx], ecx
- je SHORT G_M13946_IG05
- ;; size=9 bbWeight=0.25 PerfScore 2.00
-G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[edx]
- mov edx, eax
- ; gcrRegs +[edx]
+ mov ecx, dword ptr [esi]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[edx]
- mov edx, eax
- ; gcrRegs +[edx]
- ;; size=9 bbWeight=0.12 PerfScore 0.19
-G_M13946_IG05: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
- mov eax, edx
- ; gcrRegs +[eax]
- ;; size=2 bbWeight=1 PerfScore 0.25
-G_M13946_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=27 bbWeight=1 PerfScore 11.50
+G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
pop ecx
pop esi
pop ebp
ret
;; size=4 bbWeight=1 PerfScore 2.50
-; Total bytes of code 58, prolog size 8, PerfScore 19.19, instruction count 26, allocated bytes for code 58 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
+; Total bytes of code 39, prolog size 8, PerfScore 18.25, instruction count 17, allocated bytes for code 39 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
; ============================================================
+6 (+9.68%) : 21314.dasm - PerfLabTests.CastingPerf:FooObjIsDescendant():this (Tier0-FullOpts)
@@ -8,11 +8,9 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf>
-; V01 loc0 [V01,T02] ( 4, 13 ) int -> esi
-; V02 tmp0 [V02,T01] ( 3, 17 ) ref -> edx "CASTCLASS eval op1"
-; V03 tmp1 [V03,T04] ( 3, 5 ) int -> ecx "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 27 ) ref -> eax class-hnd "spilling QMark2" <<unknown class>>
-; V05 cse0 [V05,T03] ( 3, 6 ) int -> edi "CSE - aggressive"
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> esi
+; V02 cse0 [V02,T02] ( 3, 6 ) int -> edi "CSE - aggressive"
+; V03 cse1 [V03,T01] ( 3, 6 ) ref -> ebx "CSE - aggressive"
;
; Lcl frame size = 0
@@ -21,46 +19,44 @@ G_M34178_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov ebp, esp
push edi
push esi
- ;; size=5 bbWeight=1 PerfScore 3.25
+ push ebx
+ ;; size=6 bbWeight=1 PerfScore 4.25
G_M34178_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
xor esi, esi
mov edi, dword ptr [D1FFAB1EH]
test edi, edi
- jle SHORT G_M34178_IG07
- ;; size=12 bbWeight=1 PerfScore 3.50
-G_M34178_IG03: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov edx, gword ptr [D1FFAB1EH] ; static handle
+ jle SHORT G_M34178_IG04
+ mov ebx, gword ptr [D1FFAB1EH]
+ ; gcrRegs +[ebx]
+ mov edx, ebx
+ ; gcrRegs +[edx]
+ mov ecx, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_CHKCASTARRAY
+ ; gcrRegs -[edx] +[eax]
+ ;; size=30 bbWeight=1 PerfScore 7.00
+G_M34178_IG03: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax]
+ mov edx, ebx
; gcrRegs +[edx]
- mov eax, edx
- ; gcrRegs +[eax]
- test eax, eax
- je SHORT G_M34178_IG06
- ;; size=12 bbWeight=4 PerfScore 14.00
-G_M34178_IG04: ; bbWeight=1, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz
mov ecx, 0xD1FFAB1E ; <unknown class>
- cmp dword ptr [eax], ecx
- je SHORT G_M34178_IG06
- ;; size=9 bbWeight=1 PerfScore 4.25
-G_M34178_IG05: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
call CORINFO_HELP_CHKCASTARRAY
; gcrRegs -[edx] +[eax]
- ;; size=5 bbWeight=0.50 PerfScore 0.50
-G_M34178_IG06: ; bbWeight=4, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
mov edx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
call CORINFO_HELP_ASSIGN_REF_EAX
; gcrRegs -[eax]
inc esi
cmp esi, edi
jl SHORT G_M34178_IG03
- ;; size=15 bbWeight=4 PerfScore 11.00
-G_M34178_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=27 bbWeight=4 PerfScore 17.00
+G_M34178_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ; gcrRegs -[ebx]
+ pop ebx
pop esi
pop edi
pop ebp
ret
- ;; size=4 bbWeight=1 PerfScore 2.50
+ ;; size=5 bbWeight=1 PerfScore 3.00
-; Total bytes of code 62, prolog size 5, PerfScore 39.00, instruction count 25, allocated bytes for code 62 (MethodHash=1eb67a7d) for method PerfLabTests.CastingPerf:FooObjIsDescendant():this (Tier0-FullOpts)
+; Total bytes of code 68, prolog size 6, PerfScore 31.25, instruction count 26, allocated bytes for code 68 (MethodHash=1eb67a7d) for method PerfLabTests.CastingPerf:FooObjIsDescendant():this (Tier0-FullOpts)
; ============================================================
+6 (+9.68%) : 28206.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier0-FullOpts)
@@ -8,11 +8,9 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf>
-; V01 loc0 [V01,T02] ( 4, 13 ) int -> esi
-; V02 tmp0 [V02,T01] ( 3, 17 ) ref -> edx "CASTCLASS eval op1"
-; V03 tmp1 [V03,T04] ( 3, 5 ) int -> ecx "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 27 ) ref -> eax class-hnd "spilling QMark2" <<unknown class>>
-; V05 cse0 [V05,T03] ( 3, 6 ) int -> edi "CSE - aggressive"
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> esi
+; V02 cse0 [V02,T02] ( 3, 6 ) int -> edi "CSE - aggressive"
+; V03 cse1 [V03,T01] ( 3, 6 ) ref -> ebx "CSE - aggressive"
;
; Lcl frame size = 0
@@ -21,46 +19,44 @@ G_M3904_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
mov ebp, esp
push edi
push esi
- ;; size=5 bbWeight=1 PerfScore 3.25
+ push ebx
+ ;; size=6 bbWeight=1 PerfScore 4.25
G_M3904_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
xor esi, esi
mov edi, dword ptr [D1FFAB1EH]
test edi, edi
- jle SHORT G_M3904_IG07
- ;; size=12 bbWeight=1 PerfScore 3.50
-G_M3904_IG03: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov edx, gword ptr [D1FFAB1EH] ; static handle
+ jle SHORT G_M3904_IG04
+ mov ebx, gword ptr [D1FFAB1EH]
+ ; gcrRegs +[ebx]
+ mov edx, ebx
+ ; gcrRegs +[edx]
+ mov ecx, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_CHKCASTARRAY
+ ; gcrRegs -[edx] +[eax]
+ ;; size=30 bbWeight=1 PerfScore 7.00
+G_M3904_IG03: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax]
+ mov edx, ebx
; gcrRegs +[edx]
- mov eax, edx
- ; gcrRegs +[eax]
- test eax, eax
- je SHORT G_M3904_IG06
- ;; size=12 bbWeight=4 PerfScore 14.00
-G_M3904_IG04: ; bbWeight=1, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz
mov ecx, 0xD1FFAB1E ; <unknown class>
- cmp dword ptr [eax], ecx
- je SHORT G_M3904_IG06
- ;; size=9 bbWeight=1 PerfScore 4.25
-G_M3904_IG05: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
call CORINFO_HELP_CHKCASTARRAY
; gcrRegs -[edx] +[eax]
- ;; size=5 bbWeight=0.50 PerfScore 0.50
-G_M3904_IG06: ; bbWeight=4, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
mov edx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
call CORINFO_HELP_ASSIGN_REF_EAX
; gcrRegs -[eax]
inc esi
cmp esi, edi
jl SHORT G_M3904_IG03
- ;; size=15 bbWeight=4 PerfScore 11.00
-G_M3904_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=27 bbWeight=4 PerfScore 17.00
+G_M3904_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ; gcrRegs -[ebx]
+ pop ebx
pop esi
pop edi
pop ebp
ret
- ;; size=4 bbWeight=1 PerfScore 2.50
+ ;; size=5 bbWeight=1 PerfScore 3.00
-; Total bytes of code 62, prolog size 5, PerfScore 39.00, instruction count 25, allocated bytes for code 62 (MethodHash=4cdef0bf) for method PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier0-FullOpts)
+; Total bytes of code 68, prolog size 6, PerfScore 31.25, instruction count 26, allocated bytes for code 68 (MethodHash=4cdef0bf) for method PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier0-FullOpts)
; ============================================================
+6 (+9.68%) : 47631.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier0-FullOpts)
@@ -8,11 +8,9 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf>
-; V01 loc0 [V01,T02] ( 4, 13 ) int -> esi
-; V02 tmp0 [V02,T01] ( 3, 17 ) ref -> edx "CASTCLASS eval op1"
-; V03 tmp1 [V03,T04] ( 3, 5 ) int -> ecx "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 27 ) ref -> eax class-hnd "spilling QMark2" <<unknown class>>
-; V05 cse0 [V05,T03] ( 3, 6 ) int -> edi "CSE - aggressive"
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> esi
+; V02 cse0 [V02,T02] ( 3, 6 ) int -> edi "CSE - aggressive"
+; V03 cse1 [V03,T01] ( 3, 6 ) ref -> ebx "CSE - aggressive"
;
; Lcl frame size = 0
@@ -21,46 +19,44 @@ G_M896_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
mov ebp, esp
push edi
push esi
- ;; size=5 bbWeight=1 PerfScore 3.25
+ push ebx
+ ;; size=6 bbWeight=1 PerfScore 4.25
G_M896_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
xor esi, esi
mov edi, dword ptr [D1FFAB1EH]
test edi, edi
- jle SHORT G_M896_IG07
- ;; size=12 bbWeight=1 PerfScore 3.50
-G_M896_IG03: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov edx, gword ptr [D1FFAB1EH] ; static handle
+ jle SHORT G_M896_IG04
+ mov ebx, gword ptr [D1FFAB1EH]
+ ; gcrRegs +[ebx]
+ mov edx, ebx
+ ; gcrRegs +[edx]
+ mov ecx, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_CHKCASTARRAY
+ ; gcrRegs -[edx] +[eax]
+ ;; size=30 bbWeight=1 PerfScore 7.00
+G_M896_IG03: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax]
+ mov edx, ebx
; gcrRegs +[edx]
- mov eax, edx
- ; gcrRegs +[eax]
- test eax, eax
- je SHORT G_M896_IG06
- ;; size=12 bbWeight=4 PerfScore 14.00
-G_M896_IG04: ; bbWeight=1, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz
mov ecx, 0xD1FFAB1E ; <unknown class>
- cmp dword ptr [eax], ecx
- je SHORT G_M896_IG06
- ;; size=9 bbWeight=1 PerfScore 4.25
-G_M896_IG05: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
call CORINFO_HELP_CHKCASTARRAY
; gcrRegs -[edx] +[eax]
- ;; size=5 bbWeight=0.50 PerfScore 0.50
-G_M896_IG06: ; bbWeight=4, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
mov edx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
call CORINFO_HELP_ASSIGN_REF_EAX
; gcrRegs -[eax]
inc esi
cmp esi, edi
jl SHORT G_M896_IG03
- ;; size=15 bbWeight=4 PerfScore 11.00
-G_M896_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=27 bbWeight=4 PerfScore 17.00
+G_M896_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ; gcrRegs -[ebx]
+ pop ebx
pop esi
pop edi
pop ebp
ret
- ;; size=4 bbWeight=1 PerfScore 2.50
+ ;; size=5 bbWeight=1 PerfScore 3.00
-; Total bytes of code 62, prolog size 5, PerfScore 39.00, instruction count 25, allocated bytes for code 62 (MethodHash=984afc7f) for method PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier0-FullOpts)
+; Total bytes of code 68, prolog size 6, PerfScore 31.25, instruction count 26, allocated bytes for code 68 (MethodHash=984afc7f) for method PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier0-FullOpts)
; ============================================================
coreclr_tests.run.windows.x86.checked.mch
-19 (-32.76%) : 305349.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (Tier1)
@@ -7,10 +7,9 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) int -> esi single-def
-; V01 loc0 [V01,T02] ( 3, 4.25) ref -> eax single-def "CASTCLASS eval op1"
-; V02 tmp1 [V02,T03] ( 3, 1.25) int -> ecx "fgMakeTemp is creating a new local variable"
-; V03 tmp2 [V03,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) int -> ecx single-def
+; V01 loc0 [V01,T01] ( 2, 4 ) ref -> edx single-def "argument with side effect"
+; V02 cse0 [V02,T02] ( 3, 3 ) int -> esi "CSE - aggressive"
;
; Lcl frame size = 4
@@ -20,11 +19,10 @@ G_M13946_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push esi
push eax
mov dword ptr [ebp-0x08], ecx
- mov esi, ecx
- ;; size=10 bbWeight=1 PerfScore 4.50
-G_M13946_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov ecx, dword ptr [esi+0x20]
- mov ecx, dword ptr [ecx]
+ ;; size=8 bbWeight=1 PerfScore 4.25
+G_M13946_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ mov esi, dword ptr [ecx+0x20]
+ mov ecx, dword ptr [esi]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[eax]
mov ecx, eax
@@ -33,36 +31,17 @@ G_M13946_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; gcrRegs -[ecx]
mov edx, eax
; gcrRegs +[edx]
- test edx, edx
- je SHORT G_M13946_IG05
- ;; size=24 bbWeight=1 PerfScore 9.75
-G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz
- mov ecx, dword ptr [esi+0x20]
- mov ecx, dword ptr [ecx]
- cmp dword ptr [edx], ecx
- je SHORT G_M13946_IG05
- ;; size=9 bbWeight=0.25 PerfScore 2.00
-G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[edx]
- mov edx, eax
- ; gcrRegs +[edx]
+ mov ecx, dword ptr [esi]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[edx]
- mov edx, eax
- ; gcrRegs +[edx]
- ;; size=9 bbWeight=0.12 PerfScore 0.19
-G_M13946_IG05: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
- mov eax, edx
- ; gcrRegs +[eax]
- ;; size=2 bbWeight=1 PerfScore 0.25
-G_M13946_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=27 bbWeight=1 PerfScore 11.50
+G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
pop ecx
pop esi
pop ebp
ret
;; size=4 bbWeight=1 PerfScore 2.50
-; Total bytes of code 58, prolog size 8, PerfScore 19.19, instruction count 26, allocated bytes for code 58 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
+; Total bytes of code 39, prolog size 8, PerfScore 18.25, instruction count 17, allocated bytes for code 39 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
; ============================================================
-14 (-29.79%) : 165957.dasm - System.Linq.Expressions.Expression`1[System.Canon]:Compile():System.Canon:this (FullOpts)
@@ -2,71 +2,51 @@
; Emitting BLENDED_CODE for X86 with AVX512 - Windows
; FullOpts code
; optimized code
-; ebp based frame
+; esp based frame
; partially interruptible
; No matching PGO data
; 0 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 4, 3.25) ref -> esi this class-hnd single-def <System.Linq.Expressions.Expression`1[System.__Canon]>
+; V00 this [V00,T00] ( 4, 4 ) ref -> esi this class-hnd single-def <System.Linq.Expressions.Expression`1[System.__Canon]>
;* V01 tmp0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Linq.Expressions.Interpreter.LightCompiler>
-;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref "CASTCLASS eval op1"
-;* V03 tmp2 [V03 ] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.__Canon>
-; V05 tmp4 [V05,T02] ( 3, 4.25) ref -> eax single-def "CASTCLASS eval op1"
-; V06 tmp5 [V06,T03] ( 3, 1.25) int -> ecx "fgMakeTemp is creating a new local variable"
-; V07 tmp6 [V07,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
-;* V08 tmp7 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Linq.Expressions.Interpreter.LightDelegateCreator>
-;* V09 tmp8 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Linq.Expressions.Interpreter.LightLambda>
-;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Linq.Expressions.LambdaExpression>
+;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Linq.Expressions.Interpreter.LightDelegateCreator>
+;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Linq.Expressions.Interpreter.LightLambda>
+;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Linq.Expressions.LambdaExpression>
+; V05 tmp4 [V05,T01] ( 2, 4 ) ref -> edx single-def "argument with side effect"
+; V06 tmp5 [V06,T02] ( 2, 4 ) int -> edi "argument with side effect"
;
; Lcl frame size = 0
G_M24995_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- push ebp
- mov ebp, esp
+ push edi
push esi
mov esi, ecx
+ ;; size=4 bbWeight=1 PerfScore 2.25
+G_M24995_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs +[esi]
- ;; size=6 bbWeight=1 PerfScore 2.50
-G_M24995_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov ecx, dword ptr [esi]
+ mov ecx, dword ptr [ecx+0x24]
+ mov ecx, dword ptr [ecx]
+ mov edi, dword ptr [ecx]
mov ecx, esi
; gcrRegs +[ecx]
call [System.Linq.Expressions.Compiler.LambdaCompiler:Compile(System.Linq.Expressions.LambdaExpression):System.Delegate]
; gcrRegs -[ecx] +[eax]
+ ; gcr arg pop 0
mov edx, eax
; gcrRegs +[edx]
- test edx, edx
- je SHORT G_M24995_IG05
- ;; size=14 bbWeight=1 PerfScore 4.75
-G_M24995_IG03: ; bbWeight=0.25, gcrefRegs=00000045 {eax edx esi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, dword ptr [esi]
- mov ecx, dword ptr [ecx+0x24]
- mov ecx, dword ptr [ecx]
- mov ecx, dword ptr [ecx]
- cmp dword ptr [edx], ecx
- je SHORT G_M24995_IG05
- ;; size=13 bbWeight=0.25 PerfScore 3.00
-G_M24995_IG04: ; bbWeight=0.12, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[edx]
- mov edx, eax
- ; gcrRegs +[edx]
+ mov ecx, edi
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[edx]
- mov edx, eax
- ; gcrRegs +[edx]
- ;; size=9 bbWeight=0.12 PerfScore 0.19
-G_M24995_IG05: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
- mov eax, edx
- ; gcrRegs +[eax]
- ;; size=2 bbWeight=1 PerfScore 0.25
-G_M24995_IG06: ; bbWeight=1, epilog, nogc, extend
+ ; gcr arg pop 0
+ ;; size=26 bbWeight=1 PerfScore 12.75
+G_M24995_IG03: ; bbWeight=1, epilog, nogc, extend
pop esi
- pop ebp
+ pop edi
ret
;; size=3 bbWeight=1 PerfScore 2.00
-; Total bytes of code 47, prolog size 4, PerfScore 12.69, instruction count 22, allocated bytes for code 47 (MethodHash=05579e5c) for method System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
+; Total bytes of code 33, prolog size 2, PerfScore 17.00, instruction count 15, allocated bytes for code 33 (MethodHash=05579e5c) for method System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
; ============================================================
-43 (-29.25%) : 165097.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (FullOpts)
@@ -7,18 +7,16 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 6, 4.50) ref -> esi this class-hnd single-def <Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]>
-; V01 arg1 [V01,T04] ( 4, 3.12) ref -> edx class-hnd single-def <System.Object>
-; V02 arg2 [V02,T10] ( 2, 1.12) ref -> edi class-hnd single-def <System.Object>
-; V03 tmp0 [V03,T07] ( 2, 4 ) ref -> ebx class-hnd single-def "bubbling QMark2" <<unknown class>>
-; V04 tmp1 [V04,T08] ( 3, 1.25) int -> ecx "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> [ebp-0x10] class-hnd "spilling QMark2" <System.__Canon>
-; V06 tmp3 [V06,T09] ( 3, 1.25) int -> ecx "fgMakeTemp is creating a new local variable"
-; V07 tmp4 [V07,T01] ( 5, 6.75) ref -> [ebp-0x14] class-hnd "spilling QMark2" <System.__Canon>
-;* V08 tmp5 [V08 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V09 tmp6 [V09,T06] ( 3, 4 ) int -> edi "VirtualCall with runtime lookup"
-; V10 rat0 [V10,T05] ( 3, 4.40) int -> ecx "Spilling to split statement for tree"
-; V11 rat1 [V11,T03] ( 3, 5.60) int -> edi "fgMakeTemp is creating a new local variable"
+; V00 this [V00,T00] ( 5, 5 ) ref -> esi this class-hnd single-def <Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]>
+; V01 arg1 [V01,T02] ( 3, 3 ) ref -> edi class-hnd single-def <System.Object>
+; V02 arg2 [V02,T08] ( 1, 1 ) ref -> [ebp+0x08] class-hnd single-def <System.Object>
+;* V03 tmp0 [V03 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
+; V04 tmp1 [V04,T04] ( 3, 4 ) int -> ebx "VirtualCall with runtime lookup"
+; V05 tmp2 [V05,T05] ( 2, 4 ) ref -> edi single-def "argument with side effect"
+; V06 tmp3 [V06,T06] ( 2, 4 ) ref -> [ebp-0x14] spill-single-def "argument with side effect"
+; V07 cse0 [V07,T07] ( 3, 3 ) int -> [ebp-0x10] spill-single-def "CSE - moderate"
+; V08 rat0 [V08,T03] ( 3, 4.40) int -> ecx "Spilling to split statement for tree"
+; V09 rat1 [V09,T01] ( 3, 5.60) int -> ebx "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -31,103 +29,60 @@ G_M36528_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
sub esp, 8
mov esi, ecx
; gcrRegs +[esi]
- mov edi, gword ptr [ebp+0x08]
+ mov edi, edx
; gcrRegs +[edi]
- ;; size=14 bbWeight=1 PerfScore 5.75
-G_M36528_IG02: ; bbWeight=1, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[edx]
- mov ebx, gword ptr [esi+0x04]
- ; gcrRegs +[ebx]
- mov eax, edx
+ ;; size=13 bbWeight=1 PerfScore 5.00
+G_M36528_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov ecx, dword ptr [esi]
+ mov edx, dword ptr [ecx+0x24]
+ mov edx, dword ptr [edx]
+ mov ebx, dword ptr [edx+0x08]
+ test ebx, ebx
+ je SHORT G_M36528_IG04
+ ;; size=14 bbWeight=1 PerfScore 9.25
+G_M36528_IG03: ; bbWeight=0.80, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M36528_IG05
+ ;; size=2 bbWeight=0.80 PerfScore 1.60
+G_M36528_IG04: ; bbWeight=0.20, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ mov edx, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov ebx, eax
+ ;; size=12 bbWeight=0.20 PerfScore 0.30
+G_M36528_IG05: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ mov eax, gword ptr [esi+0x04]
; gcrRegs +[eax]
- test eax, eax
- je SHORT G_M36528_IG05
- ;; size=9 bbWeight=1 PerfScore 3.50
-G_M36528_IG03: ; bbWeight=0.25, gcrefRegs=000000CD {eax edx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov gword ptr [ebp-0x14], eax
+ ; GC ptr vars +{V06}
mov ecx, dword ptr [esi]
mov ecx, dword ptr [ecx+0x24]
mov ecx, dword ptr [ecx]
- mov ecx, dword ptr [ecx]
- cmp dword ptr [eax], ecx
- je SHORT G_M36528_IG05
- ;; size=13 bbWeight=0.25 PerfScore 3.00
-G_M36528_IG04: ; bbWeight=0.12, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
- call CORINFO_HELP_CHKCASTANY
- ; gcrRegs -[edx] +[eax]
- mov gword ptr [ebp-0x10], eax
- ; GC ptr vars +{V05}
- mov eax, gword ptr [ebp-0x10]
- ;; size=11 bbWeight=0.12 PerfScore 0.38
-G_M36528_IG05: ; bbWeight=1, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- ; GC ptr vars -{V05}
- mov edx, edi
- ; gcrRegs +[edx]
- test edx, edx
- je SHORT G_M36528_IG08
- ;; size=6 bbWeight=1 PerfScore 1.50
-G_M36528_IG06: ; bbWeight=0.25, gcrefRegs=000000CD {eax edx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, dword ptr [esi]
- mov ecx, dword ptr [ecx+0x24]
- mov ecx, dword ptr [ecx]
- mov ecx, dword ptr [ecx]
- cmp dword ptr [edx], ecx
- je SHORT G_M36528_IG08
- ;; size=13 bbWeight=0.25 PerfScore 3.00
-G_M36528_IG07: ; bbWeight=0.12, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[edx]
- mov gword ptr [ebp-0x10], eax
- ; GC ptr vars +{V05}
+ mov edx, dword ptr [ecx]
+ mov dword ptr [ebp-0x10], edx
+ mov ecx, edx
mov edx, edi
; gcrRegs +[edx]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[edx edi]
- mov gword ptr [ebp-0x14], eax
- ; GC ptr vars +{V07}
- mov eax, gword ptr [ebp-0x10]
- mov edx, gword ptr [ebp-0x14]
- ; gcrRegs +[edx]
- ;; size=19 bbWeight=0.12 PerfScore 0.66
-G_M36528_IG08: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000004D {eax edx ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V05 V07}
- mov ecx, dword ptr [esi]
- mov edi, dword ptr [ecx+0x24]
- mov edi, dword ptr [edi]
- mov edi, dword ptr [edi+0x08]
- test edi, edi
- je SHORT G_M36528_IG10
- ;; size=14 bbWeight=1 PerfScore 9.25
-G_M36528_IG09: ; bbWeight=0.80, gcrefRegs=0000004D {eax edx ebx esi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M36528_IG11
- ;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M36528_IG10: ; bbWeight=0.20, gcrefRegs=0000004D {eax edx ebx esi}, byrefRegs=00000000 {}, byref
- mov gword ptr [ebp-0x10], eax
- ; GC ptr vars +{V05}
- mov gword ptr [ebp-0x14], edx
- ; GC ptr vars +{V07}
- mov edx, 0xD1FFAB1E ; global ptr
- ; gcrRegs -[edx]
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ; gcrRegs -[eax]
mov edi, eax
- mov eax, gword ptr [ebp-0x10]
- ; gcrRegs +[eax]
- mov edx, gword ptr [ebp-0x14]
+ ; gcrRegs +[edi]
+ mov ecx, dword ptr [ebp-0x10]
+ mov edx, gword ptr [ebp+0x08]
; gcrRegs +[edx]
- ;; size=24 bbWeight=0.20 PerfScore 1.10
-G_M36528_IG11: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000004D {eax edx ebx esi}, byrefRegs=00000000 {}, gcvars, byref
- ; GC ptr vars -{V05 V07}
- push edx
- mov ecx, ebx
+ call CORINFO_HELP_CHKCASTANY
+ ; gcrRegs -[edx]
+ push eax
+ mov edx, edi
+ ; gcrRegs +[edx]
+ mov ecx, gword ptr [ebp-0x14]
; gcrRegs +[ecx]
- mov edx, eax
- mov eax, edi
+ mov eax, ebx
; gcrRegs -[eax]
nop
+ ; GC ptr vars -{V06}
call [eax]
- ; gcrRegs -[ecx edx ebx]
- ;; size=12 bbWeight=1 PerfScore 5.00
-G_M36528_IG12: ; bbWeight=1, epilog, nogc, extend
+ ; gcrRegs -[ecx edx edi]
+ ;; size=53 bbWeight=1 PerfScore 22.50
+G_M36528_IG06: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -136,6 +91,6 @@ G_M36528_IG12: ; bbWeight=1, epilog, nogc, extend
ret 4
;; size=10 bbWeight=1 PerfScore 4.50
-; Total bytes of code 147, prolog size 9, PerfScore 39.23, instruction count 62, allocated bytes for code 147 (MethodHash=8499714f) for method Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (FullOpts)
+; Total bytes of code 104, prolog size 9, PerfScore 43.15, instruction count 44, allocated bytes for code 104 (MethodHash=8499714f) for method Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (FullOpts)
; ============================================================
+13 (+4.51%) : 461036.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler+<>c:<.cctor>b_100(System.Object):this (Tier1)
@@ -8,22 +8,22 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Threading.Tasks.ThreadPoolTaskScheduler+<>c>
-; V01 arg1 [V01,T02] ( 6, 4.12) ref -> esi class-hnd single-def <System.Object>
-; V02 tmp0 [V02,T10] ( 3, 1.25) int -> ecx "fgMakeTemp is creating a new local variable"
-; V03 tmp1 [V03,T00] ( 13, 17.75) ref -> edi class-hnd "spilling QMark2" <System.Threading.Tasks.Task>
-;* V04 tmp2 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V05 tmp3 [V05 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V06 tmp4 [V06,T06] ( 4, 2.50) ubyte -> edx "Inline return value spill temp"
-; V07 tmp5 [V07,T03] ( 4, 3 ) ref -> edx class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
-; V08 tmp6 [V08,T11] ( 3, 1 ) ubyte -> edx "Inline return value spill temp"
-; V09 tmp7 [V09,T07] ( 3, 2.34) byref -> edx single-def "Inlining Arg"
-;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource>
-; V11 tmp9 [V11,T12] ( 2, 1 ) int -> eax "Inline stloc first use temp"
-; V12 tmp10 [V12,T09] ( 2, 2 ) byref -> edx single-def "argument with side effect"
-; V13 rat0 [V13,T08] ( 3, 2 ) byref -> edx "TLS field access"
-; V14 rat1 [V14,T04] ( 3, 3 ) int -> edx "TLS access"
-; V15 rat2 [V15,T05] ( 3, 3 ) int -> edx "ThreadStaticBlockBase access"
-; V16 rat3 [V16,T01] ( 5, 7 ) ref -> eax class-hnd "replacement local" <System.Threading.Tasks.Task>
+; V01 arg1 [V01,T03] ( 6, 4 ) ref -> esi class-hnd single-def <System.Object>
+;* V02 tmp0 [V02 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V03 tmp1 [V03,T00] ( 10, 15 ) ref -> edi class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
+;* V04 tmp2 [V04 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
+; V05 tmp3 [V05,T07] ( 4, 2.50) ubyte -> edx "Inline return value spill temp"
+; V06 tmp4 [V06,T04] ( 4, 3 ) ref -> edx class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+; V07 tmp5 [V07,T11] ( 3, 1 ) ubyte -> edx "Inline return value spill temp"
+; V08 tmp6 [V08,T08] ( 3, 2.34) byref -> edx single-def "Inlining Arg"
+;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource>
+; V10 tmp8 [V10,T12] ( 2, 1 ) int -> eax "Inline stloc first use temp"
+; V11 tmp9 [V11,T10] ( 2, 2 ) byref -> edx single-def "argument with side effect"
+; V12 rat0 [V12,T09] ( 3, 2 ) byref -> edx "TLS field access"
+; V13 rat1 [V13,T05] ( 3, 3 ) int -> edx "TLS access"
+; V14 rat2 [V14,T06] ( 3, 3 ) int -> edx "ThreadStaticBlockBase access"
+; V15 rat3 [V15,T01] ( 5, 7 ) ref -> eax class-hnd "replacement local" <System.Threading.Tasks.Task>
+; V16 rat4 [V16,T02] ( 5, 7 ) ref -> edi class-hnd "replacement local" <System.Threading.Tasks.Task>
;
; Lcl frame size = 0
@@ -43,7 +43,7 @@ G_M60851_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
;; size=6 bbWeight=1 PerfScore 1.50
G_M60851_IG03: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
cmp dword ptr [eax], 0xD1FFAB1E
- jne G_M60851_IG21
+ jne G_M60851_IG20
;; size=12 bbWeight=0.50 PerfScore 2.00
G_M60851_IG04: ; bbWeight=1, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
test eax, eax
@@ -62,40 +62,30 @@ G_M60851_IG06: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov edi, esi
; gcrRegs +[edi]
test edi, edi
- je SHORT G_M60851_IG09
+ je SHORT G_M60851_IG08
;; size=6 bbWeight=1 PerfScore 1.50
-G_M60851_IG07: ; bbWeight=0.25, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, 0xD1FFAB1E ; System.Threading.Tasks.Task
- cmp dword ptr [edi], ecx
- je SHORT G_M60851_IG09
- ;; size=9 bbWeight=0.25 PerfScore 1.06
-G_M60851_IG08: ; bbWeight=0.12, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[edi]
- mov edx, esi
- ; gcrRegs +[edx]
- call CORINFO_HELP_CHKCASTCLASS_SPECIAL
- ; gcrRegs -[edx esi] +[eax]
- mov edi, eax
- ; gcrRegs +[edi]
- ;; size=9 bbWeight=0.12 PerfScore 0.19
-G_M60851_IG09: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax]
+G_M60851_IG07: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ cmp dword ptr [edi], 0xD1FFAB1E
+ jne G_M60851_IG21
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
+G_M60851_IG08: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[esi]
or dword ptr [edi+0x1C], 0x20000
mov edx, gword ptr [edi+0x14]
; gcrRegs +[edx]
test edx, edx
- je SHORT G_M60851_IG15
- ;; size=14 bbWeight=1 PerfScore 6.25
-G_M60851_IG10: ; bbWeight=0.50, gcrefRegs=00000084 {edx edi}, byrefRegs=00000000 {}, byref, isz
- cmp dword ptr [edx+0x1C], 1
je SHORT G_M60851_IG14
+ ;; size=14 bbWeight=1 PerfScore 6.25
+G_M60851_IG09: ; bbWeight=0.50, gcrefRegs=00000084 {edx edi}, byrefRegs=00000000 {}, byref, isz
+ cmp dword ptr [edx+0x1C], 1
+ je SHORT G_M60851_IG13
add edx, 36
; gcrRegs -[edx]
; byrRegs +[edx]
cmp gword ptr [edx], 0
- je SHORT G_M60851_IG12
+ je SHORT G_M60851_IG11
;; size=14 bbWeight=0.50 PerfScore 4.12
-G_M60851_IG11: ; bbWeight=0.17, gcrefRegs=00000080 {edi}, byrefRegs=00000004 {edx}, byref, isz
+G_M60851_IG10: ; bbWeight=0.17, gcrefRegs=00000080 {edi}, byrefRegs=00000004 {edx}, byref, isz
mov edx, gword ptr [edx]
; gcrRegs +[edx]
; byrRegs -[edx]
@@ -103,22 +93,22 @@ G_M60851_IG11: ; bbWeight=0.17, gcrefRegs=00000080 {edi}, byrefRegs=00000
setne dl
; gcrRegs -[edx]
movzx edx, dl
- jmp SHORT G_M60851_IG13
+ jmp SHORT G_M60851_IG12
;; size=14 bbWeight=0.17 PerfScore 1.41
-G_M60851_IG12: ; bbWeight=0.33, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+G_M60851_IG11: ; bbWeight=0.33, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
xor edx, edx
;; size=2 bbWeight=0.33 PerfScore 0.08
-G_M60851_IG13: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M60851_IG16
+G_M60851_IG12: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M60851_IG15
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M60851_IG14: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+G_M60851_IG13: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
mov edx, 1
- jmp SHORT G_M60851_IG16
+ jmp SHORT G_M60851_IG15
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M60851_IG15: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+G_M60851_IG14: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
xor edx, edx
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M60851_IG16: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+G_M60851_IG15: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
test edx, edx
sete dl
movzx edx, dl
@@ -128,9 +118,9 @@ G_M60851_IG16: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000
setne cl
movzx ecx, cl
test edx, ecx
- je SHORT G_M60851_IG19
+ je SHORT G_M60851_IG18
;; size=33 bbWeight=1 PerfScore 6.50
-G_M60851_IG17: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+G_M60851_IG16: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
mov edx, dword ptr FS:[0x002C]
mov edx, dword ptr [edx]
cmp dword ptr [edx+0x80], 4
@@ -143,7 +133,7 @@ G_M60851_IG17: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000
; byrRegs +[edx]
add edx, 8
;; size=36 bbWeight=0.50 PerfScore 7.25
-G_M60851_IG18: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000004 {edx}, byref, isz
+G_M60851_IG17: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000004 {edx}, byref, isz
add edx, 52
push 0
mov ecx, edi
@@ -151,34 +141,34 @@ G_M60851_IG18: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000
call [<unknown method>]
; gcrRegs -[ecx edi]
; byrRegs -[edx]
- jmp SHORT G_M60851_IG20
+ jmp SHORT G_M60851_IG19
;; size=15 bbWeight=0.50 PerfScore 3.25
-G_M60851_IG19: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+G_M60851_IG18: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[edi]
mov ecx, dword ptr [edi+0x1C]
and ecx, 0xD1FFAB1E
cmp ecx, 0xD1FFAB1E
- je SHORT G_M60851_IG20
+ je SHORT G_M60851_IG19
lea ecx, bword ptr [edi+0x1C]
; byrRegs +[ecx]
mov eax, dword ptr [edi+0x1C]
or eax, 0xD1FFAB1E
xchg dword ptr [ecx], eax
test eax, 0xD1FFAB1E
- jne SHORT G_M60851_IG20
+ jne SHORT G_M60851_IG19
mov ecx, edi
; gcrRegs +[ecx]
; byrRegs -[ecx]
call [<unknown method>]
; gcrRegs -[ecx edi]
;; size=45 bbWeight=0.50 PerfScore 15.38
-G_M60851_IG20: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M60851_IG19: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
pop esi
pop edi
pop ebp
ret
;; size=4 bbWeight=1 PerfScore 2.50
-G_M60851_IG21: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M60851_IG20: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[esi]
mov edx, esi
; gcrRegs +[edx]
@@ -187,16 +177,27 @@ G_M60851_IG21: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}
; gcrRegs -[edx] +[eax]
jmp G_M60851_IG04
;; size=17 bbWeight=0 PerfScore 0.00
+G_M60851_IG21: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax]
+ mov edx, esi
+ ; gcrRegs +[edx]
+ mov ecx, 0xD1FFAB1E ; System.Threading.Tasks.Task
+ call CORINFO_HELP_CHKCASTCLASS_SPECIAL
+ ; gcrRegs -[edx esi] +[eax]
+ mov edi, eax
+ ; gcrRegs +[edi]
+ jmp G_M60851_IG08
+ ;; size=19 bbWeight=0 PerfScore 0.00
G_M60851_IG22: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax esi] +[edi]
+ ; gcrRegs -[eax]
mov ecx, 4
call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
; byrRegs +[eax]
mov edx, eax
; byrRegs +[edx]
- jmp SHORT G_M60851_IG18
+ jmp SHORT G_M60851_IG17
;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 288, prolog size 5, PerfScore 61.75, instruction count 92, allocated bytes for code 288 (MethodHash=8aa4124c) for method System.Threading.Tasks.ThreadPoolTaskScheduler+<>c:<.cctor>b__10_0(System.Object):this (Tier1)
+; Total bytes of code 301, prolog size 5, PerfScore 62.50, instruction count 93, allocated bytes for code 301 (MethodHash=8aa4124c) for method System.Threading.Tasks.ThreadPoolTaskScheduler+<>c:<.cctor>b__10_0(System.Object):this (Tier1)
; ============================================================
+16 (+12.31%) : 455391.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
@@ -10,23 +10,21 @@
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 11, 7 ) ref -> esi class-hnd single-def <System.Type>
-; V01 tmp0 [V01,T05] ( 3, 2 ) ref -> eax "guarded devirt return temp"
+; V01 tmp0 [V01,T06] ( 3, 2 ) ref -> eax "guarded devirt return temp"
;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
-; V03 tmp2 [V03,T06] ( 3, 2 ) ubyte -> edx "Inline return value spill temp"
-;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V05 tmp4 [V05,T09] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
-;* V06 tmp5 [V06 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.TypeHandle>
-; V07 tmp6 [V07,T07] ( 3, 2.00) int -> ebx
-; V08 tmp7 [V08,T08] ( 2, 2.00) ubyte -> edx "Inline stloc first use temp"
-;* V09 tmp8 [V09 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TypeHandle>
-;* V10 tmp9 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V11 tmp10 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V12 tmp11 [V12,T02] ( 2, 4.00) byref -> eax single-def "Inlining Arg"
-;* V13 tmp12 [V13,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V14 tmp13 [V14,T03] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V15 tmp14 [V15 ] ( 0, 0 ) int -> zero-ref "field V06.m_asTAddr (fldOffset=0x0)" P-INDEP
-; V16 tmp15 [V16,T04] ( 3, 3 ) int -> eax "field V09.m_asTAddr (fldOffset=0x0)" P-INDEP
-; V17 cse0 [V17,T01] ( 3, 3 ) int -> edi "CSE - aggressive"
+; V03 tmp2 [V03,T05] ( 4, 2 ) ubyte -> edx "Inline return value spill temp"
+; V04 tmp3 [V04,T02] ( 4, 4 ) ref -> edi class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
+;* V05 tmp4 [V05 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.TypeHandle>
+; V06 tmp5 [V06,T07] ( 3, 2 ) int -> ebx
+; V07 tmp6 [V07,T08] ( 2, 2 ) ubyte -> edx "Inline stloc first use temp"
+;* V08 tmp7 [V08 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TypeHandle>
+;* V09 tmp8 [V09 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V10 tmp9 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V11 tmp10 [V11,T03] ( 2, 4.00) byref -> eax single-def "Inlining Arg"
+;* V12 tmp11 [V12,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V13 tmp12 [V13 ] ( 0, 0 ) int -> zero-ref "field V05.m_asTAddr (fldOffset=0x0)" P-INDEP
+; V14 tmp13 [V14,T04] ( 3, 3.00) int -> eax "field V08.m_asTAddr (fldOffset=0x0)" P-INDEP
+; V15 rat0 [V15,T01] ( 5, 7.50) ref -> edi class-hnd "replacement local" <System.RuntimeType>
;
; Lcl frame size = 0
@@ -40,94 +38,115 @@ G_M8853_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
; gcrRegs +[esi]
;; size=8 bbWeight=1 PerfScore 4.50
G_M8853_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov edi, dword ptr [esi]
- cmp edi, 0xD1FFAB1E
- jne SHORT G_M8853_IG11
- mov eax, dword ptr [esi+0x0C]
+ mov ebx, esi
+ ; gcrRegs +[ebx]
+ cmp byte ptr [ebx], bl
+ mov edi, esi
+ ; gcrRegs +[edi]
+ test edi, edi
+ je SHORT G_M8853_IG05
+ ;; size=10 bbWeight=1 PerfScore 4.75
+G_M8853_IG03: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[ebx]
+ cmp dword ptr [edi], 0xD1FFAB1E
+ je SHORT G_M8853_IG05
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M8853_IG04: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[edi]
+ xor edi, edi
+ ; gcrRegs +[edi]
+ ;; size=2 bbWeight=0.25 PerfScore 0.06
+G_M8853_IG05: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ test edi, edi
+ je SHORT G_M8853_IG14
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M8853_IG06: ; bbWeight=1.00, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov eax, dword ptr [edi+0x0C]
test al, 2
jne SHORT G_M8853_IG13
- ;; size=17 bbWeight=1 PerfScore 6.50
-G_M8853_IG03: ; bbWeight=1.00, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov eax, dword ptr [eax]
and eax, 0xD1FFAB1E
xor ebx, ebx
cmp eax, 0xD1FFAB1E
sete bl
- ;; size=17 bbWeight=1.00 PerfScore 3.75
-G_M8853_IG04: ; bbWeight=1.00, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ;; size=24 bbWeight=1.00 PerfScore 7.00
+G_M8853_IG07: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
movzx edx, bl
- ;; size=3 bbWeight=1.00 PerfScore 0.25
-G_M8853_IG05: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
test edx, edx
- jne SHORT G_M8853_IG09
+ jne SHORT G_M8853_IG15
+ ;; size=7 bbWeight=1 PerfScore 1.50
+G_M8853_IG08: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[edi]
cmp esi, 0xD1FFAB1E
- je SHORT G_M8853_IG07
- cmp edi, 0xD1FFAB1E
+ je SHORT G_M8853_IG10
+ cmp dword ptr [esi], 0xD1FFAB1E
jne SHORT G_M8853_IG12
mov ecx, esi
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[ecx esi] +[eax]
- ;; size=28 bbWeight=1 PerfScore 7.00
-G_M8853_IG06: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=24 bbWeight=1 PerfScore 8.50
+G_M8853_IG09: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
pop ebx
pop esi
pop edi
pop ebp
ret
;; size=5 bbWeight=1 PerfScore 3.00
-G_M8853_IG07: ; bbWeight=0.58, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M8853_IG10: ; bbWeight=0.58, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax]
xor eax, eax
; gcrRegs +[eax]
;; size=2 bbWeight=0.58 PerfScore 0.14
-G_M8853_IG08: ; bbWeight=0.58, epilog, nogc, extend
+G_M8853_IG11: ; bbWeight=0.58, epilog, nogc, extend
pop ebx
pop esi
pop edi
pop ebp
ret
;; size=5 bbWeight=0.58 PerfScore 1.74
-G_M8853_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[eax]
- mov eax, 0xD1FFAB1E
- ; gcrRegs +[eax]
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M8853_IG10: ; bbWeight=0, epilog, nogc, extend
- pop ebx
- pop esi
- pop edi
- pop ebp
- ret
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M8853_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M8853_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax] +[esi]
mov ecx, esi
; gcrRegs +[ecx]
mov eax, dword ptr [esi]
+ mov eax, dword ptr [eax+0x58]
+ call [eax+0x10]<unknown method>
+ ; gcrRegs -[ecx esi] +[eax]
+ jmp SHORT G_M8853_IG09
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M8853_IG13: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax] +[esi edi]
+ xor ebx, ebx
+ jmp SHORT G_M8853_IG07
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M8853_IG14: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[edi]
+ mov ecx, esi
+ ; gcrRegs +[ecx]
+ mov eax, dword ptr [esi]
mov eax, dword ptr [eax+0x44]
call [eax+0x0C]<unknown method>
; gcrRegs -[ecx]
xor edx, edx
test al, 32
setne dl
- jmp SHORT G_M8853_IG05
- ;; size=19 bbWeight=0 PerfScore 0.00
-G_M8853_IG12: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, esi
- ; gcrRegs +[ecx]
- mov eax, dword ptr [esi]
- mov eax, dword ptr [eax+0x58]
- call [eax+0x10]<unknown method>
- ; gcrRegs -[ecx esi] +[eax]
- jmp SHORT G_M8853_IG06
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M8853_IG13: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax] +[esi]
- xor ebx, ebx
- jmp SHORT G_M8853_IG04
- ;; size=4 bbWeight=0 PerfScore 0.00
+ test edx, edx
+ je SHORT G_M8853_IG08
+ ;; size=21 bbWeight=0 PerfScore 0.00
+G_M8853_IG15: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[esi]
+ mov eax, 0xD1FFAB1E
+ ; gcrRegs +[eax]
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M8853_IG16: ; bbWeight=0, epilog, nogc, extend
+ pop ebx
+ pop esi
+ pop edi
+ pop ebp
+ ret
+ ;; size=5 bbWeight=0 PerfScore 0.00
-; Total bytes of code 130, prolog size 6, PerfScore 26.88, instruction count 58, allocated bytes for code 130 (MethodHash=a7e7dd6a) for method System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
+; Total bytes of code 146, prolog size 6, PerfScore 34.44, instruction count 66, allocated bytes for code 146 (MethodHash=a7e7dd6a) for method System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
; ============================================================
+34 (+566.67%) : 182676.dasm - T:TestEntryPoint():int (FullOpts)
@@ -2,7 +2,7 @@
; Emitting BLENDED_CODE for X86 with AVX512 - Windows
; FullOpts code
; optimized code
-; esp based frame
+; ebp based frame
; partially interruptible
; No matching PGO data
; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
@@ -10,21 +10,50 @@
;
;* V00 loc0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>>
;* V01 tmp0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
-;* V02 tmp1 [V02,T00] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-;* V03 tmp2 [V03,T02] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V04 tmp3 [V04,T01] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <<unknown class>>
+;* V02 tmp1 [V02,T01] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
+; V03 rat0 [V03,T00] ( 5, 7.50) ref -> eax class-hnd "replacement local" <<unknown class>>
;
; Lcl frame size = 0
-G_M32114_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- ;; size=0 bbWeight=1 PerfScore 0.00
-G_M32114_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M32114_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
+ push ebp
+ mov ebp, esp
+ ;; size=3 bbWeight=1 PerfScore 1.25
+G_M32114_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ mov eax, 0xD1FFAB1E
+ ; gcrRegs +[eax]
+ test eax, eax
+ je SHORT G_M32114_IG05
+ ;; size=9 bbWeight=1 PerfScore 1.50
+G_M32114_IG03: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
+ cmp dword ptr [eax], 0xD1FFAB1E
+ je SHORT G_M32114_IG05
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M32114_IG04: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax]
+ xor eax, eax
+ ; gcrRegs +[eax]
+ ;; size=2 bbWeight=0.25 PerfScore 0.06
+G_M32114_IG05: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
+ test eax, eax
+ je SHORT G_M32114_IG08
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M32114_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax]
mov eax, 100
- ;; size=5 bbWeight=1 PerfScore 0.25
-G_M32114_IG03: ; bbWeight=1, epilog, nogc, extend
+ ;; size=5 bbWeight=0.50 PerfScore 0.12
+G_M32114_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ pop ebp
ret
- ;; size=1 bbWeight=1 PerfScore 1.00
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M32114_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ mov eax, -1
+ ;; size=5 bbWeight=0.50 PerfScore 0.12
+G_M32114_IG09: ; bbWeight=0.50, epilog, nogc, extend
+ pop ebp
+ ret
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 6, prolog size 0, PerfScore 1.25, instruction count 2, allocated bytes for code 6 (MethodHash=d71e828d) for method T:TestEntryPoint():int (FullOpts)
+; Total bytes of code 40, prolog size 3, PerfScore 7.81, instruction count 16, allocated bytes for code 40 (MethodHash=d71e828d) for method T:TestEntryPoint():int (FullOpts)
; ============================================================
libraries.crossgen2.windows.x86.checked.mch
-34 (-58.62%) : 188346.dasm - CSharpx.Either+<>cDisplayClass13_0`1[System.Canon]:b0():System.Canon:this (FullOpts)
@@ -3,70 +3,37 @@
; FullOpts code
; ReadyToRun compilation
; optimized code
-; ebp based frame
+; esp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 4, 3.25) ref -> esi this class-hnd single-def <CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]>
-; V01 tmp0 [V01,T02] ( 3, 4.25) ref -> edi single-def "CASTCLASS eval op1"
-; V02 tmp1 [V02,T03] ( 3, 1.25) int -> eax "fgMakeTemp is creating a new local variable"
-; V03 tmp2 [V03,T00] ( 5, 6.75) ref -> ebx class-hnd "spilling QMark2" <System.__Canon>
-; TEMP_01 int -> [ebp-0x10]
+; V00 this [V00,T00] ( 4, 4 ) ref -> esi this class-hnd single-def <CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]>
+; V01 tmp0 [V01,T01] ( 2, 4 ) int -> ecx "argument with side effect"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M12636_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- push ebp
- mov ebp, esp
- push edi
push esi
- push ebx
- push eax
mov esi, ecx
+ ;; size=3 bbWeight=1 PerfScore 1.25
+G_M12636_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs +[esi]
- ;; size=9 bbWeight=1 PerfScore 5.50
-G_M12636_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov edi, gword ptr [esi+0x04]
- ; gcrRegs +[edi]
- mov ebx, edi
- ; gcrRegs +[ebx]
- test ebx, ebx
- je SHORT G_M12636_IG05
- ;; size=9 bbWeight=1 PerfScore 3.50
-G_M12636_IG03: ; bbWeight=0.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov eax, dword ptr [ebx]
- mov dword ptr [ebp-0x10], eax
mov ecx, dword ptr [esi]
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
- mov ecx, dword ptr [ebp-0x10]
- cmp ecx, eax
- je SHORT G_M12636_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.56
-G_M12636_IG04: ; bbWeight=0.12, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[ebx]
+ ; gcr arg pop 0
mov ecx, eax
- mov edx, edi
+ mov edx, gword ptr [esi+0x04]
; gcrRegs +[edx]
call [CORINFO_HELP_CHKCASTANY]
- ; gcrRegs -[edx edi] +[eax]
- mov ebx, eax
- ; gcrRegs +[ebx]
- ;; size=12 bbWeight=0.12 PerfScore 0.47
-G_M12636_IG05: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
- mov eax, ebx
- ; gcrRegs +[eax]
- ;; size=2 bbWeight=1 PerfScore 0.25
-G_M12636_IG06: ; bbWeight=1, epilog, nogc, extend
- pop ecx
- pop ebx
+ ; gcrRegs -[edx] +[eax]
+ ; gcr arg pop 0
+ ;; size=19 bbWeight=1 PerfScore 10.25
+G_M12636_IG03: ; bbWeight=1, epilog, nogc, extend
pop esi
- pop edi
- pop ebp
ret
- ;; size=6 bbWeight=1 PerfScore 3.50
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 58, prolog size 7, PerfScore 15.78, instruction count 29, allocated bytes for code 58 (MethodHash=bbb7cea3) for method CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]:<Cast>b__0():System.__Canon:this (FullOpts)
+; Total bytes of code 24, prolog size 1, PerfScore 13.00, instruction count 9, allocated bytes for code 24 (MethodHash=bbb7cea3) for method CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]:<Cast>b__0():System.__Canon:this (FullOpts)
; ============================================================
-30 (-52.63%) : 202125.dasm - System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c11[System.__Canon]:<GetMetadataViewProvider>b__1_0(System.Collections.Generic.IDictionary2[System.String,System.Object]):System.Canon:this (FullOpts)
@@ -3,70 +3,42 @@
; FullOpts code
; ReadyToRun compilation
; optimized code
-; ebp based frame
+; esp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 2.25) ref -> edi this class-hnd single-def <System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]>
-; V01 arg1 [V01,T01] ( 4, 3.12) ref -> esi class-hnd single-def <System.Collections.Generic.IDictionary`2[System.String,System.Object]>
-; V02 tmp0 [V02,T03] ( 3, 1.25) int -> eax "fgMakeTemp is creating a new local variable"
-; V03 tmp1 [V03,T00] ( 5, 6.75) ref -> ebx class-hnd "spilling QMark2" <System.__Canon>
-; TEMP_01 int -> [ebp-0x10]
+; V00 this [V00,T00] ( 3, 3 ) ref -> esi this class-hnd single-def <System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> edi class-hnd single-def <System.Collections.Generic.IDictionary`2[System.String,System.Object]>
+; V02 tmp0 [V02,T02] ( 2, 4 ) int -> ecx "argument with side effect"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M31417_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- push ebp
- mov ebp, esp
push edi
push esi
- push ebx
- push eax
- mov edi, ecx
+ mov esi, ecx
+ mov edi, edx
; gcrRegs +[edi]
- mov esi, edx
+ ;; size=6 bbWeight=1 PerfScore 2.50
+G_M31417_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs +[esi]
- ;; size=11 bbWeight=1 PerfScore 5.75
-G_M31417_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov ebx, esi
- ; gcrRegs +[ebx]
- test ebx, ebx
- je SHORT G_M31417_IG05
- ;; size=6 bbWeight=1 PerfScore 1.50
-G_M31417_IG03: ; bbWeight=0.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov eax, dword ptr [ebx]
- mov dword ptr [ebp-0x10], eax
- mov ecx, dword ptr [edi]
+ mov ecx, dword ptr [esi]
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
- mov ecx, dword ptr [ebp-0x10]
- cmp ecx, eax
- je SHORT G_M31417_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.56
-G_M31417_IG04: ; bbWeight=0.12, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[ebx]
+ ; gcr arg pop 0
mov ecx, eax
- mov edx, esi
+ mov edx, edi
; gcrRegs +[edx]
call [CORINFO_HELP_CHKCASTANY]
- ; gcrRegs -[edx esi] +[eax]
- mov ebx, eax
- ; gcrRegs +[ebx]
- ;; size=12 bbWeight=0.12 PerfScore 0.47
-G_M31417_IG05: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
- mov eax, ebx
- ; gcrRegs +[eax]
- ;; size=2 bbWeight=1 PerfScore 0.25
-G_M31417_IG06: ; bbWeight=1, epilog, nogc, extend
- pop ecx
- pop ebx
+ ; gcrRegs -[edx edi] +[eax]
+ ; gcr arg pop 0
+ ;; size=18 bbWeight=1 PerfScore 8.50
+G_M31417_IG03: ; bbWeight=1, epilog, nogc, extend
pop esi
pop edi
- pop ebp
ret
- ;; size=6 bbWeight=1 PerfScore 3.50
+ ;; size=3 bbWeight=1 PerfScore 2.00
-; Total bytes of code 57, prolog size 7, PerfScore 14.03, instruction count 29, allocated bytes for code 57 (MethodHash=9c5d8546) for method System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]:<GetMetadataViewProvider>b__1_0(System.Collections.Generic.IDictionary`2[System.String,System.Object]):System.__Canon:this (FullOpts)
+; Total bytes of code 27, prolog size 2, PerfScore 13.00, instruction count 12, allocated bytes for code 27 (MethodHash=9c5d8546) for method System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]:<GetMetadataViewProvider>b__1_0(System.Collections.Generic.IDictionary`2[System.String,System.Object]):System.__Canon:this (FullOpts)
; ============================================================
-30 (-52.63%) : 171495.dasm - System.Linq.ParallelQuery1+<>c__11[System.Canon,System.Canon]:b1_0(System.Canon):System.__Canon:this (FullOpts)
@@ -3,70 +3,42 @@
; FullOpts code
; ReadyToRun compilation
; optimized code
-; ebp based frame
+; esp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 2.25) ref -> edi this class-hnd single-def <System.Linq.ParallelQuery`1+<>c__1`1[System.__Canon,System.__Canon]>
-; V01 arg1 [V01,T01] ( 4, 3.12) ref -> esi class-hnd single-def <System.__Canon>
-; V02 tmp0 [V02,T03] ( 3, 1.25) int -> eax "fgMakeTemp is creating a new local variable"
-; V03 tmp1 [V03,T00] ( 5, 6.75) ref -> ebx class-hnd "spilling QMark2" <System.__Canon>
-; TEMP_01 int -> [ebp-0x10]
+; V00 this [V00,T00] ( 3, 3 ) ref -> esi this class-hnd single-def <System.Linq.ParallelQuery`1+<>c__1`1[System.__Canon,System.__Canon]>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> edi class-hnd single-def <System.__Canon>
+; V02 tmp0 [V02,T02] ( 2, 4 ) int -> ecx "argument with side effect"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M42611_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- push ebp
- mov ebp, esp
push edi
push esi
- push ebx
- push eax
- mov edi, ecx
+ mov esi, ecx
+ mov edi, edx
; gcrRegs +[edi]
- mov esi, edx
+ ;; size=6 bbWeight=1 PerfScore 2.50
+G_M42611_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs +[esi]
- ;; size=11 bbWeight=1 PerfScore 5.75
-G_M42611_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov ebx, esi
- ; gcrRegs +[ebx]
- test ebx, ebx
- je SHORT G_M42611_IG05
- ;; size=6 bbWeight=1 PerfScore 1.50
-G_M42611_IG03: ; bbWeight=0.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov eax, dword ptr [ebx]
- mov dword ptr [ebp-0x10], eax
- mov ecx, dword ptr [edi]
+ mov ecx, dword ptr [esi]
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
- mov ecx, dword ptr [ebp-0x10]
- cmp ecx, eax
- je SHORT G_M42611_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.56
-G_M42611_IG04: ; bbWeight=0.12, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[ebx]
+ ; gcr arg pop 0
mov ecx, eax
- mov edx, esi
+ mov edx, edi
; gcrRegs +[edx]
call [CORINFO_HELP_CHKCASTANY]
- ; gcrRegs -[edx esi] +[eax]
- mov ebx, eax
- ; gcrRegs +[ebx]
- ;; size=12 bbWeight=0.12 PerfScore 0.47
-G_M42611_IG05: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
- mov eax, ebx
- ; gcrRegs +[eax]
- ;; size=2 bbWeight=1 PerfScore 0.25
-G_M42611_IG06: ; bbWeight=1, epilog, nogc, extend
- pop ecx
- pop ebx
+ ; gcrRegs -[edx edi] +[eax]
+ ; gcr arg pop 0
+ ;; size=18 bbWeight=1 PerfScore 8.50
+G_M42611_IG03: ; bbWeight=1, epilog, nogc, extend
pop esi
pop edi
- pop ebp
ret
- ;; size=6 bbWeight=1 PerfScore 3.50
+ ;; size=3 bbWeight=1 PerfScore 2.00
-; Total bytes of code 57, prolog size 7, PerfScore 14.03, instruction count 29, allocated bytes for code 57 (MethodHash=645c598c) for method System.Linq.ParallelQuery`1+<>c__1`1[System.__Canon,System.__Canon]:<Cast>b__1_0(System.__Canon):System.__Canon:this (FullOpts)
+; Total bytes of code 27, prolog size 2, PerfScore 13.00, instruction count 12, allocated bytes for code 27 (MethodHash=645c598c) for method System.Linq.ParallelQuery`1+<>c__1`1[System.__Canon,System.__Canon]:<Cast>b__1_0(System.__Canon):System.__Canon:this (FullOpts)
; ============================================================
+0 (0.00%) : 203301.dasm - System.Xml.Linq.XDocument:GetFirstNodeSystem.__Canon:System.__Canon:this (FullOpts)
@@ -8,19 +8,18 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T07] ( 3, 3 ) ref -> ecx this class-hnd single-def <System.Xml.Linq.XDocument>
-; V01 TypeCtx [V01,T04] ( 4, 4 ) int -> esi single-def
+; V00 this [V00,T08] ( 3, 3 ) ref -> ecx this class-hnd single-def <System.Xml.Linq.XDocument>
+; V01 TypeCtx [V01,T06] ( 4, 4 ) int -> esi single-def
; V02 loc0 [V02,T01] ( 6, 18 ) ref -> ebx class-hnd <<unknown class>>
-;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.__Canon>
+; V03 loc1 [V03,T04] ( 3, 8.50) ref -> eax class-hnd <System.__Canon>
;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
-; V05 loc3 [V05,T02] ( 3, 17 ) ref -> eax "CASTCLASS eval op1"
-; V06 tmp1 [V06,T08] ( 3, 5 ) int -> ecx "fgMakeTemp is creating a new local variable"
-; V07 tmp2 [V07,T00] ( 5, 20 ) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
-; V08 tmp3 [V08,T03] ( 2, 16 ) int -> ecx "argument with side effect"
-; V09 cse0 [V09,T06] ( 3, 6 ) int -> esi hoist "CSE - moderate"
-; V10 cse1 [V10,T05] ( 3, 6 ) ref -> edi "CSE - moderate"
+;* V05 loc3 [V05,T05] ( 0, 0 ) int -> zero-ref "argument with side effect"
+; V06 tmp1 [V06,T00] ( 3, 24 ) int -> [ebp-0x14] spill-single-def "argument with side effect"
+; V07 tmp2 [V07,T02] ( 2, 16 ) ref -> edx "argument with side effect"
+; V08 cse0 [V08,T03] ( 2, 5 ) int -> esi hoist "CSE - moderate"
+; V09 cse1 [V09,T07] ( 3, 6 ) ref -> edi "CSE - moderate"
;
-; Lcl frame size = 4
+; Lcl frame size = 8
G_M55666_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp
@@ -28,10 +27,10 @@ G_M55666_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, b
push edi
push esi
push ebx
- push eax
+ sub esp, 8
mov dword ptr [ebp-0x10], edx
mov esi, edx
- ;; size=12 bbWeight=1 PerfScore 6.50
+ ;; size=14 bbWeight=1 PerfScore 5.75
G_M55666_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[ecx]
mov edi, gword ptr [ecx+0x10]
@@ -42,7 +41,7 @@ G_M55666_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000
mov ebx, eax
; gcrRegs +[ebx]
test ebx, ebx
- je SHORT G_M55666_IG07
+ je SHORT G_M55666_IG04
mov ecx, esi
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
; gcrRegs -[eax]
@@ -50,64 +49,45 @@ G_M55666_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000
;; size=27 bbWeight=1 PerfScore 10.25
G_M55666_IG03: ; bbWeight=4, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref, isz
mov ebx, gword ptr [ebx+0x0C]
- mov ecx, esi
+ mov eax, esi
+ mov dword ptr [ebp-0x14], eax
+ mov ecx, eax
mov edx, ebx
; gcrRegs +[edx]
call [CORINFO_HELP_ISINSTANCEOFANY]
; gcrRegs -[edx] +[eax]
mov edx, eax
; gcrRegs +[edx]
- test edx, edx
- je SHORT G_M55666_IG06
- ;; size=19 bbWeight=4 PerfScore 28.00
-G_M55666_IG04: ; bbWeight=1, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ebx edi]
- mov ecx, esi
- cmp dword ptr [edx], ecx
- je SHORT G_M55666_IG09
- ;; size=6 bbWeight=1 PerfScore 4.25
-G_M55666_IG05: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[edx]
- mov edx, eax
- ; gcrRegs +[edx]
+ mov ecx, dword ptr [ebp-0x14]
call [CORINFO_HELP_CHKCASTANY]
; gcrRegs -[edx]
- mov edx, eax
- ; gcrRegs +[edx]
- jmp SHORT G_M55666_IG09
- ;; size=12 bbWeight=0.50 PerfScore 2.75
-G_M55666_IG06: ; bbWeight=4, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax edx] +[ebx edi]
+ test eax, eax
+ jne SHORT G_M55666_IG06
cmp ebx, edi
jne SHORT G_M55666_IG03
- ;; size=4 bbWeight=4 PerfScore 5.00
-G_M55666_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[ebx edi]
+ ;; size=37 bbWeight=4 PerfScore 54.00
+G_M55666_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax ebx edi]
xor eax, eax
; gcrRegs +[eax]
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M55666_IG08: ; bbWeight=0.50, epilog, nogc, extend
- pop ecx
+G_M55666_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ lea esp, [ebp-0x0C]
pop ebx
pop esi
pop edi
pop ebp
ret
- ;; size=6 bbWeight=0.50 PerfScore 1.75
-G_M55666_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[eax] +[edx]
- mov eax, edx
- ; gcrRegs +[eax]
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M55666_IG10: ; bbWeight=0.50, epilog, nogc, extend
- pop ecx
+ ;; size=8 bbWeight=0.50 PerfScore 1.75
+G_M55666_IG06: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
+ lea esp, [ebp-0x0C]
pop ebx
pop esi
pop edi
pop ebp
ret
- ;; size=6 bbWeight=0.50 PerfScore 1.75
+ ;; size=8 bbWeight=0.50 PerfScore 1.75
-; Total bytes of code 96, prolog size 12, PerfScore 60.50, instruction count 47, allocated bytes for code 96 (MethodHash=88e2268d) for method System.Xml.Linq.XDocument:GetFirstNode[System.__Canon]():System.__Canon:this (FullOpts)
+; Total bytes of code 96, prolog size 14, PerfScore 73.62, instruction count 43, allocated bytes for code 96 (MethodHash=88e2268d) for method System.Xml.Linq.XDocument:GetFirstNode[System.__Canon]():System.__Canon:this (FullOpts)
; ============================================================
+0 (0.00%) : 169994.dasm - Microsoft.Internal.Collections.WeakReferenceCollection1[System.__Canon]:AliveItemsToList():System.Collections.Generic.List1[System.__Canon]:this (FullOpts)
@@ -8,21 +8,20 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T07] ( 4, 4 ) ref -> [ebp-0x3C] do-not-enreg[H] this class-hnd EH-live single-def <Microsoft.Internal.Collections.WeakReferenceCollection`1[System.__Canon]>
+; V00 this [V00,T08] ( 4, 4 ) ref -> [ebp-0x3C] do-not-enreg[H] this class-hnd EH-live single-def <Microsoft.Internal.Collections.WeakReferenceCollection`1[System.__Canon]>
; V01 loc0 [V01,T11] ( 3, 4 ) ref -> edi class-hnd exact single-def <System.Collections.Generic.List`1[System.__Canon]>
; V02 loc1 [V02 ] ( 6, 11 ) struct (16) [ebp-0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.WeakReference]>
-; V03 loc2 [V03,T06] ( 2, 8 ) ref -> [ebp-0x40] class-hnd spill-single-def <System.WeakReference>
-;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.__Canon>
-; V05 tmp0 [V05,T08] ( 3, 6 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[System.__Canon]>
-; V06 tmp1 [V06,T01] ( 3, 17 ) ref -> eax "CASTCLASS eval op1"
-; V07 tmp2 [V07,T10] ( 3, 5 ) int -> ecx "fgMakeTemp is creating a new local variable"
-; V08 tmp3 [V08,T00] ( 5, 23 ) ref -> edx class-hnd "spilling QMark2" <System.__Canon>
-; V09 tmp4 [V09,T03] ( 2, 16 ) int -> [ebp-0x34] spill-single-def "argument with side effect"
-; V10 tmp5 [V10,T02] ( 2, 16 ) ref -> edx "argument with side effect"
-; V11 EHSlots [V11 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"
-; V12 cse0 [V12,T05] ( 3, 9 ) int -> [ebp-0x38] spill-single-def "CSE - aggressive"
-; V13 cse1 [V13,T04] ( 7, 11 ) int -> ebx multi-def "CSE - aggressive"
-; V14 cse2 [V14,T09] ( 3, 6 ) int -> esi "CSE - moderate"
+; V03 loc2 [V03,T05] ( 2, 8 ) ref -> [ebp-0x40] class-hnd spill-single-def <System.WeakReference>
+; V04 loc3 [V04,T04] ( 3, 10 ) ref -> eax class-hnd <System.__Canon>
+; V05 tmp0 [V05,T09] ( 3, 6 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[System.__Canon]>
+;* V06 tmp1 [V06,T06] ( 0, 0 ) int -> zero-ref "argument with side effect"
+; V07 tmp2 [V07,T01] ( 2, 16 ) ref -> edx "argument with side effect"
+; V08 tmp3 [V08,T00] ( 3, 24 ) int -> [ebp-0x34] spill-single-def "argument with side effect"
+; V09 tmp4 [V09,T02] ( 2, 16 ) ref -> edx "argument with side effect"
+; V10 EHSlots [V10 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"
+; V11 cse0 [V11,T10] ( 1, 1 ) int -> [ebp-0x38] spill-single-def hoist "CSE - moderate"
+; V12 cse1 [V12,T07] ( 4, 7 ) int -> esi "CSE - moderate"
+; V13 cse2 [V13,T03] ( 7, 11 ) int -> ebx multi-def "CSE - aggressive"
;
; Lcl frame size = 52
@@ -39,7 +38,7 @@ G_M63535_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov gword ptr [ebp-0x3C], ecx
; GC ptr vars +{V00}
;; size=23 bbWeight=1 PerfScore 9.83
-G_M63535_IG02: ; bbWeight=1, gcVars=00000080 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M63535_IG02: ; bbWeight=1, gcVars=00000100 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
mov ecx, gword ptr [ebp-0x3C]
; gcrRegs +[ecx]
mov esi, dword ptr [ecx]
@@ -69,8 +68,11 @@ G_M63535_IG03: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000
mov edx, ebx
call [<unknown method>]
test eax, eax
- je SHORT G_M63535_IG09
- ;; size=21 bbWeight=1 PerfScore 7.00
+ je SHORT G_M63535_IG07
+ mov ecx, esi
+ call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
+ mov dword ptr [ebp-0x38], eax
+ ;; size=32 bbWeight=1 PerfScore 11.25
G_M63535_IG04: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
lea ecx, [ebp-0x30]
mov edx, ebx
@@ -81,9 +83,7 @@ G_M63535_IG04: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000
mov ecx, esi
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
; gcrRegs -[eax]
- mov ecx, eax
- mov dword ptr [ebp-0x38], ecx
- mov dword ptr [ebp-0x34], ecx
+ mov dword ptr [ebp-0x34], eax
mov ecx, gword ptr [ebp-0x40]
; gcrRegs +[ecx]
cmp dword ptr [ecx], ecx
@@ -97,44 +97,34 @@ G_M63535_IG04: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000
; gcrRegs -[edx]
mov edx, eax
; gcrRegs +[edx]
- test edx, edx
- je SHORT G_M63535_IG08
- ;; size=58 bbWeight=4 PerfScore 92.00
-G_M63535_IG05: ; bbWeight=1, gcrefRegs=00000085 {eax edx edi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, dword ptr [ebp-0x38]
- cmp dword ptr [edx], ecx
- je SHORT G_M63535_IG07
- ;; size=7 bbWeight=1 PerfScore 5.00
-G_M63535_IG06: ; bbWeight=0.50, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[edx]
- mov edx, eax
- ; gcrRegs +[edx]
+ mov ecx, dword ptr [ebp-0x34]
call [CORINFO_HELP_CHKCASTANY]
; gcrRegs -[edx]
- mov edx, eax
- ; gcrRegs +[edx]
- ;; size=10 bbWeight=0.50 PerfScore 1.75
-G_M63535_IG07: ; bbWeight=2, gcrefRegs=00000084 {edx edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
+ test eax, eax
+ je SHORT G_M63535_IG06
+ ;; size=62 bbWeight=4 PerfScore 103.00
+G_M63535_IG05: ; bbWeight=2, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, byref
mov ecx, edi
; gcrRegs +[ecx]
+ mov edx, eax
+ ; gcrRegs +[edx]
call [<unknown method>]
- ; gcrRegs -[ecx edx]
- ;; size=8 bbWeight=2 PerfScore 6.50
-G_M63535_IG08: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax ecx edx]
+ ;; size=10 bbWeight=2 PerfScore 7.00
+G_M63535_IG06: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
lea ecx, [ebp-0x30]
mov edx, ebx
call [<unknown method>]
test eax, eax
jne SHORT G_M63535_IG04
;; size=15 bbWeight=4 PerfScore 20.00
-G_M63535_IG09: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+G_M63535_IG07: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
lea ecx, [ebp-0x30]
mov edx, ebx
call [<unknown method>]
- jmp SHORT G_M63535_IG11
+ jmp SHORT G_M63535_IG09
;; size=13 bbWeight=1 PerfScore 5.75
-G_M63535_IG10: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M63535_IG08: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[edi]
lea ecx, [ebp-0x30]
mov ebx, dword ptr [(reloc)] ; System.Collections.Generic.List`1+Enumerator[System.WeakReference]
@@ -143,12 +133,12 @@ G_M63535_IG10: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
pop eax
jmp eax
;; size=20 bbWeight=0 PerfScore 0.00
-G_M63535_IG11: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+G_M63535_IG09: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
; gcrRegs +[edi]
mov eax, edi
; gcrRegs +[eax]
;; size=2 bbWeight=1 PerfScore 0.25
-G_M63535_IG12: ; bbWeight=1, epilog, nogc, extend
+G_M63535_IG10: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -157,9 +147,9 @@ G_M63535_IG12: ; bbWeight=1, epilog, nogc, extend
ret
;; size=8 bbWeight=1 PerfScore 3.50
-; Total bytes of code 233, prolog size 20, PerfScore 174.08, instruction count 78, allocated bytes for code 233 (MethodHash=4d8107d0) for method Microsoft.Internal.Collections.WeakReferenceCollection`1[System.__Canon]:AliveItemsToList():System.Collections.Generic.List`1[System.__Canon]:this (FullOpts)
+; Total bytes of code 233, prolog size 20, PerfScore 183.08, instruction count 76, allocated bytes for code 233 (MethodHash=4d8107d0) for method Microsoft.Internal.Collections.WeakReferenceCollection`1[System.__Canon]:AliveItemsToList():System.Collections.Generic.List`1[System.__Canon]:this (FullOpts)
; ============================================================
*************** EH table for Microsoft.Internal.Collections.WeakReferenceCollection`1[System.__Canon]:AliveItemsToList():System.Collections.Generic.List`1[System.__Canon]:this
1 EH table entries, 1 total EH entries reported to VM
-EH#0: try [G_M63535_IG03..G_M63535_IG09) handled by [G_M63535_IG10..G_M63535_IG11) (fault)
+EH#0: try [G_M63535_IG03..G_M63535_IG07) handled by [G_M63535_IG08..G_M63535_IG09) (fault)
+3 (+0.70%) : 61897.dasm - Microsoft.CodeAnalysis.CSharp.BoundNodeExtensions:g__doRewrite|8_0[System.__Canon,System.__Canon,System.__Canon](Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,System.__Canon,System.Func`4[System.__Canon,int,System.__Canon,System.__Canon],System.Func`5[Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,System.__Canon,System.__Canon,System.__Canon,System.__Canon],byref):System.__Canon (FullOpts)
@@ -9,43 +9,41 @@
; 0 inlinees with PGO data; 6 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T21] ( 3, 3 ) ref -> [ebp-0x1C] class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator>
-; V01 arg1 [V01,T10] ( 6, 12 ) ref -> esi class-hnd single-def <System.__Canon>
-; V02 arg2 [V02,T14] ( 5, 10 ) ref -> edi class-hnd single-def <System.Func`4[System.__Canon,int,System.__Canon,System.__Canon]>
-; V03 arg3 [V03,T16] ( 3, 10 ) ref -> [ebp+0x10] class-hnd single-def <System.Func`5[Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,System.__Canon,System.__Canon,System.__Canon,System.__Canon]>
-; V04 arg4 [V04,T15] ( 5, 10 ) byref -> ebx single-def
-; V05 TypeCtx [V05,T19] ( 4, 8 ) int -> [ebp+0x08] single-def
-; V06 loc0 [V06,T18] ( 4, 8 ) ref -> [ebp-0x20] ld-addr-op class-hnd <System.__Canon>
-; V07 loc1 [V07,T13] ( 4, 11 ) ref -> [ebp-0x24] class-hnd spill-single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator]>
+; V00 arg0 [V00,T23] ( 3, 3 ) ref -> [ebp-0x24] class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator>
+; V01 arg1 [V01,T09] ( 6, 12 ) ref -> esi class-hnd single-def <System.__Canon>
+; V02 arg2 [V02,T12] ( 5, 10 ) ref -> edi class-hnd single-def <System.Func`4[System.__Canon,int,System.__Canon,System.__Canon]>
+; V03 arg3 [V03,T14] ( 3, 10 ) ref -> [ebp+0x10] class-hnd single-def <System.Func`5[Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,System.__Canon,System.__Canon,System.__Canon,System.__Canon]>
+; V04 arg4 [V04,T13] ( 5, 10 ) byref -> ebx single-def
+; V05 TypeCtx [V05,T18] ( 4, 8 ) int -> [ebp+0x08] single-def
+; V06 loc0 [V06,T17] ( 4, 8 ) ref -> [ebp-0x28] ld-addr-op class-hnd <System.__Canon>
+; V07 loc1 [V07,T11] ( 4, 11 ) ref -> [ebp-0x2C] class-hnd spill-single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator]>
; V08 loc2 [V08 ] ( 6, 20 ) ref -> [ebp-0x14] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator>
-; V09 loc3 [V09,T20] ( 2, 8 ) ref -> [ebp-0x28] class-hnd spill-single-def <System.__Canon>
+; V09 loc3 [V09,T19] ( 2, 8 ) ref -> [ebp-0x30] class-hnd spill-single-def <System.__Canon>
;* V10 loc4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.__Canon>
-;* V11 loc5 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.__Canon>
-; V12 loc6 [V12,T05] ( 6, 16 ) ref -> registers class-hnd <System.__Canon>
-; V13 loc7 [V13,T00] ( 6, 24 ) ref -> [ebp-0x2C] class-hnd <Microsoft.CodeAnalysis.CSharp.BoundExpression>
-; V14 loc8 [V14,T12] ( 6, 12 ) int -> eax
+; V11 loc5 [V11,T15] ( 3, 10 ) ref -> eax class-hnd <System.__Canon>
+; V12 loc6 [V12,T04] ( 6, 16 ) ref -> registers class-hnd <System.__Canon>
+; V13 loc7 [V13,T02] ( 6, 20 ) ref -> [ebp-0x34] class-hnd <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+; V14 loc8 [V14,T10] ( 6, 12 ) int -> ecx
;* V15 loc9 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.__Canon>
-;* V16 loc10 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.__Canon>
-; V17 loc11 [V17,T17] ( 3, 10 ) ref -> [ebp-0x30] class-hnd spill-single-def <Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator>
-; V18 loc12 [V18,T03] ( 3, 17 ) ref -> eax "CASTCLASS eval op1"
-; V19 tmp1 [V19,T22] ( 3, 5 ) int -> ecx "fgMakeTemp is creating a new local variable"
-; V20 tmp2 [V20,T01] ( 5, 23 ) ref -> edx class-hnd "spilling QMark2" <System.__Canon>
-; V21 tmp3 [V21,T04] ( 3, 17 ) ref -> eax "CASTCLASS eval op1"
-; V22 tmp4 [V22,T23] ( 3, 5 ) int -> ecx "fgMakeTemp is creating a new local variable"
-; V23 tmp5 [V23,T02] ( 5, 23 ) ref -> edx class-hnd "spilling QMark2" <System.__Canon>
-; V24 tmp6 [V24,T24] ( 3, 0 ) ref -> eax class-hnd exact "Single-def Box Helper" <<unknown class>>
-; V25 tmp7 [V25,T25] ( 3, 0 ) ref -> eax class-hnd exact "Single-def Box Helper" <<unknown class>>
-; V26 tmp8 [V26,T06] ( 2, 16 ) ref -> ecx class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator>
-; V27 tmp9 [V27,T26] ( 2, 0 ) ref -> eax class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator>
-; V28 tmp10 [V28,T27] ( 2, 0 ) ref -> esi class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
-; V29 tmp11 [V29,T07] ( 2, 16 ) ref -> ecx class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator>
-; V30 tmp12 [V30,T28] ( 2, 0 ) ref -> eax class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator>
-; V31 tmp13 [V31,T29] ( 2, 0 ) ref -> esi class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
-; V32 tmp14 [V32,T08] ( 2, 16 ) int -> edx "argument with side effect"
-; V33 tmp15 [V33,T09] ( 2, 16 ) int -> ecx "argument with side effect"
-; V34 cse0 [V34,T11] ( 5, 14 ) int -> [ebp-0x18] spill-single-def "CSE - moderate"
+; V16 loc10 [V16,T16] ( 3, 10 ) ref -> eax class-hnd <System.__Canon>
+; V17 loc11 [V17,T22] ( 3, 6 ) ref -> [ebp-0x38] class-hnd spill-single-def <Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator>
+; V18 loc12 [V18,T24] ( 3, 0 ) ref -> eax class-hnd exact "Single-def Box Helper" <<unknown class>>
+; V19 tmp1 [V19,T25] ( 3, 0 ) ref -> eax class-hnd exact "Single-def Box Helper" <<unknown class>>
+; V20 tmp2 [V20,T05] ( 2, 16 ) ref -> ecx class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator>
+; V21 tmp3 [V21,T26] ( 2, 0 ) ref -> eax class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator>
+; V22 tmp4 [V22,T27] ( 2, 0 ) ref -> esi class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+; V23 tmp5 [V23,T06] ( 2, 16 ) ref -> ecx class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator>
+; V24 tmp6 [V24,T28] ( 2, 0 ) ref -> eax class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator>
+; V25 tmp7 [V25,T29] ( 2, 0 ) ref -> esi class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+;* V26 tmp8 [V26,T20] ( 0, 0 ) int -> zero-ref "argument with side effect"
+; V27 tmp9 [V27,T00] ( 3, 24 ) int -> [ebp-0x18] spill-single-def "argument with side effect"
+; V28 tmp10 [V28,T07] ( 2, 16 ) ref -> edx "argument with side effect"
+;* V29 tmp11 [V29,T21] ( 0, 0 ) int -> zero-ref "argument with side effect"
+; V30 tmp12 [V30,T01] ( 3, 24 ) int -> [ebp-0x1C] spill-single-def "argument with side effect"
+; V31 tmp13 [V31,T08] ( 2, 16 ) ref -> edx "argument with side effect"
+; V32 cse0 [V32,T03] ( 3, 12 ) int -> [ebp-0x20] spill-single-def "CSE - aggressive"
;
-; Lcl frame size = 36
+; Lcl frame size = 44
G_M31080_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -53,12 +51,12 @@ G_M31080_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 36
+ sub esp, 44
xor eax, eax
mov dword ptr [ebp-0x14], eax
mov eax, dword ptr [ebp+0x08]
mov dword ptr [ebp-0x10], eax
- mov gword ptr [ebp-0x1C], ecx
+ mov gword ptr [ebp-0x24], ecx
; GC ptr vars +{V00}
mov esi, edx
; gcrRegs +[esi]
@@ -67,24 +65,24 @@ G_M31080_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov ebx, bword ptr [ebp+0x0C]
; byrRegs +[ebx]
;; size=31 bbWeight=1 PerfScore 12.00
-G_M31080_IG02: ; bbWeight=1, gcVars=00200000 {V00}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000008 {ebx}, gcvars, byref
+G_M31080_IG02: ; bbWeight=1, gcVars=00800000 {V00}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000008 {ebx}, gcvars, byref
xor ecx, ecx
; gcrRegs +[ecx]
- mov gword ptr [ebp-0x20], ecx
+ mov gword ptr [ebp-0x28], ecx
; GC ptr vars +{V06}
mov ecx, dword ptr [(reloc)] ; Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator]
; gcrRegs -[ecx]
call [<unknown method>]
; gcrRegs +[eax]
- mov gword ptr [ebp-0x24], eax
+ mov gword ptr [ebp-0x2C], eax
; GC ptr vars +{V07}
mov ecx, dword ptr [ebp+0x08]
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
; gcrRegs -[eax]
push eax
- mov edx, gword ptr [ebp-0x24]
+ mov edx, gword ptr [ebp-0x2C]
; gcrRegs +[edx]
- mov ecx, gword ptr [ebp-0x1C]
+ mov ecx, gword ptr [ebp-0x24]
; gcrRegs +[ecx]
; GC ptr vars -{V00}
call [Microsoft.CodeAnalysis.CSharp.BoundNodeExtensions:<RewriteInterpolatedStringAddition>g__pushLeftNodes|8_1[System.__Canon,System.__Canon,System.__Canon](Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator])]
@@ -93,79 +91,63 @@ G_M31080_IG02: ; bbWeight=1, gcVars=00200000 {V00}, gcrefRegs=000000C0 {e
G_M31080_IG03: ; bbWeight=8, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000008 {ebx}, byref
push dword ptr [(reloc)]
lea edx, [ebp-0x14]
- mov ecx, gword ptr [ebp-0x24]
+ mov ecx, gword ptr [ebp-0x2C]
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[ecx]
test eax, eax
- je G_M31080_IG17
+ je G_M31080_IG11
;; size=26 bbWeight=8 PerfScore 62.00
-G_M31080_IG04: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M31080_IG04: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000008 {ebx}, byref
mov ecx, gword ptr [ebp-0x14]
; gcrRegs +[ecx]
mov eax, gword ptr [ecx+0x10]
; gcrRegs +[eax]
- mov gword ptr [ebp-0x2C], eax
+ mov gword ptr [ebp-0x34], eax
; GC ptr vars +{V13}
mov ecx, dword ptr [ebp+0x08]
; gcrRegs -[ecx]
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
; gcrRegs -[eax]
- mov ecx, eax
- mov dword ptr [ebp-0x18], ecx
- mov edx, ecx
- mov edx, gword ptr [ebp-0x2C]
+ mov dword ptr [ebp-0x20], eax
+ mov edx, eax
+ mov dword ptr [ebp-0x18], edx
+ mov ecx, edx
+ mov edx, gword ptr [ebp-0x34]
; gcrRegs +[edx]
call [CORINFO_HELP_ISINSTANCEOFANY]
; gcrRegs -[edx] +[eax]
mov edx, eax
; gcrRegs +[edx]
- test edx, edx
- je SHORT G_M31080_IG07
- ;; size=40 bbWeight=4 PerfScore 60.00
-G_M31080_IG05: ; bbWeight=1, gcVars=00002000 {V07}, gcrefRegs=000000C5 {eax edx esi edi}, byrefRegs=00000008 {ebx}, gcvars, byref, isz
- ; GC ptr vars -{V06 V13}
mov ecx, dword ptr [ebp-0x18]
- cmp dword ptr [edx], ecx
- je SHORT G_M31080_IG14
- ;; size=7 bbWeight=1 PerfScore 5.00
-G_M31080_IG06: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000008 {ebx}, byref, isz
- ; gcrRegs -[edx]
- mov edx, eax
- ; gcrRegs +[edx]
call [CORINFO_HELP_CHKCASTANY]
; gcrRegs -[edx]
- mov edx, eax
- ; gcrRegs +[edx]
- jmp SHORT G_M31080_IG14
- ;; size=12 bbWeight=0.50 PerfScore 2.75
-G_M31080_IG07: ; bbWeight=4, gcVars=00042001 {V06 V07 V13}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000008 {ebx}, gcvars, byref
- ; gcrRegs -[eax edx]
- ; GC ptr vars +{V00 V06 V13 V18}
- mov ecx, gword ptr [ebp-0x2C]
+ test eax, eax
+ jne G_M31080_IG09
+ ;; size=56 bbWeight=4 PerfScore 80.00
+G_M31080_IG05: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000008 {ebx}, byref
+ ; gcrRegs -[eax]
+ mov ecx, gword ptr [ebp-0x34]
; gcrRegs +[ecx]
- ; GC ptr vars -{V00 V13 V18}
+ ; GC ptr vars -{V13}
call [CORINFO_HELP_READYTORUN_ISINSTANCEOF]
; gcrRegs -[ecx] +[eax]
test eax, eax
- je G_M31080_IG19
- ;; size=17 bbWeight=4 PerfScore 21.00
-G_M31080_IG08: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000008 {ebx}, byref
- ; gcrRegs -[eax]
- mov eax, gword ptr [ebp-0x20]
- ; gcrRegs +[eax]
- ;; size=3 bbWeight=2 PerfScore 2.00
-G_M31080_IG09: ; bbWeight=4, gcVars=00002000 {V07}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000008 {ebx}, gcvars, byref, isz
+ je G_M31080_IG13
+ mov eax, gword ptr [ebp-0x28]
+ ;; size=20 bbWeight=2 PerfScore 12.50
+G_M31080_IG06: ; bbWeight=4, gcVars=00000800 {V07}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000008 {ebx}, gcvars, byref, isz
; GC ptr vars -{V06}
- mov gword ptr [ebp-0x28], eax
+ mov gword ptr [ebp-0x30], eax
; GC ptr vars +{V09}
mov ecx, gword ptr [ebp-0x14]
; gcrRegs +[ecx]
mov ecx, gword ptr [ecx+0x14]
mov eax, ecx
- mov ecx, dword ptr [ebp-0x18]
+ mov ecx, dword ptr [ebp-0x20]
; gcrRegs -[ecx]
- mov gword ptr [ebp-0x2C], eax
+ mov dword ptr [ebp-0x1C], ecx
+ mov gword ptr [ebp-0x34], eax
; GC ptr vars +{V13}
mov edx, eax
; gcrRegs +[edx]
@@ -173,38 +155,44 @@ G_M31080_IG09: ; bbWeight=4, gcVars=00002000 {V07}, gcrefRegs=000000C1 {e
; gcrRegs -[edx]
mov edx, eax
; gcrRegs +[edx]
- test edx, edx
- je SHORT G_M31080_IG15
- ;; size=31 bbWeight=4 PerfScore 44.00
-G_M31080_IG10: ; bbWeight=1, gcVars=00102000 {V07 V09}, gcrefRegs=000000C5 {eax edx esi edi}, byrefRegs=00000008 {ebx}, gcvars, byref, isz
- ; GC ptr vars -{V13}
- mov ecx, dword ptr [ebp-0x18]
- cmp dword ptr [edx], ecx
- je SHORT G_M31080_IG12
- ;; size=7 bbWeight=1 PerfScore 5.00
-G_M31080_IG11: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000008 {ebx}, byref
- ; gcrRegs -[edx]
- mov edx, eax
- ; gcrRegs +[edx]
+ mov ecx, dword ptr [ebp-0x1C]
call [CORINFO_HELP_CHKCASTANY]
; gcrRegs -[edx]
+ test eax, eax
+ jne SHORT G_M31080_IG10
+ ;; size=43 bbWeight=4 PerfScore 64.00
+G_M31080_IG07: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000008 {ebx}, byref
+ ; gcrRegs -[eax]
+ mov ecx, gword ptr [ebp-0x34]
...
libraries.pmi.windows.x86.checked.mch
-14 (-42.42%) : 299274.dasm - System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c11[System.__Canon]:<GetMetadataViewProvider>b__1_0(System.Collections.Generic.IDictionary2[System.String,System.Object]):System.Canon:this (FullOpts)
@@ -2,51 +2,35 @@
; Emitting BLENDED_CODE for X86 with AVX512 - Windows
; FullOpts code
; optimized code
-; ebp based frame
+; esp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 2.25) ref -> esi this class-hnd single-def <System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]>
-; V01 arg1 [V01,T01] ( 4, 3.12) ref -> edx class-hnd single-def <System.Collections.Generic.IDictionary`2[System.String,System.Object]>
-; V02 tmp0 [V02,T03] ( 3, 1.25) int -> ecx "fgMakeTemp is creating a new local variable"
-; V03 tmp1 [V03,T00] ( 5, 6.75) ref -> eax class-hnd "spilling QMark2" <System.__Canon>
+; V00 this [V00,T00] ( 3, 3 ) ref -> esi this class-hnd single-def <System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> edx class-hnd single-def <System.Collections.Generic.IDictionary`2[System.String,System.Object]>
;
; Lcl frame size = 0
G_M31417_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- push ebp
- mov ebp, esp
push esi
mov esi, ecx
- ; gcrRegs +[esi]
- ;; size=6 bbWeight=1 PerfScore 2.50
-G_M31417_IG02: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[edx]
- mov eax, edx
- ; gcrRegs +[eax]
- test eax, eax
- je SHORT G_M31417_IG05
- ;; size=6 bbWeight=1 PerfScore 1.50
-G_M31417_IG03: ; bbWeight=0.25, gcrefRegs=00000045 {eax edx esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=3 bbWeight=1 PerfScore 1.25
+G_M31417_IG02: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs +[edx esi]
mov ecx, dword ptr [esi]
mov ecx, dword ptr [ecx+0x24]
mov ecx, dword ptr [ecx]
mov ecx, dword ptr [ecx]
- cmp dword ptr [eax], ecx
- je SHORT G_M31417_IG05
- ;; size=13 bbWeight=0.25 PerfScore 3.00
-G_M31417_IG04: ; bbWeight=0.12, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[edx] +[eax]
- ;; size=5 bbWeight=0.12 PerfScore 0.12
-G_M31417_IG05: ; bbWeight=1, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ; gcr arg pop 0
+ ;; size=14 bbWeight=1 PerfScore 9.00
+G_M31417_IG03: ; bbWeight=1, epilog, nogc, extend
pop esi
- pop ebp
ret
- ;; size=3 bbWeight=1 PerfScore 2.00
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 33, prolog size 4, PerfScore 9.12, instruction count 17, allocated bytes for code 33 (MethodHash=9c5d8546) for method System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]:<GetMetadataViewProvider>b__1_0(System.Collections.Generic.IDictionary`2[System.String,System.Object]):System.__Canon:this (FullOpts)
+; Total bytes of code 19, prolog size 1, PerfScore 11.75, instruction count 9, allocated bytes for code 19 (MethodHash=9c5d8546) for method System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]:<GetMetadataViewProvider>b__1_0(System.Collections.Generic.IDictionary`2[System.String,System.Object]):System.__Canon:this (FullOpts)
; ============================================================
-16 (-39.02%) : 283005.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (FullOpts)
@@ -7,11 +7,9 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 4, 3.12) ref -> eax class-hnd single-def <System.Object>
-; V01 TypeCtx [V01,T01] ( 4, 3.25) int -> edx single-def
+; V00 arg0 [V00,T01] ( 3, 3 ) ref -> eax class-hnd single-def <System.Object>
+; V01 TypeCtx [V01,T00] ( 4, 4 ) int -> edx single-def
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
-; V03 loc1 [V03,T03] ( 3, 1.25) int -> edx "fgMakeTemp is creating a new local variable"
-; V04 tmp1 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 4
@@ -23,39 +21,20 @@ G_M8451_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
mov eax, ecx
; gcrRegs +[eax]
;; size=9 bbWeight=1 PerfScore 3.50
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
- mov ecx, eax
- ; gcrRegs +[ecx]
- test ecx, ecx
- je SHORT G_M8451_IG05
- ;; size=6 bbWeight=1 PerfScore 1.50
-G_M8451_IG03: ; bbWeight=0.25, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz
- mov edx, dword ptr [edx+0x20]
- mov edx, dword ptr [edx]
- cmp dword ptr [ecx], edx
- je SHORT G_M8451_IG05
- ;; size=9 bbWeight=0.25 PerfScore 2.00
-G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[ecx]
- mov ecx, edx
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
+ mov ecx, dword ptr [edx+0x20]
+ mov ecx, dword ptr [ecx]
mov edx, eax
; gcrRegs +[edx]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[edx]
- mov ecx, eax
- ; gcrRegs +[ecx]
- ;; size=11 bbWeight=0.12 PerfScore 0.22
-G_M8451_IG05: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
- mov eax, ecx
- ; gcrRegs +[eax]
- ;; size=2 bbWeight=1 PerfScore 0.25
-G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 5.25
+G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
mov esp, ebp
pop ebp
ret
;; size=4 bbWeight=1 PerfScore 1.75
-; Total bytes of code 41, prolog size 7, PerfScore 9.22, instruction count 20, allocated bytes for code 41 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 25, prolog size 7, PerfScore 10.50, instruction count 12, allocated bytes for code 25 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================
-16 (-39.02%) : 28948.dasm - Microsoft.FSharp.Core.Operators+Unchecked:UnboxSystem.__Canon:System.__Canon (FullOpts)
@@ -7,10 +7,8 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 4, 3.12) ref -> eax class-hnd single-def <System.Object>
-; V01 TypeCtx [V01,T01] ( 4, 3.25) int -> edx single-def
-; V02 loc0 [V02,T03] ( 3, 1.25) int -> edx "fgMakeTemp is creating a new local variable"
-; V03 tmp1 [V03,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
+; V00 arg0 [V00,T01] ( 3, 3 ) ref -> eax class-hnd single-def <System.Object>
+; V01 TypeCtx [V01,T00] ( 4, 4 ) int -> edx single-def
;
; Lcl frame size = 4
@@ -22,39 +20,20 @@ G_M7606_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
mov eax, ecx
; gcrRegs +[eax]
;; size=9 bbWeight=1 PerfScore 3.50
-G_M7606_IG02: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
- mov ecx, eax
- ; gcrRegs +[ecx]
- test ecx, ecx
- je SHORT G_M7606_IG05
- ;; size=6 bbWeight=1 PerfScore 1.50
-G_M7606_IG03: ; bbWeight=0.25, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz
- mov edx, dword ptr [edx+0x20]
- mov edx, dword ptr [edx]
- cmp dword ptr [ecx], edx
- je SHORT G_M7606_IG05
- ;; size=9 bbWeight=0.25 PerfScore 2.00
-G_M7606_IG04: ; bbWeight=0.12, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[ecx]
- mov ecx, edx
+G_M7606_IG02: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
+ mov ecx, dword ptr [edx+0x20]
+ mov ecx, dword ptr [ecx]
mov edx, eax
; gcrRegs +[edx]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[edx]
- mov ecx, eax
- ; gcrRegs +[ecx]
- ;; size=11 bbWeight=0.12 PerfScore 0.22
-G_M7606_IG05: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
- mov eax, ecx
- ; gcrRegs +[eax]
- ;; size=2 bbWeight=1 PerfScore 0.25
-G_M7606_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 5.25
+G_M7606_IG03: ; bbWeight=1, epilog, nogc, extend
mov esp, ebp
pop ebp
ret
;; size=4 bbWeight=1 PerfScore 1.75
-; Total bytes of code 41, prolog size 7, PerfScore 9.22, instruction count 20, allocated bytes for code 41 (MethodHash=333ae249) for method Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 25, prolog size 7, PerfScore 10.50, instruction count 12, allocated bytes for code 25 (MethodHash=333ae249) for method Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================
+5 (+6.94%) : 212163.dasm - Microsoft.Build.Collections.ReadOnlyEmptyDictionary2[System.__Canon,System.Nullable1[int]]:Contains(System.Object):ubyte:this (FullOpts)
@@ -7,79 +7,74 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 5, 4.25) ref -> esi this class-hnd single-def <Microsoft.Build.Collections.ReadOnlyEmptyDictionary`2[System.__Canon,System.Nullable`1[int]]>
-; V01 arg1 [V01,T03] ( 4, 3.12) ref -> edx class-hnd single-def <System.Object>
-; V02 tmp0 [V02,T06] ( 3, 1.25) int -> ecx "fgMakeTemp is creating a new local variable"
-; V03 tmp1 [V03,T00] ( 5, 6.75) ref -> edi class-hnd "spilling QMark2" <System.__Canon>
-;* V04 tmp2 [V04 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V05 tmp3 [V05,T05] ( 3, 4 ) int -> eax "VirtualCall with runtime lookup"
-; V06 rat0 [V06,T04] ( 3, 4.40) int -> ecx "Spilling to split statement for tree"
-; V07 rat1 [V07,T02] ( 3, 5.60) int -> eax "fgMakeTemp is creating a new local variable"
+; V00 this [V00,T00] ( 4, 4 ) ref -> esi this class-hnd single-def <Microsoft.Build.Collections.ReadOnlyEmptyDictionary`2[System.__Canon,System.Nullable`1[int]]>
+; V01 arg1 [V01,T02] ( 3, 3 ) ref -> edi class-hnd single-def <System.Object>
+;* V02 tmp0 [V02 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
+; V03 tmp1 [V03,T04] ( 3, 4 ) int -> [ebp-0x10] "VirtualCall with runtime lookup"
+; V04 tmp2 [V04,T05] ( 2, 4 ) ref -> edx single-def "argument with side effect"
+; V05 cse0 [V05,T06] ( 3, 3 ) int -> ebx "CSE - aggressive"
+; V06 rat0 [V06,T03] ( 3, 4.40) int -> ecx "Spilling to split statement for tree"
+; V07 rat1 [V07,T01] ( 3, 5.60) int -> eax "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M43207_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
push edi
push esi
+ push ebx
+ push eax
mov esi, ecx
; gcrRegs +[esi]
- ;; size=7 bbWeight=1 PerfScore 3.50
-G_M43207_IG02: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[edx]
mov edi, edx
; gcrRegs +[edi]
- test edi, edi
- je SHORT G_M43207_IG05
- ;; size=6 bbWeight=1 PerfScore 1.50
-G_M43207_IG03: ; bbWeight=0.25, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, dword ptr [esi]
- mov ecx, dword ptr [ecx+0x24]
- mov ecx, dword ptr [ecx]
- mov ecx, dword ptr [ecx]
- cmp dword ptr [edi], ecx
- je SHORT G_M43207_IG05
- ;; size=13 bbWeight=0.25 PerfScore 3.00
-G_M43207_IG04: ; bbWeight=0.12, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[edi]
- call CORINFO_HELP_CHKCASTANY
- ; gcrRegs -[edx] +[eax]
- mov edi, eax
- ; gcrRegs +[edi]
- ;; size=7 bbWeight=0.12 PerfScore 0.16
-G_M43207_IG05: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax]
- mov ecx, dword ptr [esi]
+ ;; size=11 bbWeight=1 PerfScore 5.75
+G_M43207_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov ebx, dword ptr [esi]
+ mov ecx, ebx
mov edx, dword ptr [ecx+0x24]
mov edx, dword ptr [edx]
mov eax, dword ptr [edx+0x30]
test eax, eax
- je SHORT G_M43207_IG07
- ;; size=14 bbWeight=1 PerfScore 9.25
-G_M43207_IG06: ; bbWeight=0.80, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M43207_IG08
- ;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M43207_IG07: ; bbWeight=0.20, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ je SHORT G_M43207_IG04
+ ;; size=16 bbWeight=1 PerfScore 9.50
+G_M43207_IG03: ; bbWeight=0.80, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov dword ptr [ebp-0x10], eax
+ jmp SHORT G_M43207_IG05
+ ;; size=5 bbWeight=0.80 PerfScore 2.40
+G_M43207_IG04: ; bbWeight=0.20, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov edx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ;; size=10 bbWeight=0.20 PerfScore 0.25
-G_M43207_IG08: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
- mov ecx, esi
- ; gcrRegs +[ecx]
+ mov dword ptr [ebp-0x10], eax
+ ;; size=13 bbWeight=0.20 PerfScore 0.45
+G_M43207_IG05: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ mov ecx, dword ptr [ebx+0x24]
+ mov ecx, dword ptr [ecx]
+ mov ecx, dword ptr [ecx]
mov edx, edi
; gcrRegs +[edx]
+ call CORINFO_HELP_CHKCASTANY
+ ; gcrRegs -[edx edi] +[eax]
+ mov edx, eax
+ ; gcrRegs +[edx]
+ mov ecx, esi
+ ; gcrRegs +[ecx]
+ mov eax, dword ptr [ebp-0x10]
+ ; gcrRegs -[eax]
nop
call [eax]
- ; gcrRegs -[ecx edx edi]
- ;; size=9 bbWeight=1 PerfScore 3.75
-G_M43207_IG09: ; bbWeight=1, epilog, nogc, extend
+ ; gcrRegs -[ecx edx]
+ ;; size=26 bbWeight=1 PerfScore 12.00
+G_M43207_IG06: ; bbWeight=1, epilog, nogc, extend
+ pop ecx
+ pop ebx
pop esi
pop edi
pop ebp
ret
- ;; size=4 bbWeight=1 PerfScore 2.50
+ ;; size=6 bbWeight=1 PerfScore 3.50
-; Total bytes of code 72, prolog size 5, PerfScore 25.51, instruction count 33, allocated bytes for code 72 (MethodHash=32ef5738) for method Microsoft.Build.Collections.ReadOnlyEmptyDictionary`2[System.__Canon,System.Nullable`1[int]]:Contains(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 77, prolog size 7, PerfScore 33.60, instruction count 36, allocated bytes for code 77 (MethodHash=32ef5738) for method Microsoft.Build.Collections.ReadOnlyEmptyDictionary`2[System.__Canon,System.Nullable`1[int]]:Contains(System.Object):ubyte:this (FullOpts)
; ============================================================
+20 (+7.91%) : 69159.dasm - System.Data.ColumnTypeConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
@@ -8,25 +8,24 @@
; 2 inlinees with PGO data; 5 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T09] ( 3, 2.50) ref -> ecx this class-hnd single-def <System.Data.ColumnTypeConverter>
-; V01 arg1 [V01,T10] ( 3, 2.50) ref -> edx class-hnd single-def <System.ComponentModel.ITypeDescriptorContext>
+; V00 this [V00,T08] ( 3, 2.50) ref -> ecx this class-hnd single-def <System.Data.ColumnTypeConverter>
+; V01 arg1 [V01,T09] ( 3, 2.50) ref -> edx class-hnd single-def <System.ComponentModel.ITypeDescriptorContext>
; V02 arg2 [V02,T12] ( 1, 0.50) ref -> [ebp+0x0C] class-hnd single-def <System.Globalization.CultureInfo>
-; V03 arg3 [V03,T01] ( 6, 22.11) ref -> esi class-hnd single-def <System.Object>
-; V04 loc0 [V04,T04] ( 8, 21.50) int -> edi
-; V05 tmp0 [V05,T07] ( 2, 4 ) ubyte -> eax "Inline return value spill temp"
+; V03 arg3 [V03,T06] ( 5, 7.76) ref -> esi class-hnd single-def <System.Object>
+; V04 loc0 [V04,T03] ( 10, 21.50) int -> edi
+; V05 tmp0 [V05,T10] ( 2, 4 ) ubyte -> eax "Inline return value spill temp"
; V06 tmp1 [V06,T00] ( 6, 60.22) ref -> eax class-hnd exact "Inlining Arg" <System.String>
-;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String>
-;* V08 tmp3 [V08,T05] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.String>
-; V09 tmp4 [V09,T06] ( 2, 8 ) byref -> ecx "impAppendStmt"
+; V07 tmp2 [V07,T04] ( 4, 19.64) ref -> edx class-hnd exact "Inline stloc first use temp" <System.String>
+; V08 tmp3 [V08,T05] ( 2, 8 ) byref -> ecx "impAppendStmt"
+;* V09 tmp4 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V10 tmp5 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V11 tmp6 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp7 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp8 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V14 tmp9 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V15 tmp10 [V15,T02] ( 3, 24 ) ref -> ecx "arr expr"
-; V16 tmp11 [V16,T03] ( 3, 24 ) ref -> ecx "argument with side effect"
-; V17 tmp12 [V17,T11] ( 3, 3 ) ref -> eax single-def "arr expr"
-;* V18 cse0 [V18,T08] ( 0, 0 ) int -> zero-ref multi-def "CSE - moderate"
+; V14 tmp9 [V14,T01] ( 3, 24 ) ref -> ecx "arr expr"
+; V15 tmp10 [V15,T02] ( 3, 24 ) ref -> ecx "argument with side effect"
+; V16 tmp11 [V16,T11] ( 3, 3 ) ref -> eax single-def "arr expr"
+;* V17 cse0 [V17,T07] ( 0, 0 ) int -> zero-ref multi-def "CSE - moderate"
;
; Lcl frame size = 0
@@ -41,28 +40,28 @@ G_M21223_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
G_M21223_IG02: ; bbWeight=1, gcrefRegs=00000046 {ecx edx esi}, byrefRegs=00000000 {}, byref
; gcrRegs +[ecx edx]
test esi, esi
- je G_M21223_IG15
+ je G_M21223_IG16
;; size=8 bbWeight=1 PerfScore 1.25
G_M21223_IG03: ; bbWeight=0.50, gcrefRegs=00000046 {ecx edx esi}, byrefRegs=00000000 {}, byref
cmp dword ptr [esi], 0xD1FFAB1E
- jne G_M21223_IG15
+ jne G_M21223_IG16
xor edi, edi
test byte ptr [D1FFAB1EH], 1 ; global ptr
- je G_M21223_IG18
+ je G_M21223_IG19
;; size=27 bbWeight=0.50 PerfScore 4.12
G_M21223_IG04: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ecx edx]
mov ecx, gword ptr [D1FFAB1EH]
; gcrRegs +[ecx]
cmp dword ptr [ecx+0x04], 0
- jle SHORT G_M21223_IG10
+ jle SHORT G_M21223_IG11
;; size=12 bbWeight=0.50 PerfScore 3.00
G_M21223_IG05: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ecx]
mov ecx, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[ecx]
cmp edi, dword ptr [ecx+0x04]
- jae G_M21223_IG17
+ jae G_M21223_IG18
mov ecx, gword ptr [ecx+4*edi+0x08]
mov eax, dword ptr [ecx]
mov eax, dword ptr [eax+0x2C]
@@ -70,105 +69,117 @@ G_M21223_IG05: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
; gcrRegs -[ecx] +[eax]
cmp byte ptr [eax], al
cmp eax, esi
- je SHORT G_M21223_IG12
+ je SHORT G_M21223_IG13
;; size=33 bbWeight=4 PerfScore 77.00
-G_M21223_IG06: ; bbWeight=14.11, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
- mov edx, dword ptr [eax+0x04]
- cmp edx, dword ptr [esi+0x04]
- jne SHORT G_M21223_IG08
+G_M21223_IG06: ; bbWeight=1.76, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
+ mov edx, esi
+ ; gcrRegs +[edx]
+ test edx, edx
+ je G_M21223_IG20
+ ;; size=10 bbWeight=1.76 PerfScore 2.65
+G_M21223_IG07: ; bbWeight=14.11, gcrefRegs=00000045 {eax edx esi}, byrefRegs=00000000 {}, byref, isz
+ mov ecx, dword ptr [eax+0x04]
+ cmp ecx, dword ptr [edx+0x04]
+ jne SHORT G_M21223_IG20
;; size=8 bbWeight=14.11 PerfScore 84.66
-G_M21223_IG07: ; bbWeight=2, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
+G_M21223_IG08: ; bbWeight=2, gcrefRegs=00000045 {eax edx esi}, byrefRegs=00000000 {}, byref, isz
lea ecx, bword ptr [eax+0x08]
; byrRegs +[ecx]
- mov edx, dword ptr [eax+0x04]
- add edx, edx
- push edx
- lea edx, bword ptr [esi+0x08]
+ mov eax, dword ptr [eax+0x04]
+ ; gcrRegs -[eax]
+ add eax, eax
+ push eax
+ add edx, 8
+ ; gcrRegs -[edx]
; byrRegs +[edx]
call [<unknown method>]
- ; gcrRegs -[eax]
; byrRegs -[ecx edx]
test eax, eax
- jne SHORT G_M21223_IG12
- ;; size=22 bbWeight=2 PerfScore 17.00
-G_M21223_IG08: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ jne SHORT G_M21223_IG13
+ ;; size=22 bbWeight=2 PerfScore 16.50
+G_M21223_IG09: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
inc edi
test byte ptr [D1FFAB1EH], 1 ; global ptr
- je SHORT G_M21223_IG19
+ je SHORT G_M21223_IG21
;; size=10 bbWeight=4 PerfScore 17.00
-G_M21223_IG09: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M21223_IG10: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov eax, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[eax]
cmp dword ptr [eax+0x04], edi
jg SHORT G_M21223_IG05
;; size=10 bbWeight=4 PerfScore 24.00
-G_M21223_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M21223_IG11: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax esi]
mov eax, 0xD1FFAB1E
; gcrRegs +[eax]
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M21223_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M21223_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop esi
pop edi
pop ebp
ret 8
;; size=6 bbWeight=0.50 PerfScore 1.75
-G_M21223_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M21223_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax]
test byte ptr [D1FFAB1EH], 1 ; global ptr
- je SHORT G_M21223_IG20
+ je SHORT G_M21223_IG22
;; size=9 bbWeight=0.50 PerfScore 2.00
-G_M21223_IG13: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M21223_IG14: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[eax]
cmp edi, dword ptr [eax+0x04]
- jae SHORT G_M21223_IG17
+ jae SHORT G_M21223_IG18
mov eax, gword ptr [eax+4*edi+0x08]
;; size=14 bbWeight=0.50 PerfScore 4.00
-G_M21223_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M21223_IG15: ; bbWeight=0.50, epilog, nogc, extend
pop esi
pop edi
pop ebp
ret 8
;; size=6 bbWeight=0.50 PerfScore 1.75
-G_M21223_IG15: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000046 {ecx edx esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M21223_IG16: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000046 {ecx edx esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax] +[ecx edx esi]
push gword ptr [ebp+0x0C]
push esi
call [System.ComponentModel.TypeConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this]
; gcrRegs -[ecx edx esi] +[eax]
;; size=10 bbWeight=0.50 PerfScore 2.50
-G_M21223_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M21223_IG17: ; bbWeight=0.50, epilog, nogc, extend
pop esi
pop edi
pop ebp
ret 8
;; size=6 bbWeight=0.50 PerfScore 1.75
-G_M21223_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M21223_IG18: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax]
call CORINFO_HELP_RNGCHKFAIL
;; size=5 bbWeight=0 PerfScore 0.00
-G_M21223_IG18: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M21223_IG19: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs +[esi]
mov ecx, 0xD1FFAB1E
mov edx, 54
call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
jmp G_M21223_IG04
;; size=20 bbWeight=0 PerfScore 0.00
-G_M21223_IG19: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M21223_IG20: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ inc edi
+ test byte ptr [D1FFAB1EH], 1 ; global ptr
+ jne SHORT G_M21223_IG10
+ ;; size=10 bbWeight=0 PerfScore 0.00
+G_M21223_IG21: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, 0xD1FFAB1E
mov edx, 54
call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- jmp SHORT G_M21223_IG09
+ jmp SHORT G_M21223_IG10
;; size=17 bbWeight=0 PerfScore 0.00
-G_M21223_IG20: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M21223_IG22: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[esi]
mov ecx, 0xD1FFAB1E
mov edx, 54
call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- jmp SHORT G_M21223_IG13
+ jmp SHORT G_M21223_IG14
;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 253, prolog size 5, PerfScore 246.16, instruction count 77, allocated bytes for code 253 (MethodHash=3d9fad18) for method System.Data.ColumnTypeConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
+; Total bytes of code 273, prolog size 5, PerfScore 248.31, instruction count 83, allocated bytes for code 273 (MethodHash=3d9fad18) for method System.Data.ColumnTypeConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
; ============================================================
+26 (+15.29%) : 197944.dasm - Newtonsoft.Json.Utilities.DictionaryWrapper2[System.__Canon,System.Nullable1[int]]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
@@ -7,25 +7,24 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 10, 6 ) ref -> esi this class-hnd single-def <Newtonsoft.Json.Utilities.DictionaryWrapper`2[System.__Canon,System.Nullable`1[int]]>
-; V01 arg1 [V01,T01] ( 7, 3.75) ref -> edx class-hnd single-def <System.Object>
-; V02 tmp0 [V02,T10] ( 2, 2 ) ref -> edi class-hnd single-def "bubbling QMark2" <<unknown class>>
-; V03 tmp1 [V03,T13] ( 3, 1.25) int -> ecx "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T02] ( 5, 3.75) ref -> ebx class-hnd "spilling QMark2" <System.__Canon>
-;* V05 tmp3 [V05 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V06 tmp4 [V06,T08] ( 3, 2 ) int -> eax "VirtualCall with runtime lookup"
-; V07 tmp5 [V07,T11] ( 2, 2 ) ref -> edi class-hnd single-def "bubbling QMark2" <<unknown class>>
-; V08 tmp6 [V08,T14] ( 3, 1.25) int -> ecx "fgMakeTemp is creating a new local variable"
-; V09 tmp7 [V09,T03] ( 5, 3.75) ref -> ebx class-hnd "spilling QMark2" <System.__Canon>
-;* V10 tmp8 [V10 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V11 tmp9 [V11,T09] ( 3, 2 ) int -> eax "VirtualCall with runtime lookup"
-; V12 cse0 [V12,T12] ( 3, 1.50) ref -> edi "CSE - moderate"
-; V13 rat0 [V13,T06] ( 3, 2.20) int -> ecx "Spilling to split statement for tree"
-; V14 rat1 [V14,T04] ( 3, 2.80) int -> eax "fgMakeTemp is creating a new local variable"
-; V15 rat2 [V15,T07] ( 3, 2.20) int -> ecx "Spilling to split statement for tree"
-; V16 rat3 [V16,T05] ( 3, 2.80) int -> eax "fgMakeTemp is creating a new local variable"
+; V00 this [V00,T00] ( 8, 5.50) ref -> esi this class-hnd single-def <Newtonsoft.Json.Utilities.DictionaryWrapper`2[System.__Canon,System.Nullable`1[int]]>
+; V01 arg1 [V01,T01] ( 5, 3.50) ref -> edi class-hnd single-def <System.Object>
+;* V02 tmp0 [V02 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
+; V03 tmp1 [V03,T07] ( 3, 2 ) int -> [ebp-0x10] "VirtualCall with runtime lookup"
+;* V04 tmp2 [V04 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
+; V05 tmp3 [V05,T08] ( 3, 2 ) int -> [ebp-0x14] "VirtualCall with runtime lookup"
+; V06 tmp4 [V06,T09] ( 2, 2 ) ref -> edx single-def "argument with side effect"
+; V07 tmp5 [V07,T10] ( 2, 2 ) ref -> ebx single-def "argument with side effect"
+; V08 tmp6 [V08,T11] ( 2, 2 ) ref -> edx single-def "argument with side effect"
+; V09 tmp7 [V09,T12] ( 2, 2 ) ref -> [ebp-0x1C] spill-single-def "argument with side effect"
+; V10 cse0 [V10,T13] ( 3, 1.50) ref -> ebx "CSE - moderate"
+; V11 cse1 [V11,T02] ( 6, 3 ) int -> [ebp-0x18] multi-def "CSE - aggressive"
+; V12 rat0 [V12,T05] ( 3, 2.20) int -> ecx "Spilling to split statement for tree"
+; V13 rat1 [V13,T03] ( 3, 2.80) int -> eax "fgMakeTemp is creating a new local variable"
+; V14 rat2 [V14,T06] ( 3, 2.20) int -> ecx "Spilling to split statement for tree"
+; V15 rat3 [V15,T04] ( 3, 2.80) int -> edx "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 0
+; Lcl frame size = 16
G_M50150_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp
@@ -33,142 +32,134 @@ G_M50150_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, b
push edi
push esi
push ebx
+ sub esp, 16
mov esi, ecx
; gcrRegs +[esi]
- ;; size=8 bbWeight=1 PerfScore 4.50
-G_M50150_IG02: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[edx]
- cmp gword ptr [esi+0x08], 0
- je SHORT G_M50150_IG11
- ;; size=6 bbWeight=1 PerfScore 4.00
-G_M50150_IG03: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
- mov edi, gword ptr [esi+0x08]
+ mov edi, edx
; gcrRegs +[edi]
- mov ebx, edx
- ; gcrRegs +[ebx]
- test ebx, ebx
- je SHORT G_M50150_IG06
- ;; size=9 bbWeight=0.50 PerfScore 1.75
-G_M50150_IG04: ; bbWeight=0.25, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, dword ptr [esi]
- mov ecx, dword ptr [ecx+0x24]
- mov ecx, dword ptr [ecx]
- mov ecx, dword ptr [ecx]
- cmp dword ptr [ebx], ecx
- je SHORT G_M50150_IG06
- ;; size=13 bbWeight=0.25 PerfScore 3.00
-G_M50150_IG05: ; bbWeight=0.12, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[ebx]
- call CORINFO_HELP_CHKCASTANY
- ; gcrRegs -[edx] +[eax]
- mov ebx, eax
- ; gcrRegs +[ebx]
- ;; size=7 bbWeight=0.12 PerfScore 0.16
-G_M50150_IG06: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax]
- mov ecx, dword ptr [esi]
+ ;; size=13 bbWeight=1 PerfScore 5.00
+G_M50150_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ cmp gword ptr [esi+0x08], 0
+ je SHORT G_M50150_IG08
+ ;; size=6 bbWeight=1 PerfScore 4.00
+G_M50150_IG03: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov ebx, dword ptr [esi]
+ mov ecx, ebx
mov edx, dword ptr [ecx+0x24]
mov edx, dword ptr [edx]
mov eax, dword ptr [edx+0x10]
test eax, eax
- je SHORT G_M50150_IG08
- ;; size=14 bbWeight=0.50 PerfScore 4.62
-G_M50150_IG07: ; bbWeight=0.40, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M50150_IG09
- ;; size=2 bbWeight=0.40 PerfScore 0.80
-G_M50150_IG08: ; bbWeight=0.10, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+ je SHORT G_M50150_IG05
+ ;; size=16 bbWeight=0.50 PerfScore 4.75
+G_M50150_IG04: ; bbWeight=0.40, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov dword ptr [ebp-0x14], eax
+ jmp SHORT G_M50150_IG06
+ ;; size=5 bbWeight=0.40 PerfScore 1.20
+G_M50150_IG05: ; bbWeight=0.10, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov edx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ;; size=10 bbWeight=0.10 PerfScore 0.12
-G_M50150_IG09: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
- mov ecx, edi
- ; gcrRegs +[ecx]
- mov edx, ebx
+ mov dword ptr [ebp-0x14], eax
+ ;; size=13 bbWeight=0.10 PerfScore 0.23
+G_M50150_IG06: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ mov edx, gword ptr [esi+0x08]
; gcrRegs +[edx]
+ mov gword ptr [ebp-0x1C], edx
+ ; GC ptr vars +{V09}
+ mov ecx, dword ptr [ebx+0x24]
+ mov ecx, dword ptr [ecx]
+ mov ecx, dword ptr [ecx]
+ mov edx, edi
+ call CORINFO_HELP_CHKCASTANY
+ ; gcrRegs -[edx edi] +[eax]
+ mov edx, eax
+ ; gcrRegs +[edx]
+ mov ecx, gword ptr [ebp-0x1C]
+ ; gcrRegs +[ecx]
+ mov eax, dword ptr [ebp-0x14]
+ ; gcrRegs -[eax]
nop
+ ; GC ptr vars -{V09}
call [eax]
- ; gcrRegs -[ecx edx ebx edi]
- ;; size=9 bbWeight=0.50 PerfScore 1.88
-G_M50150_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ ; gcrRegs -[ecx edx]
+ ;; size=33 bbWeight=0.50 PerfScore 7.88
+G_M50150_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ lea esp, [ebp-0x0C]
pop ebx
pop esi
pop edi
pop ebp
ret
- ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M50150_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs +[edx]
- mov edi, gword ptr [esi+0x0C]
+ ;; size=8 bbWeight=0.50 PerfScore 1.75
+G_M50150_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[edi]
- test edi, edi
- je SHORT G_M50150_IG19
- mov ebx, edx
+ mov ebx, gword ptr [esi+0x0C]
; gcrRegs +[ebx]
test ebx, ebx
- je SHORT G_M50150_IG14
- ;; size=13 bbWeight=0.50 PerfScore 2.38
-G_M50150_IG12: ; bbWeight=0.25, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, dword ptr [esi]
- mov ecx, dword ptr [ecx+0x24]
- mov ecx, dword ptr [ecx]
- mov ecx, dword ptr [ecx]
- cmp dword ptr [ebx], ecx
- je SHORT G_M50150_IG14
- ;; size=13 bbWeight=0.25 PerfScore 3.00
-G_M50150_IG13: ; bbWeight=0.12, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[ebx]
- call CORINFO_HELP_CHKCASTANY
- ; gcrRegs -[edx] +[eax]
- mov ebx, eax
- ; gcrRegs +[ebx]
- ;; size=7 bbWeight=0.12 PerfScore 0.16
-G_M50150_IG14: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax]
+ je SHORT G_M50150_IG13
mov ecx, dword ptr [esi]
+ mov eax, ecx
+ mov dword ptr [ebp-0x18], eax
+ mov ecx, eax
mov edx, dword ptr [ecx+0x24]
mov edx, dword ptr [edx]
- mov eax, dword ptr [edx+0x14]
- test eax, eax
- je SHORT G_M50150_IG16
- ;; size=14 bbWeight=0.50 PerfScore 4.62
-G_M50150_IG15: ; bbWeight=0.40, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M50150_IG17
- ;; size=2 bbWeight=0.40 PerfScore 0.80
-G_M50150_IG16: ; bbWeight=0.10, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+ mov edx, dword ptr [edx+0x14]
+ test edx, edx
+ je SHORT G_M50150_IG10
+ ;; size=28 bbWeight=0.50 PerfScore 7.00
+G_M50150_IG09: ; bbWeight=0.40, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov dword ptr [ebp-0x10], edx
+ jmp SHORT G_M50150_IG11
+ ;; size=5 bbWeight=0.40 PerfScore 1.20
+G_M50150_IG10: ; bbWeight=0.10, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
mov edx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ;; size=10 bbWeight=0.10 PerfScore 0.12
-G_M50150_IG17: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
- mov ecx, edi
- ; gcrRegs +[ecx]
- mov edx, ebx
+ mov dword ptr [ebp-0x10], eax
+ ;; size=13 bbWeight=0.10 PerfScore 0.23
+G_M50150_IG11: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+ mov eax, dword ptr [ebp-0x18]
+ mov ecx, dword ptr [eax+0x24]
+ mov ecx, dword ptr [ecx]
+ mov ecx, dword ptr [ecx]
+ mov edx, edi
; gcrRegs +[edx]
+ call CORINFO_HELP_CHKCASTANY
+ ; gcrRegs -[edx edi] +[eax]
+ mov edx, eax
+ ; gcrRegs +[edx]
+ mov ecx, ebx
+ ; gcrRegs +[ecx]
+ mov eax, dword ptr [ebp-0x10]
+ ; gcrRegs -[eax]
nop
call [eax]
- ; gcrRegs -[ecx edx ebx edi]
- ;; size=9 bbWeight=0.50 PerfScore 1.88
-G_M50150_IG18: ; bbWeight=0.50, epilog, nogc, extend
+ ; gcrRegs -[ecx edx ebx]
+ ;; size=29 bbWeight=0.50 PerfScore 6.50
+G_M50150_IG12: ; bbWeight=0.50, epilog, nogc, extend
+ lea esp, [ebp-0x0C]
pop ebx
pop esi
pop edi
pop ebp
ret
- ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M50150_IG19: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs +[edx]
+ ;; size=8 bbWeight=0.50 PerfScore 1.75
+G_M50150_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs +[edi]
mov ecx, gword ptr [esi+0x04]
...
libraries_tests.run.windows.x86.Release.mch
-16 (-39.02%) : 544490.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (Tier1)
@@ -8,11 +8,9 @@
; with Dynamic PGO: edge weights are valid, and fgCalledCount is 43152
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 4, 3.25) ref -> eax class-hnd single-def <System.Object>
-; V01 TypeCtx [V01,T01] ( 4, 3.50) int -> edx single-def
+; V00 arg0 [V00,T01] ( 3, 3 ) ref -> eax class-hnd single-def <System.Object>
+; V01 TypeCtx [V01,T00] ( 4, 4 ) int -> edx single-def
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
-; V03 loc1 [V03,T03] ( 3, 2.50) int -> edx "fgMakeTemp is creating a new local variable"
-; V04 tmp1 [V04,T00] ( 5, 7.50) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 4
@@ -24,39 +22,20 @@ G_M8451_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
mov eax, ecx
; gcrRegs +[eax]
;; size=9 bbWeight=1 PerfScore 3.50
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
- mov ecx, eax
- ; gcrRegs +[ecx]
- test ecx, ecx
- je SHORT G_M8451_IG05
- ;; size=6 bbWeight=1 PerfScore 1.50
-G_M8451_IG03: ; bbWeight=0.50, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz
- mov edx, dword ptr [edx+0x20]
- mov edx, dword ptr [edx]
- cmp dword ptr [ecx], edx
- je SHORT G_M8451_IG05
- ;; size=9 bbWeight=0.50 PerfScore 4.00
-G_M8451_IG04: ; bbWeight=0.25, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[ecx]
- mov ecx, edx
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
+ mov ecx, dword ptr [edx+0x20]
+ mov ecx, dword ptr [ecx]
mov edx, eax
; gcrRegs +[edx]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[edx]
- mov ecx, eax
- ; gcrRegs +[ecx]
- ;; size=11 bbWeight=0.25 PerfScore 0.44
-G_M8451_IG05: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
- mov eax, ecx
- ; gcrRegs +[eax]
- ;; size=2 bbWeight=1 PerfScore 0.25
-G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 5.25
+G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
mov esp, ebp
pop ebp
ret
;; size=4 bbWeight=1 PerfScore 1.75
-; Total bytes of code 41, prolog size 7, PerfScore 11.44, instruction count 20, allocated bytes for code 41 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
+; Total bytes of code 25, prolog size 7, PerfScore 10.50, instruction count 12, allocated bytes for code 25 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
; ============================================================
-18 (-38.30%) : 113550.dasm - System.Threading.AsyncLocal`1[System.Canon]:get_Value():System.Canon:this (Tier1)
@@ -2,64 +2,43 @@
; Emitting BLENDED_CODE for X86 with AVX512 - Windows
; Tier1 code
; optimized code
-; ebp based frame
+; esp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 4, 3.25) ref -> esi this class-hnd single-def <System.Threading.AsyncLocal`1[System.__Canon]>
-; V01 loc0 [V01,T02] ( 3, 2.12) ref -> eax class-hnd single-def <System.Object>
+; V00 this [V00,T00] ( 4, 4 ) ref -> esi this class-hnd single-def <System.Threading.AsyncLocal`1[System.__Canon]>
+; V01 loc0 [V01,T01] ( 2, 2 ) ref -> edx class-hnd single-def <System.Object>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
-; V03 tmp0 [V03,T03] ( 3, 1.25) int -> ecx "fgMakeTemp is creating a new local variable"
-; V04 tmp1 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 0
G_M1970_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- push ebp
- mov ebp, esp
push esi
mov esi, ecx
+ ;; size=3 bbWeight=1 PerfScore 1.25
+G_M1970_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs +[esi]
- ;; size=6 bbWeight=1 PerfScore 2.50
-G_M1970_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, esi
; gcrRegs +[ecx]
call [System.Threading.ExecutionContext:GetLocalValue(System.Threading.IAsyncLocal):System.Object]
; gcrRegs -[ecx] +[eax]
+ ; gcr arg pop 0
mov edx, eax
; gcrRegs +[edx]
- test edx, edx
- je SHORT G_M1970_IG05
- ;; size=14 bbWeight=1 PerfScore 4.75
-G_M1970_IG03: ; bbWeight=0.25, gcrefRegs=00000045 {eax edx esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [esi]
mov ecx, dword ptr [ecx+0x24]
mov ecx, dword ptr [ecx]
mov ecx, dword ptr [ecx]
- cmp dword ptr [edx], ecx
- je SHORT G_M1970_IG05
- ;; size=13 bbWeight=0.25 PerfScore 3.00
-G_M1970_IG04: ; bbWeight=0.12, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[edx]
- mov edx, eax
- ; gcrRegs +[edx]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[edx]
- mov edx, eax
- ; gcrRegs +[edx]
- ;; size=9 bbWeight=0.12 PerfScore 0.19
-G_M1970_IG05: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
- mov eax, edx
- ; gcrRegs +[eax]
- ;; size=2 bbWeight=1 PerfScore 0.25
-G_M1970_IG06: ; bbWeight=1, epilog, nogc, extend
+ ; gcr arg pop 0
+ ;; size=24 bbWeight=1 PerfScore 12.50
+G_M1970_IG03: ; bbWeight=1, epilog, nogc, extend
pop esi
- pop ebp
ret
- ;; size=3 bbWeight=1 PerfScore 2.00
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 47, prolog size 4, PerfScore 12.69, instruction count 22, allocated bytes for code 47 (MethodHash=11a2f84d) for method System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
+; Total bytes of code 29, prolog size 1, PerfScore 15.25, instruction count 12, allocated bytes for code 29 (MethodHash=11a2f84d) for method System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
; ============================================================
-14 (-34.15%) : 106154.dasm - Microsoft.Extensions.DependencyInjection.ServiceDescriptor:get_KeyedImplementationFactory():System.Func`3[System.IServiceProvider,System.Object,System.Object]:this (Tier1)
@@ -3,55 +3,38 @@
; Tier1 code
; optimized code
; optimized using Dynamic PGO
-; ebp based frame
+; esp based frame
; partially interruptible
; with Dynamic PGO: edge weights are valid, and fgCalledCount is 165
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 4, 4 ) ref -> ecx this class-hnd single-def <Microsoft.Extensions.DependencyInjection.ServiceDescriptor>
-; V01 tmp0 [V01,T02] ( 3, 4.50) ref -> edx single-def "CASTCLASS eval op1"
-; V02 tmp1 [V02,T03] ( 3, 2.50) int -> ecx "fgMakeTemp is creating a new local variable"
-; V03 tmp2 [V03,T00] ( 5, 7.50) ref -> eax class-hnd "spilling QMark2" <System.Func`3[System.IServiceProvider,System.Object,System.Object]>
+; V00 this [V00,T00] ( 4, 4 ) ref -> ecx this class-hnd single-def <Microsoft.Extensions.DependencyInjection.ServiceDescriptor>
;
; Lcl frame size = 0
G_M44006_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- push ebp
- mov ebp, esp
- ;; size=3 bbWeight=1 PerfScore 1.25
+ ;; size=0 bbWeight=1 PerfScore 0.00
G_M44006_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[ecx]
cmp gword ptr [ecx+0x04], 0
- je SHORT G_M44006_IG06
+ je SHORT G_M44006_IG04
mov edx, gword ptr [ecx+0x14]
; gcrRegs +[edx]
- mov eax, edx
- ; gcrRegs +[eax]
- test eax, eax
- je SHORT G_M44006_IG05
- ;; size=15 bbWeight=1 PerfScore 7.50
-G_M44006_IG03: ; bbWeight=0.50, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ecx]
mov ecx, 0xD1FFAB1E ; System.Func`3[System.IServiceProvider,System.Object,System.Object]
- cmp dword ptr [eax], ecx
- je SHORT G_M44006_IG05
- ;; size=9 bbWeight=0.50 PerfScore 2.12
-G_M44006_IG04: ; bbWeight=0.25, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
+ ; gcrRegs -[ecx]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[edx] +[eax]
- ;; size=5 bbWeight=0.25 PerfScore 0.25
-G_M44006_IG05: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
- pop ebp
+ ;; size=19 bbWeight=1 PerfScore 7.25
+G_M44006_IG03: ; bbWeight=1, epilog, nogc, extend
ret
- ;; size=2 bbWeight=1 PerfScore 1.50
-G_M44006_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=1 bbWeight=1 PerfScore 1.00
+G_M44006_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax]
call [Microsoft.Extensions.DependencyInjection.ServiceDescriptor:ThrowNonKeyedDescriptor()]
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 41, prolog size 3, PerfScore 12.62, instruction count 16, allocated bytes for code 41 (MethodHash=4da25419) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:get_KeyedImplementationFactory():System.Func`3[System.IServiceProvider,System.Object,System.Object]:this (Tier1)
+; Total bytes of code 27, prolog size 0, PerfScore 8.25, instruction count 8, allocated bytes for code 27 (MethodHash=4da25419) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:get_KeyedImplementationFactory():System.Func`3[System.IServiceProvider,System.Object,System.Object]:this (Tier1)
; ============================================================
+18 (+7.44%) : 159546.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedSystem.__Canon:System.__Canon:this (Tier1)
@@ -11,27 +11,27 @@
;
; V00 this [V00,T00] ( 9, 4.86) ref -> esi this class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode>
; V01 arg1 [V01,T01] ( 5, 4.20) byref -> edi single-def
-; V02 arg2 [V02,T09] ( 4, 1.33) int -> ebx single-def
-; V03 TypeCtx [V03,T10] ( 2, 1.30) int -> [ebp+0x08] single-def
-; V04 loc0 [V04,T04] ( 4, 3.60) ref -> [ebp-0x14] class-hnd <System.__Canon>
+; V02 arg2 [V02,T08] ( 4, 1.33) int -> [ebp+0x0C] single-def
+; V03 TypeCtx [V03,T07] ( 2, 1.60) int -> [ebp+0x08] single-def
+; V04 loc0 [V04,T03] ( 4, 3.60) ref -> [ebp-0x14] class-hnd <System.__Canon>
;* V05 loc1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.CodeAnalysis.GreenNode>
;* V06 loc2 [V06 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
; V07 loc3 [V07,T02] ( 5, 5.32) ref -> ecx class-hnd single-def "spilling ret_expr" <Microsoft.CodeAnalysis.GreenNode>
;* V08 tmp1 [V08 ] ( 0, 0 ) int -> zero-ref "spilling ret_expr"
-;* V09 tmp2 [V09 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
-; V10 tmp3 [V10,T07] ( 3, 1.50) int -> ecx "fgMakeTemp is creating a new local variable"
-; V11 tmp4 [V11,T03] ( 5, 4.50) ref -> edx class-hnd "spilling QMark2" <System.__Canon>
-;* V12 tmp5 [V12 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V13 tmp6 [V13,T05] ( 7, 3.00) ref -> [ebp-0x18] "guarded devirt return temp"
-;* V14 tmp7 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.QualifiedNameSyntax>
-; V15 tmp8 [V15,T11] ( 4, 1.20) int -> ebx "guarded devirt return temp"
-;* V16 tmp9 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.QualifiedNameSyntax>
-; V17 tmp10 [V17,T08] ( 4, 1.35) ref -> eax "guarded devirt return temp"
-;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.IdentifierNameSyntax>
-; V19 tmp12 [V19,T06] ( 5, 2.70) ref -> eax class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Syntax.IdentifierNameSyntax>
-;* V20 tmp13 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.__Canon>
+; V09 tmp2 [V09,T06] ( 2, 2.40) ref -> edx class-hnd single-def "impAppendStmt" <System.__Canon>
+;* V10 tmp3 [V10 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
+; V11 tmp4 [V11,T04] ( 7, 3.00) ref -> [ebp-0x18] "guarded devirt return temp"
+;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.QualifiedNameSyntax>
+; V13 tmp6 [V13,T09] ( 4, 1.20) int -> registers "guarded devirt return temp"
+;* V14 tmp7 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.QualifiedNameSyntax>
+; V15 tmp8 [V15,T10] ( 3, 1.20) ref -> eax "guarded devirt return temp"
+;* V16 tmp9 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.IdentifierNameSyntax>
+; V17 tmp10 [V17,T05] ( 5, 2.70) ref -> eax class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Syntax.IdentifierNameSyntax>
+;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.__Canon>
+; TEMP_02 ref -> [ebp-0x1C]
+; TEMP_01 int -> [ebp-0x20]
;
-; Lcl frame size = 12
+; Lcl frame size = 20
G_M56915_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -39,66 +39,75 @@ G_M56915_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 12
+ sub esp, 20
+ xor eax, eax
+ mov dword ptr [ebp-0x1C], eax
mov eax, dword ptr [ebp+0x08]
mov dword ptr [ebp-0x10], eax
mov esi, ecx
; gcrRegs +[esi]
mov edi, edx
; byrRegs +[edi]
- mov ebx, dword ptr [ebp+0x0C]
- ;; size=22 bbWeight=1 PerfScore 9.00
-G_M56915_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
+ mov eax, dword ptr [ebp+0x0C]
+ ;; size=27 bbWeight=1 PerfScore 10.25
+G_M56915_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref
mov edx, gword ptr [edi]
; gcrRegs +[edx]
mov gword ptr [ebp-0x14], edx
; GC ptr vars +{V04}
test edx, edx
- jne SHORT G_M56915_IG13
- ;; size=9 bbWeight=1 PerfScore 4.25
-G_M56915_IG03: ; bbWeight=0.73, gcVars=00000010 {V04}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref
+ jne G_M56915_IG13
+ ;; size=13 bbWeight=1 PerfScore 4.25
+G_M56915_IG03: ; bbWeight=0.73, gcVars=00000008 {V04}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref
; gcrRegs -[edx]
mov ecx, gword ptr [esi+0x0C]
; gcrRegs +[ecx]
cmp dword ptr [ecx], 0xD1FFAB1E
- je G_M56915_IG20
+ je G_M56915_IG14
;; size=15 bbWeight=0.73 PerfScore 4.40
G_M56915_IG04: ; bbWeight=0.46, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000080 {edi}, byref
- mov edx, ebx
+ mov dword ptr [ebp+0x0C], eax
+ mov edx, eax
mov eax, dword ptr [ecx]
mov eax, dword ptr [eax+0x30]
call [eax+0x10]<unknown method>
; gcrRegs -[ecx] +[eax]
- ;; size=10 bbWeight=0.46 PerfScore 3.35
-G_M56915_IG05: ; bbWeight=0.73, gcrefRegs=00000041 {eax esi}, byrefRegs=00000080 {edi}, byref
+ ;; size=13 bbWeight=0.46 PerfScore 3.81
+G_M56915_IG05: ; bbWeight=0.73, gcrefRegs=00000041 {eax esi}, byrefRegs=00000080 {edi}, byref, isz
mov gword ptr [ebp-0x18], eax
- ; GC ptr vars +{V13}
+ ; GC ptr vars +{V11}
test eax, eax
mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
- je G_M56915_IG18
- ;; size=14 bbWeight=0.73 PerfScore 2.38
-G_M56915_IG06: ; bbWeight=0.60, gcVars=00000020 {V13}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz
+ je SHORT G_M56915_IG11
+ ;; size=10 bbWeight=0.73 PerfScore 2.38
+G_M56915_IG06: ; bbWeight=0.60, gcVars=00000010 {V11}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref
; gcrRegs -[eax edx]
; GC ptr vars -{V04}
cmp dword ptr [esi], 0xD1FFAB1E
- je SHORT G_M56915_IG16
- ;; size=8 bbWeight=0.60 PerfScore 2.40
+ je G_M56915_IG16
+ ;; size=12 bbWeight=0.60 PerfScore 2.40
G_M56915_IG07: ; bbWeight=0.33, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref
mov ecx, esi
; gcrRegs +[ecx]
- mov edx, ebx
- mov ebx, dword ptr [esi]
- mov ebx, dword ptr [ebx+0x30]
+ mov gword ptr [ebp-0x1C], ecx
+ mov edx, dword ptr [ebp+0x0C]
+ mov ecx, dword ptr [esi]
+ ; gcrRegs -[ecx]
+ mov ecx, dword ptr [ecx+0x30]
+ mov dword ptr [ebp-0x20], ecx
+ mov ecx, gword ptr [ebp-0x1C]
+ ; gcrRegs +[ecx]
+ mov ebx, dword ptr [ebp-0x20]
call [ebx]Microsoft.CodeAnalysis.SyntaxNode:GetChildPosition(int):int:this
; gcrRegs -[ecx]
mov ebx, eax
- ;; size=13 bbWeight=0.33 PerfScore 2.56
+ ;; size=26 bbWeight=0.33 PerfScore 4.12
G_M56915_IG08: ; bbWeight=0.60, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
mov eax, gword ptr [ebp-0x18]
; gcrRegs +[eax]
cmp dword ptr [eax], 0xD1FFAB1E
- je SHORT G_M56915_IG14
+ je SHORT G_M56915_IG15
;; size=11 bbWeight=0.60 PerfScore 3.00
G_M56915_IG09: ; bbWeight=0.33, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref
; gcrRegs -[eax]
@@ -112,39 +121,65 @@ G_M56915_IG09: ; bbWeight=0.33, gcrefRegs=00000040 {esi}, byrefRegs=00000
mov eax, dword ptr [eax]
; gcrRegs -[eax]
mov eax, dword ptr [eax+0x3C]
- ; GC ptr vars -{V13}
+ ; GC ptr vars -{V11}
call [eax+0x0C]<unknown method>
; gcrRegs -[ecx edx esi] +[eax]
;; size=16 bbWeight=0.33 PerfScore 3.13
-G_M56915_IG10: ; bbWeight=0.60, gcrefRegs=00000001 {eax}, byrefRegs=00000080 {edi}, byref, isz
+G_M56915_IG10: ; bbWeight=0.60, gcrefRegs=00000001 {eax}, byrefRegs=00000080 {edi}, byref
+ mov ebx, dword ptr [ebp+0x08]
+ mov ecx, dword ptr [ebx+0x20]
+ mov ecx, dword ptr [ecx]
mov edx, eax
; gcrRegs +[edx]
- test edx, edx
- je SHORT G_M56915_IG17
- ;; size=6 bbWeight=0.60 PerfScore 0.90
-G_M56915_IG11: ; bbWeight=0.30, gcrefRegs=00000005 {eax edx}, byrefRegs=00000080 {edi}, byref, isz
- mov esi, dword ptr [ebp+0x08]
- mov ecx, dword ptr [esi+0x20]
- mov ecx, dword ptr [ecx]
- cmp dword ptr [edx], ecx
- je SHORT G_M56915_IG17
- ;; size=12 bbWeight=0.30 PerfScore 2.70
-G_M56915_IG12: ; bbWeight=0.15, gcrefRegs=00000001 {eax}, byrefRegs=00000080 {edi}, byref, isz
+ call CORINFO_HELP_CHKCASTANY
; gcrRegs -[edx]
- jmp SHORT G_M56915_IG15
- ;; size=2 bbWeight=0.15 PerfScore 0.30
-G_M56915_IG13: ; bbWeight=0.50, gcVars=00000010 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax]
+ mov edx, eax
+ ; gcrRegs +[edx]
+ push 0
+ mov ecx, edi
+ ; byrRegs +[ecx]
+ call <unknown method>
+ ; gcrRegs -[edx]
+ ; byrRegs -[ecx]
+ mov edx, gword ptr [edi]
+ ; gcrRegs +[edx]
+ mov esi, edx
+ ; gcrRegs +[esi]
+ mov edx, esi
+ ;; size=32 bbWeight=0.60 PerfScore 6.75
+G_M56915_IG11: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax esi]
; byrRegs -[edi]
- ; GC ptr vars +{V04}
+ mov eax, edx
+ ; gcrRegs +[eax]
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M56915_IG12: ; bbWeight=1, epilog, nogc, extend
+ lea esp, [ebp-0x0C]
+ pop ebx
+ pop esi
+ pop edi
+ pop ebp
+ ret 8
+ ;; size=10 bbWeight=1 PerfScore 4.50
+G_M56915_IG13: ; bbWeight=0.50, gcVars=00000008 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[eax edx]
+ ; GC ptr vars +{V03 V04}
mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
- jmp SHORT G_M56915_IG18
+ jmp SHORT G_M56915_IG11
;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M56915_IG14: ; bbWeight=0.27, gcVars=00000020 {V13}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz
- ; gcrRegs -[edx] +[esi]
+G_M56915_IG14: ; bbWeight=0.27, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000080 {edi}, byref
+ ; gcrRegs -[edx] +[ecx esi]
; byrRegs +[edi]
- ; GC ptr vars -{V04} +{V13}
+ mov dword ptr [ebp+0x0C], eax
+ mov edx, eax
+ call [Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.QualifiedNameSyntax:GetSlot(int):Microsoft.CodeAnalysis.GreenNode:this]
+ ; gcrRegs -[ecx] +[eax]
+ jmp G_M56915_IG05
+ ;; size=16 bbWeight=0.27 PerfScore 1.70
+G_M56915_IG15: ; bbWeight=0.27, gcVars=00000010 {V11}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz
+ ; gcrRegs -[eax]
+ ; GC ptr vars -{V03} +{V11}
mov ecx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Syntax.IdentifierNameSyntax
call CORINFO_HELP_NEWSFAST
; gcrRegs +[eax]
@@ -153,7 +188,7 @@ G_M56915_IG14: ; bbWeight=0.27, gcVars=00000020 {V13}, gcrefRegs=00000040
; byrRegs +[edx]
mov ebx, gword ptr [ebp-0x18]
; gcrRegs +[ebx]
- ; GC ptr vars -{V13}
+ ; GC ptr vars -{V04 V11}
call CORINFO_HELP_ASSIGN_REF_EBX
; gcrRegs -[ebx]
; byrRegs -[edx]
@@ -164,65 +199,18 @@ G_M56915_IG14: ; bbWeight=0.27, gcVars=00000020 {V13}, gcrefRegs=00000040
; byrRegs -[edx]
jmp SHORT G_M56915_IG10
;; size=34 bbWeight=0.27 PerfScore 2.23
-G_M56915_IG15: ; bbWeight=0.15, gcrefRegs=00000001 {eax}, byrefRegs=00000080 {edi}, byref, isz
- mov edx, eax
- ; gcrRegs +[edx]
- call CORINFO_HELP_CHKCASTANY
- ; gcrRegs -[edx]
- mov edx, eax
- ; gcrRegs +[edx]
...
+18 (+7.44%) : 180000.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler+<>c:<.cctor>b_100(System.Object):this (Tier1)
@@ -8,17 +8,17 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Threading.Tasks.ThreadPoolTaskScheduler+<>c>
-; V01 arg1 [V01,T02] ( 6, 4.12) ref -> esi class-hnd single-def <System.Object>
-; V02 tmp0 [V02,T09] ( 3, 1.25) int -> ecx "fgMakeTemp is creating a new local variable"
-; V03 tmp1 [V03,T00] ( 10, 13.75) ref -> edi class-hnd "spilling QMark2" <System.Threading.Tasks.Task>
-;* V04 tmp2 [V04 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V05 tmp3 [V05,T08] ( 4, 1.50) ubyte -> ebx "Inline return value spill temp"
-; V06 tmp4 [V06,T05] ( 4, 2 ) ref -> ecx class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
-; V07 tmp5 [V07,T07] ( 2, 2 ) byref -> edx single-def "argument with side effect"
-; V08 rat0 [V08,T06] ( 3, 2 ) byref -> edx "TLS field access"
-; V09 rat1 [V09,T03] ( 3, 3 ) int -> edx "TLS access"
-; V10 rat2 [V10,T04] ( 3, 3 ) int -> edx "ThreadStaticBlockBase access"
-; V11 rat3 [V11,T01] ( 5, 7 ) ref -> eax class-hnd "replacement local" <System.Threading.Tasks.Task>
+; V01 arg1 [V01,T03] ( 6, 4 ) ref -> esi class-hnd single-def <System.Object>
+; V02 tmp0 [V02,T00] ( 7, 11 ) ref -> edi class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
+;* V03 tmp1 [V03 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
+; V04 tmp2 [V04,T09] ( 4, 1.50) ubyte -> ebx "Inline return value spill temp"
+; V05 tmp3 [V05,T06] ( 4, 2 ) ref -> ecx class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+; V06 tmp4 [V06,T08] ( 2, 2 ) byref -> edx single-def "argument with side effect"
+; V07 rat0 [V07,T07] ( 3, 2 ) byref -> edx "TLS field access"
+; V08 rat1 [V08,T04] ( 3, 3 ) int -> edx "TLS access"
+; V09 rat2 [V09,T05] ( 3, 3 ) int -> edx "ThreadStaticBlockBase access"
+; V10 rat3 [V10,T01] ( 5, 7 ) ref -> eax class-hnd "replacement local" <System.Threading.Tasks.Task>
+; V11 rat4 [V11,T02] ( 5, 7 ) ref -> edi class-hnd "replacement local" <System.Threading.Tasks.Task>
;
; Lcl frame size = 0
@@ -39,7 +39,7 @@ G_M60851_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
;; size=6 bbWeight=1 PerfScore 1.50
G_M60851_IG03: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
cmp dword ptr [eax], 0xD1FFAB1E
- jne G_M60851_IG16
+ jne G_M60851_IG12
;; size=12 bbWeight=0.50 PerfScore 2.00
G_M60851_IG04: ; bbWeight=1, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
xor ecx, ecx
@@ -50,21 +50,25 @@ G_M60851_IG04: ; bbWeight=1, gcrefRegs=00000041 {eax esi}, byrefRegs=0000
mov edi, esi
; gcrRegs +[edi]
test edi, edi
- jne SHORT G_M60851_IG11
+ je SHORT G_M60851_IG06
;; size=19 bbWeight=1 PerfScore 6.00
-G_M60851_IG05: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+G_M60851_IG05: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ cmp dword ptr [edi], 0xD1FFAB1E
+ jne G_M60851_IG13
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
+G_M60851_IG06: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi]
or dword ptr [edi+0x1C], 0x20000
mov ecx, gword ptr [edi+0x14]
; gcrRegs +[ecx]
test ecx, ecx
- jne G_M60851_IG17
+ jne G_M60851_IG14
;; size=18 bbWeight=1 PerfScore 6.25
-G_M60851_IG06: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+G_M60851_IG07: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx]
xor ebx, ebx
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M60851_IG07: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+G_M60851_IG08: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
xor edx, edx
test ebx, ebx
sete dl
@@ -74,22 +78,22 @@ G_M60851_IG07: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000
setne cl
movzx ecx, cl
test edx, ecx
- je SHORT G_M60851_IG15
- ;; size=32 bbWeight=1 PerfScore 6.50
-G_M60851_IG08: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+ je G_M60851_IG17
+ ;; size=36 bbWeight=1 PerfScore 6.50
+G_M60851_IG09: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
mov edx, dword ptr FS:[0x002C]
mov edx, dword ptr [edx+0x0C]
cmp dword ptr [edx+0x80], 3
- jl SHORT G_M60851_IG14
+ jl SHORT G_M60851_IG16
mov edx, dword ptr [edx+0x84]
mov edx, dword ptr [edx+0x0C]
test edx, edx
- je SHORT G_M60851_IG14
+ je SHORT G_M60851_IG16
mov edx, bword ptr [edx]
; byrRegs +[edx]
add edx, 8
;; size=37 bbWeight=0.50 PerfScore 7.25
-G_M60851_IG09: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000004 {edx}, byref
+G_M60851_IG10: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000004 {edx}, byref
add edx, 52
push 0
mov ecx, edi
@@ -98,51 +102,14 @@ G_M60851_IG09: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000
; gcrRegs -[ecx edi]
; byrRegs -[edx]
;; size=13 bbWeight=0.50 PerfScore 2.25
-G_M60851_IG10: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M60851_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
pop ebx
pop esi
pop edi
pop ebp
ret
;; size=5 bbWeight=1 PerfScore 3.00
-G_M60851_IG11: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs +[esi edi]
- mov ecx, 0xD1FFAB1E ; System.Threading.Tasks.Task
- cmp dword ptr [edi], ecx
- je SHORT G_M60851_IG05
- ;; size=9 bbWeight=0.25 PerfScore 1.06
-G_M60851_IG12: ; bbWeight=0.12, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[edi]
- mov edx, esi
- ; gcrRegs +[edx]
- call CORINFO_HELP_CHKCASTCLASS_SPECIAL
- ; gcrRegs -[edx esi] +[eax]
- mov edi, eax
- ; gcrRegs +[edi]
- jmp SHORT G_M60851_IG05
- ;; size=11 bbWeight=0.12 PerfScore 0.44
-G_M60851_IG13: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax]
- mov ebx, 1
- jmp SHORT G_M60851_IG07
- ;; size=7 bbWeight=0 PerfScore 0.00
-G_M60851_IG14: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, 3
- call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
- ; byrRegs +[eax]
- mov edx, eax
- ; byrRegs +[edx]
- jmp SHORT G_M60851_IG09
- ;; size=14 bbWeight=0 PerfScore 0.00
-G_M60851_IG15: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
- ; byrRegs -[eax edx]
- mov ecx, edi
- ; gcrRegs +[ecx]
- call [System.Threading.Tasks.Task:ExecuteEntryCancellationRequestedOrCanceled():this]
- ; gcrRegs -[ecx edi]
- jmp SHORT G_M60851_IG10
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M60851_IG16: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M60851_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[esi]
mov edx, esi
; gcrRegs +[edx]
@@ -151,19 +118,50 @@ G_M60851_IG16: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000
; gcrRegs -[edx] +[eax]
jmp G_M60851_IG04
;; size=17 bbWeight=0 PerfScore 0.00
-G_M60851_IG17: ; bbWeight=0, gcrefRegs=00000082 {ecx edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax esi] +[ecx edi]
+G_M60851_IG13: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax]
+ mov edx, esi
+ ; gcrRegs +[edx]
+ mov ecx, 0xD1FFAB1E ; System.Threading.Tasks.Task
+ call CORINFO_HELP_CHKCASTCLASS_SPECIAL
+ ; gcrRegs -[edx esi] +[eax]
+ mov edi, eax
+ ; gcrRegs +[edi]
+ jmp G_M60851_IG06
+ ;; size=19 bbWeight=0 PerfScore 0.00
+G_M60851_IG14: ; bbWeight=0, gcrefRegs=00000082 {ecx edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax] +[ecx]
cmp dword ptr [ecx+0x1C], 1
- je SHORT G_M60851_IG13
+ je SHORT G_M60851_IG15
add ecx, 36
; gcrRegs -[ecx]
; byrRegs +[ecx]
call [System.Threading.CancellationToken:get_IsCancellationRequested():ubyte:this]
; byrRegs -[ecx]
mov ebx, eax
- jmp G_M60851_IG07
+ jmp G_M60851_IG08
;; size=22 bbWeight=0 PerfScore 0.00
+G_M60851_IG15: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+ mov ebx, 1
+ jmp G_M60851_IG08
+ ;; size=10 bbWeight=0 PerfScore 0.00
+G_M60851_IG16: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+ mov ecx, 3
+ call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
+ ; byrRegs +[eax]
+ mov edx, eax
+ ; byrRegs +[edx]
+ jmp SHORT G_M60851_IG10
+ ;; size=14 bbWeight=0 PerfScore 0.00
+G_M60851_IG17: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+ ; byrRegs -[eax edx]
+ mov ecx, edi
+ ; gcrRegs +[ecx]
+ call [System.Threading.Tasks.Task:ExecuteEntryCancellationRequestedOrCanceled():this]
+ ; gcrRegs -[ecx edi]
+ jmp SHORT G_M60851_IG11
+ ;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 242, prolog size 6, PerfScore 40.88, instruction count 78, allocated bytes for code 242 (MethodHash=8aa4124c) for method System.Threading.Tasks.ThreadPoolTaskScheduler+<>c:<.cctor>b__10_0(System.Object):this (Tier1)
+; Total bytes of code 260, prolog size 6, PerfScore 41.38, instruction count 78, allocated bytes for code 260 (MethodHash=8aa4124c) for method System.Threading.Tasks.ThreadPoolTaskScheduler+<>c:<.cctor>b__10_0(System.Object):this (Tier1)
; ============================================================
+10 (+10.99%) : 401036.dasm - OLEDB.Test.ModuleCore.CTestCase:get_TestModule():OLEDB.Test.ModuleCore.CTestModule:this (Tier1)
@@ -10,12 +10,10 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 3 ) ref -> ecx this class-hnd single-def <OLEDB.Test.ModuleCore.CTestCase>
-; V01 tmp0 [V01,T03] ( 3, 4.50) ref -> edx single-def "CASTCLASS eval op1"
-; V02 tmp1 [V02,T06] ( 3, 2.50) int -> ecx "fgMakeTemp is creating a new local variable"
-; V03 tmp2 [V03,T00] ( 5, 7.50) ref -> eax class-hnd "spilling QMark2" <OLEDB.Test.ModuleCore.CTestModule>
-; V04 cse0 [V04,T05] ( 4, 3 ) ref -> esi "CSE - aggressive"
-; V05 rat0 [V05,T04] ( 3, 4 ) ref -> edx "Spilling to split statement for tree"
-; V06 rat1 [V06,T01] ( 6, 7 ) ref -> eax class-hnd "replacement local" <OLEDB.Test.ModuleCore.CTestModule>
+; V01 cse0 [V01,T04] ( 5, 3 ) ref -> esi "CSE - aggressive"
+; V02 rat0 [V02,T03] ( 3, 4 ) ref -> edx "Spilling to split statement for tree"
+; V03 rat1 [V03,T00] ( 6, 7 ) ref -> ecx class-hnd "replacement local" <OLEDB.Test.ModuleCore.CTestModule>
+; V04 rat2 [V04,T01] ( 5, 7 ) ref -> eax class-hnd "replacement local" <OLEDB.Test.ModuleCore.CTestModule>
;
; Lcl frame size = 0
@@ -30,56 +28,54 @@ G_M5100_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000
; gcrRegs +[esi]
mov edx, esi
; gcrRegs +[edx]
- mov eax, edx
- ; gcrRegs +[eax]
- test eax, eax
+ mov ecx, edx
+ test ecx, ecx
jne SHORT G_M5100_IG08
;; size=11 bbWeight=1 PerfScore 3.75
-G_M5100_IG03: ; bbWeight=1, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ecx edx]
- test eax, eax
+G_M5100_IG03: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[edx]
+ test ecx, ecx
je SHORT G_M5100_IG10
;; size=4 bbWeight=1 PerfScore 1.25
G_M5100_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax]
- mov edx, esi
- ; gcrRegs +[edx]
- mov eax, edx
+ ; gcrRegs -[ecx]
+ mov eax, esi
; gcrRegs +[eax]
test eax, eax
- je SHORT G_M5100_IG07
- ;; size=8 bbWeight=1 PerfScore 1.75
-G_M5100_IG05: ; bbWeight=0.50, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz
+ jne SHORT G_M5100_IG06
+ ;; size=6 bbWeight=1 PerfScore 1.50
+G_M5100_IG05: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[esi]
- mov ecx, 0xD1FFAB1E ; OLEDB.Test.ModuleCore.CTestModule
- cmp dword ptr [eax], ecx
- je SHORT G_M5100_IG07
- ;; size=9 bbWeight=0.50 PerfScore 2.12
-G_M5100_IG06: ; bbWeight=0.25, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
- call CORINFO_HELP_CHKCASTCLASS_SPECIAL
- ; gcrRegs -[edx] +[eax]
- ;; size=5 bbWeight=0.25 PerfScore 0.25
-G_M5100_IG07: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
pop esi
pop ebp
ret
;; size=3 bbWeight=1 PerfScore 2.00
-G_M5100_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000045 {eax edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs +[edx esi]
+G_M5100_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs +[esi]
cmp dword ptr [eax], 0xD1FFAB1E
+ jne SHORT G_M5100_IG12
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M5100_IG07: ; bbWeight=0.22, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[esi]
+ jmp SHORT G_M5100_IG05
+ ;; size=2 bbWeight=0.22 PerfScore 0.45
+G_M5100_IG08: ; bbWeight=0.50, gcrefRegs=00000046 {ecx edx esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax] +[ecx edx esi]
+ cmp dword ptr [ecx], 0xD1FFAB1E
je SHORT G_M5100_IG03
;; size=8 bbWeight=0.50 PerfScore 2.00
G_M5100_IG09: ; bbWeight=0, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax]
+ ; gcrRegs -[ecx]
mov ecx, 0xD1FFAB1E ; OLEDB.Test.ModuleCore.CTestModule
call CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[edx] +[eax]
- test eax, eax
+ mov ecx, eax
+ ; gcrRegs +[ecx]
+ test ecx, ecx
jne SHORT G_M5100_IG04
- ;; size=14 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M5100_IG10: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
+ ; gcrRegs -[eax ecx]
mov edx, esi
; gcrRegs +[edx]
mov ecx, 0xD1FFAB1E ; OLEDB.Test.ModuleCore.CTestCase
@@ -96,7 +92,16 @@ G_M5100_IG11: ; bbWeight=0, epilog, nogc, extend
pop ebp
ret
;; size=3 bbWeight=0 PerfScore 0.00
+G_M5100_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[eax] +[esi]
+ mov edx, esi
+ ; gcrRegs +[edx]
+ mov ecx, 0xD1FFAB1E ; OLEDB.Test.ModuleCore.CTestModule
+ call CORINFO_HELP_CHKCASTCLASS
+ ; gcrRegs -[edx esi] +[eax]
+ jmp SHORT G_M5100_IG05
+ ;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 91, prolog size 4, PerfScore 15.38, instruction count 36, allocated bytes for code 91 (MethodHash=2222ec13) for method OLEDB.Test.ModuleCore.CTestCase:get_TestModule():OLEDB.Test.ModuleCore.CTestModule:this (Tier1)
+; Total bytes of code 101, prolog size 4, PerfScore 15.20, instruction count 39, allocated bytes for code 101 (MethodHash=2222ec13) for method OLEDB.Test.ModuleCore.CTestCase:get_TestModule():OLEDB.Test.ModuleCore.CTestModule:this (Tier1)
; ============================================================
librariestestsnotieredcompilation.run.windows.x86.Release.mch
-14 (-42.42%) : 91003.dasm - System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c11[System.__Canon]:<GetMetadataViewProvider>b__1_0(System.Collections.Generic.IDictionary2[System.String,System.Object]):System.Canon:this (FullOpts)
@@ -2,51 +2,35 @@
; Emitting BLENDED_CODE for X86 with AVX512 - Windows
; FullOpts code
; optimized code
-; ebp based frame
+; esp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 2.25) ref -> esi this class-hnd single-def <System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]>
-; V01 arg1 [V01,T01] ( 4, 3.12) ref -> edx class-hnd single-def <System.Collections.Generic.IDictionary`2[System.String,System.Object]>
-; V02 tmp0 [V02,T03] ( 3, 1.25) int -> ecx "fgMakeTemp is creating a new local variable"
-; V03 tmp1 [V03,T00] ( 5, 6.75) ref -> eax class-hnd "spilling QMark2" <System.__Canon>
+; V00 this [V00,T00] ( 3, 3 ) ref -> esi this class-hnd single-def <System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> edx class-hnd single-def <System.Collections.Generic.IDictionary`2[System.String,System.Object]>
;
; Lcl frame size = 0
G_M31417_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- push ebp
- mov ebp, esp
push esi
mov esi, ecx
- ; gcrRegs +[esi]
- ;; size=6 bbWeight=1 PerfScore 2.50
-G_M31417_IG02: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[edx]
- mov eax, edx
- ; gcrRegs +[eax]
- test eax, eax
- je SHORT G_M31417_IG05
- ;; size=6 bbWeight=1 PerfScore 1.50
-G_M31417_IG03: ; bbWeight=0.25, gcrefRegs=00000045 {eax edx esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=3 bbWeight=1 PerfScore 1.25
+G_M31417_IG02: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs +[edx esi]
mov ecx, dword ptr [esi]
mov ecx, dword ptr [ecx+0x24]
mov ecx, dword ptr [ecx]
mov ecx, dword ptr [ecx]
- cmp dword ptr [eax], ecx
- je SHORT G_M31417_IG05
- ;; size=13 bbWeight=0.25 PerfScore 3.00
-G_M31417_IG04: ; bbWeight=0.12, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[edx] +[eax]
- ;; size=5 bbWeight=0.12 PerfScore 0.12
-G_M31417_IG05: ; bbWeight=1, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ; gcr arg pop 0
+ ;; size=14 bbWeight=1 PerfScore 9.00
+G_M31417_IG03: ; bbWeight=1, epilog, nogc, extend
pop esi
- pop ebp
ret
- ;; size=3 bbWeight=1 PerfScore 2.00
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 33, prolog size 4, PerfScore 9.12, instruction count 17, allocated bytes for code 33 (MethodHash=9c5d8546) for method System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]:<GetMetadataViewProvider>b__1_0(System.Collections.Generic.IDictionary`2[System.String,System.Object]):System.__Canon:this (FullOpts)
+; Total bytes of code 19, prolog size 1, PerfScore 11.75, instruction count 9, allocated bytes for code 19 (MethodHash=9c5d8546) for method System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]:<GetMetadataViewProvider>b__1_0(System.Collections.Generic.IDictionary`2[System.String,System.Object]):System.__Canon:this (FullOpts)
; ============================================================
-41 (-42.27%) : 62857.dasm - System.Xml.Serialization.ReflectionXmlSerializationReaderHelper+<>cDisplayClass1_0`2[System.Canon,System.Canon]:b0(System.Object,System.Object):this (FullOpts)
@@ -2,104 +2,65 @@
; Emitting BLENDED_CODE for X86 with AVX512 - Windows
; FullOpts code
; optimized code
-; ebp based frame
+; esp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 5, 3.50) ref -> esi this class-hnd single-def <System.Xml.Serialization.ReflectionXmlSerializationReaderHelper+<>c__DisplayClass1_0`2[System.__Canon,System.__Canon]>
-; V01 arg1 [V01,T04] ( 4, 3.12) ref -> edx class-hnd single-def <System.Object>
-; V02 arg2 [V02,T07] ( 2, 1.12) ref -> edi class-hnd single-def <System.Object>
-; V03 tmp0 [V03,T02] ( 3, 6 ) ref -> ebx class-hnd single-def "bubbling QMark2" <<unknown class>>
-; V04 tmp1 [V04,T05] ( 3, 1.25) int -> ecx "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> [ebp-0x10] class-hnd "spilling QMark2" <System.__Canon>
-; V06 tmp3 [V06,T06] ( 3, 1.25) int -> ecx "fgMakeTemp is creating a new local variable"
-; V07 tmp4 [V07,T01] ( 5, 6.75) ref -> edx class-hnd "spilling QMark2" <System.__Canon>
+; V00 this [V00,T00] ( 4, 4 ) ref -> esi this class-hnd single-def <System.Xml.Serialization.ReflectionXmlSerializationReaderHelper+<>c__DisplayClass1_0`2[System.__Canon,System.__Canon]>
+; V01 arg1 [V01,T02] ( 3, 3 ) ref -> edx class-hnd single-def <System.Object>
+; V02 arg2 [V02,T05] ( 1, 1 ) ref -> [esp+0x14] class-hnd single-def <System.Object>
+; V03 tmp0 [V03,T03] ( 2, 4 ) ref -> [esp+0x00] spill-single-def "argument with side effect"
+; V04 tmp1 [V04,T01] ( 3, 6 ) ref -> edi single-def "argument with side effect"
+; V05 cse0 [V05,T04] ( 3, 3 ) int -> ebx "CSE - aggressive"
;
; Lcl frame size = 4
G_M23900_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- push ebp
- mov ebp, esp
push edi
push esi
push ebx
push eax
mov esi, ecx
- ; gcrRegs +[esi]
- mov edi, gword ptr [ebp+0x08]
+ ;; size=6 bbWeight=1 PerfScore 4.25
+G_M23900_IG02: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs +[edx esi]
+ mov edi, gword ptr [esi+0x04]
; gcrRegs +[edi]
- ;; size=12 bbWeight=1 PerfScore 6.50
-G_M23900_IG02: ; bbWeight=1, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[edx]
- mov ebx, gword ptr [esi+0x04]
- ; gcrRegs +[ebx]
- mov eax, edx
- ; gcrRegs +[eax]
- test eax, eax
- je SHORT G_M23900_IG05
- ;; size=9 bbWeight=1 PerfScore 3.50
-G_M23900_IG03: ; bbWeight=0.25, gcrefRegs=000000CD {eax edx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [esi]
mov ecx, dword ptr [ecx+0x24]
- mov ecx, dword ptr [ecx]
- mov ecx, dword ptr [ecx]
- cmp dword ptr [eax], ecx
- je SHORT G_M23900_IG05
- ;; size=13 bbWeight=0.25 PerfScore 3.00
-G_M23900_IG04: ; bbWeight=0.12, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
+ mov ebx, dword ptr [ecx]
+ mov ecx, dword ptr [ebx]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[edx] +[eax]
- mov gword ptr [ebp-0x10], eax
- ; GC ptr vars +{V05}
- mov eax, gword ptr [ebp-0x10]
- ;; size=11 bbWeight=0.12 PerfScore 0.38
-G_M23900_IG05: ; bbWeight=1, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- ; GC ptr vars -{V05}
- mov edx, edi
- ; gcrRegs +[edx]
- test edx, edx
- je SHORT G_M23900_IG08
- ;; size=6 bbWeight=1 PerfScore 1.50
-G_M23900_IG06: ; bbWeight=0.25, gcrefRegs=000000CD {eax edx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, dword ptr [esi]
- mov ecx, dword ptr [ecx+0x24]
- mov ecx, dword ptr [ecx]
- mov ecx, dword ptr [ecx+0x04]
- cmp dword ptr [edx], ecx
- je SHORT G_M23900_IG08
- ;; size=14 bbWeight=0.25 PerfScore 3.00
-G_M23900_IG07: ; bbWeight=0.12, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[edx]
- mov gword ptr [ebp-0x10], eax
- ; GC ptr vars +{V05}
- mov edx, edi
+ ; gcr arg pop 0
+ mov gword ptr [esp], eax
+ ; GC ptr vars +{V03}
+ mov ecx, dword ptr [ebx+0x04]
+ mov edx, gword ptr [esp+0x14]
; gcrRegs +[edx]
call CORINFO_HELP_CHKCASTANY
- ; gcrRegs -[edx edi]
- mov edx, eax
+ ; gcrRegs -[edx]
+ ; gcr arg pop 0
+ push eax
+ ; gcr arg push 0
+ mov edx, gword ptr [esp+0x04]
; gcrRegs +[edx]
- mov eax, gword ptr [ebp-0x10]
- ;; size=15 bbWeight=0.12 PerfScore 0.44
-G_M23900_IG08: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000004D {eax edx ebx esi}, byrefRegs=00000000 {}, gcvars, byref
- ; GC ptr vars -{V05}
- push edx
- mov edx, eax
- mov ecx, gword ptr [ebx+0x04]
+ mov ecx, gword ptr [edi+0x04]
; gcrRegs +[ecx]
- call [ebx+0x0C]<unknown method>
- ; gcrRegs -[eax ecx edx ebx]
- ;; size=9 bbWeight=1 PerfScore 6.25
-G_M23900_IG09: ; bbWeight=1, epilog, nogc, extend
+ ; GC ptr vars -{V03}
+ call [edi+0x0C]<unknown method>
+ ; gcrRegs -[eax ecx edx edi]
+ ; gcr arg pop 1
+ ;; size=43 bbWeight=1 PerfScore 23.00
+G_M23900_IG03: ; bbWeight=1, epilog, nogc, extend
pop ecx
pop ebx
pop esi
pop edi
- pop ebp
ret 4
- ;; size=8 bbWeight=1 PerfScore 4.50
+ ;; size=7 bbWeight=1 PerfScore 4.00
-; Total bytes of code 97, prolog size 7, PerfScore 29.06, instruction count 45, allocated bytes for code 97 (MethodHash=6e11a2a3) for method System.Xml.Serialization.ReflectionXmlSerializationReaderHelper+<>c__DisplayClass1_0`2[System.__Canon,System.__Canon]:<GetSetMemberValueDelegateWithType>b__0(System.Object,System.Object):this (FullOpts)
+; Total bytes of code 56, prolog size 4, PerfScore 31.25, instruction count 24, allocated bytes for code 56 (MethodHash=6e11a2a3) for method System.Xml.Serialization.ReflectionXmlSerializationReaderHelper+<>c__DisplayClass1_0`2[System.__Canon,System.__Canon]:<GetSetMemberValueDelegateWithType>b__0(System.Object,System.Object):this (FullOpts)
; ============================================================
-14 (-41.18%) : 139255.dasm - System.Linq.ParallelQuery1+<>c__21[System.Canon,System.Canon]:b2_1(System.Canon):System.__Canon:this (FullOpts)
@@ -2,51 +2,35 @@
; Emitting BLENDED_CODE for X86 with AVX512 - Windows
; FullOpts code
; optimized code
-; ebp based frame
+; esp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 2.25) ref -> esi this class-hnd single-def <System.Linq.ParallelQuery`1+<>c__2`1[System.__Canon,System.__Canon]>
-; V01 arg1 [V01,T01] ( 4, 3.12) ref -> edx class-hnd single-def <System.__Canon>
-; V02 tmp0 [V02,T03] ( 3, 1.25) int -> ecx "fgMakeTemp is creating a new local variable"
-; V03 tmp1 [V03,T00] ( 5, 6.75) ref -> eax class-hnd "spilling QMark2" <System.__Canon>
+; V00 this [V00,T00] ( 3, 3 ) ref -> esi this class-hnd single-def <System.Linq.ParallelQuery`1+<>c__2`1[System.__Canon,System.__Canon]>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> edx class-hnd single-def <System.__Canon>
;
; Lcl frame size = 0
G_M53670_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- push ebp
- mov ebp, esp
push esi
mov esi, ecx
- ; gcrRegs +[esi]
- ;; size=6 bbWeight=1 PerfScore 2.50
-G_M53670_IG02: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[edx]
- mov eax, edx
- ; gcrRegs +[eax]
- test eax, eax
- je SHORT G_M53670_IG05
- ;; size=6 bbWeight=1 PerfScore 1.50
-G_M53670_IG03: ; bbWeight=0.25, gcrefRegs=00000045 {eax edx esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=3 bbWeight=1 PerfScore 1.25
+G_M53670_IG02: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs +[edx esi]
mov ecx, dword ptr [esi]
mov ecx, dword ptr [ecx+0x24]
mov ecx, dword ptr [ecx]
mov ecx, dword ptr [ecx+0x04]
- cmp dword ptr [eax], ecx
- je SHORT G_M53670_IG05
- ;; size=14 bbWeight=0.25 PerfScore 3.00
-G_M53670_IG04: ; bbWeight=0.12, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[edx] +[eax]
- ;; size=5 bbWeight=0.12 PerfScore 0.12
-G_M53670_IG05: ; bbWeight=1, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ; gcr arg pop 0
+ ;; size=15 bbWeight=1 PerfScore 9.00
+G_M53670_IG03: ; bbWeight=1, epilog, nogc, extend
pop esi
- pop ebp
ret
- ;; size=3 bbWeight=1 PerfScore 2.00
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 34, prolog size 4, PerfScore 9.12, instruction count 17, allocated bytes for code 34 (MethodHash=8f1c2e59) for method System.Linq.ParallelQuery`1+<>c__2`1[System.__Canon,System.__Canon]:<OfType>b__2_1(System.__Canon):System.__Canon:this (FullOpts)
+; Total bytes of code 20, prolog size 1, PerfScore 11.75, instruction count 9, allocated bytes for code 20 (MethodHash=8f1c2e59) for method System.Linq.ParallelQuery`1+<>c__2`1[System.__Canon,System.__Canon]:<OfType>b__2_1(System.__Canon):System.__Canon:this (FullOpts)
; ============================================================
+17 (+43.59%) : 98001.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest:b_160():this (FullOpts)
@@ -8,24 +8,24 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 5, 2 ) ref -> esi this class-hnd single-def <System.Data.Tests.Common.DataTableMappingCollectionTest>
+; V00 this [V00,T00] ( 5, 5 ) ref -> esi this class-hnd single-def <System.Data.Tests.Common.DataTableMappingCollectionTest>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>>
-; V02 tmp0 [V02,T01] ( 3, 0 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection>
-; V03 tmp1 [V03,T02] ( 2, 0 ) ref -> edx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMapping[]>
-; V04 tmp2 [V04,T03] ( 2, 0 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection>
-;* V05 tmp3 [V05,T04] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <System.Data.Common.DataTableMapping>
+; V02 tmp0 [V02,T01] ( 3, 6 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection>
+; V03 tmp1 [V03,T03] ( 2, 4 ) ref -> edx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMapping[]>
+; V04 tmp2 [V04,T02] ( 3, 6 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection>
+;* V05 tmp3 [V05,T04] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
;
; Lcl frame size = 0
-G_M51850_IG01: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
+G_M51850_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
push esi
+ push ebx
mov esi, ecx
; gcrRegs +[esi]
- ;; size=6 bbWeight=0 PerfScore 0.00
-G_M51850_IG02: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ;; size=7 bbWeight=1 PerfScore 3.50
+G_M51850_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, gword ptr [esi+0x04]
; gcrRegs +[ecx]
mov edx, gword ptr [esi+0x08]
@@ -34,15 +34,26 @@ G_M51850_IG02: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000
push 0
call [<unknown method>]
; gcrRegs -[ecx edx]
- mov ecx, gword ptr [esi+0x04]
- ; gcrRegs +[ecx]
- cmp byte ptr [ecx], cl
+ mov ebx, gword ptr [esi+0x04]
+ ; gcrRegs +[ebx]
+ cmp byte ptr [ebx], bl
mov ecx, 0xD1FFAB1E
+ ; gcrRegs +[ecx]
call [System.Data.Common.DataTableMappingCollection:ValidateType(System.Object)]
; gcrRegs -[ecx esi]
- int3
- ;; size=33 bbWeight=0 PerfScore 0.00
+ mov edx, 0xD1FFAB1E
+ mov ecx, ebx
+ ; gcrRegs +[ecx]
+ call [System.Data.Common.DataTableMappingCollection:Remove(System.Data.Common.DataTableMapping):this]
+ ; gcrRegs -[ecx ebx]
+ ;; size=45 bbWeight=1 PerfScore 22.75
+G_M51850_IG03: ; bbWeight=1, epilog, nogc, extend
+ pop ebx
+ pop esi
+ pop ebp
+ ret
+ ;; size=4 bbWeight=1 PerfScore 2.50
-; Total bytes of code 39, prolog size 4, PerfScore 0.00, instruction count 14, allocated bytes for code 39 (MethodHash=872f3575) for method System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
+; Total bytes of code 56, prolog size 5, PerfScore 28.75, instruction count 21, allocated bytes for code 56 (MethodHash=872f3575) for method System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
; ============================================================
+17 (+43.59%) : 98315.dasm - System.Data.Tests.Common.DataColumnMappingCollectionTest:b_220():this (FullOpts)
@@ -8,24 +8,24 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 5, 2 ) ref -> esi this class-hnd single-def <System.Data.Tests.Common.DataColumnMappingCollectionTest>
+; V00 this [V00,T00] ( 5, 5 ) ref -> esi this class-hnd single-def <System.Data.Tests.Common.DataColumnMappingCollectionTest>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>>
-; V02 tmp0 [V02,T01] ( 3, 0 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection>
-; V03 tmp1 [V03,T02] ( 2, 0 ) ref -> edx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMapping[]>
-; V04 tmp2 [V04,T03] ( 2, 0 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection>
-;* V05 tmp3 [V05,T04] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <System.Data.Common.DataColumnMapping>
+; V02 tmp0 [V02,T01] ( 3, 6 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection>
+; V03 tmp1 [V03,T03] ( 2, 4 ) ref -> edx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMapping[]>
+; V04 tmp2 [V04,T02] ( 3, 6 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection>
+;* V05 tmp3 [V05,T04] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
;
; Lcl frame size = 0
-G_M18245_IG01: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
+G_M18245_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
push esi
+ push ebx
mov esi, ecx
; gcrRegs +[esi]
- ;; size=6 bbWeight=0 PerfScore 0.00
-G_M18245_IG02: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ;; size=7 bbWeight=1 PerfScore 3.50
+G_M18245_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, gword ptr [esi+0x04]
; gcrRegs +[ecx]
mov edx, gword ptr [esi+0x08]
@@ -34,15 +34,26 @@ G_M18245_IG02: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000
push 0
call [<unknown method>]
; gcrRegs -[ecx edx]
- mov ecx, gword ptr [esi+0x04]
- ; gcrRegs +[ecx]
- cmp byte ptr [ecx], cl
+ mov ebx, gword ptr [esi+0x04]
+ ; gcrRegs +[ebx]
+ cmp byte ptr [ebx], bl
mov ecx, 0xD1FFAB1E
+ ; gcrRegs +[ecx]
call [System.Data.Common.DataColumnMappingCollection:ValidateType(System.Object)]
; gcrRegs -[ecx esi]
- int3
- ;; size=33 bbWeight=0 PerfScore 0.00
+ mov edx, 0xD1FFAB1E
+ mov ecx, ebx
+ ; gcrRegs +[ecx]
+ call [System.Data.Common.DataColumnMappingCollection:Remove(System.Data.Common.DataColumnMapping):this]
+ ; gcrRegs -[ecx ebx]
+ ;; size=45 bbWeight=1 PerfScore 22.75
+G_M18245_IG03: ; bbWeight=1, epilog, nogc, extend
+ pop ebx
+ pop esi
+ pop ebp
+ ret
+ ;; size=4 bbWeight=1 PerfScore 2.50
-; Total bytes of code 39, prolog size 4, PerfScore 0.00, instruction count 14, allocated bytes for code 39 (MethodHash=013fb8ba) for method System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
+; Total bytes of code 56, prolog size 5, PerfScore 28.75, instruction count 21, allocated bytes for code 56 (MethodHash=013fb8ba) for method System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
; ============================================================
+18 (+90.00%) : 96687.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest2+<>cDisplayClass7_0:b2():this (FullOpts)
@@ -8,28 +8,37 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 3, 2 ) ref -> ecx this class-hnd single-def <System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0>
-; V01 tmp0 [V01,T01] ( 2, 0 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection>
-;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
-;* V03 tmp2 [V03,T02] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <System.Data.Common.DataTableMapping>
+; V00 this [V00,T01] ( 3, 3 ) ref -> ecx this class-hnd single-def <System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0>
+; V01 tmp0 [V01,T00] ( 3, 6 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection>
;
; Lcl frame size = 0
-G_M51219_IG01: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
+G_M51219_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
- ;; size=3 bbWeight=0 PerfScore 0.00
-G_M51219_IG02: ; bbWeight=0, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
+ push ebx
+ ;; size=4 bbWeight=1 PerfScore 2.25
+G_M51219_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
; gcrRegs +[ecx]
- mov ecx, gword ptr [ecx+0x04]
- cmp byte ptr [ecx], cl
+ mov ebx, gword ptr [ecx+0x04]
+ ; gcrRegs +[ebx]
+ cmp byte ptr [ebx], bl
mov ecx, 0xD1FFAB1E
call [System.Data.Common.DataTableMappingCollection:ValidateType(System.Object)]
; gcrRegs -[ecx]
- int3
- ;; size=17 bbWeight=0 PerfScore 0.00
+ push 0xD1FFAB1E
+ mov ecx, ebx
+ ; gcrRegs +[ecx]
+ xor edx, edx
+ call [System.Data.Common.DataTableMappingCollection:Insert(int,System.Data.Common.DataTableMapping):this]
+ ; gcrRegs -[ecx ebx]
+ ;; size=31 bbWeight=1 PerfScore 12.75
+G_M51219_IG03: ; bbWeight=1, epilog, nogc, extend
+ pop ebx
+ pop ebp
+ ret
+ ;; size=3 bbWeight=1 PerfScore 2.00
-; Total bytes of code 20, prolog size 3, PerfScore 0.00, instruction count 7, allocated bytes for code 20 (MethodHash=20ef37ec) for method System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0:<Insert>b__2():this (FullOpts)
+; Total bytes of code 38, prolog size 4, PerfScore 17.00, instruction count 14, allocated bytes for code 38 (MethodHash=20ef37ec) for method System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0:<Insert>b__2():this (FullOpts)
; ============================================================
realworld.run.windows.x86.checked.mch
-14 (-42.42%) : 34197.dasm - System.Management.Automation.PSTypeExtensions+<>c7`1[System.Canon]:b7_1(System.Object):System.Canon:this (FullOpts)
@@ -2,51 +2,35 @@
; Emitting BLENDED_CODE for X86 with AVX512 - Windows
; FullOpts code
; optimized code
-; ebp based frame
+; esp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 2.25) ref -> esi this class-hnd single-def <System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]>
-; V01 arg1 [V01,T01] ( 4, 3.12) ref -> edx class-hnd single-def <System.Object>
-; V02 tmp0 [V02,T03] ( 3, 1.25) int -> ecx "fgMakeTemp is creating a new local variable"
-; V03 tmp1 [V03,T00] ( 5, 6.75) ref -> eax class-hnd "spilling QMark2" <System.__Canon>
+; V00 this [V00,T00] ( 3, 3 ) ref -> esi this class-hnd single-def <System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> edx class-hnd single-def <System.Object>
;
; Lcl frame size = 0
G_M56342_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- push ebp
- mov ebp, esp
push esi
mov esi, ecx
- ; gcrRegs +[esi]
- ;; size=6 bbWeight=1 PerfScore 2.50
-G_M56342_IG02: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[edx]
- mov eax, edx
- ; gcrRegs +[eax]
- test eax, eax
- je SHORT G_M56342_IG05
- ;; size=6 bbWeight=1 PerfScore 1.50
-G_M56342_IG03: ; bbWeight=0.25, gcrefRegs=00000045 {eax edx esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=3 bbWeight=1 PerfScore 1.25
+G_M56342_IG02: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs +[edx esi]
mov ecx, dword ptr [esi]
mov ecx, dword ptr [ecx+0x24]
mov ecx, dword ptr [ecx]
mov ecx, dword ptr [ecx]
- cmp dword ptr [eax], ecx
- je SHORT G_M56342_IG05
- ;; size=13 bbWeight=0.25 PerfScore 3.00
-G_M56342_IG04: ; bbWeight=0.12, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[edx] +[eax]
- ;; size=5 bbWeight=0.12 PerfScore 0.12
-G_M56342_IG05: ; bbWeight=1, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ; gcr arg pop 0
+ ;; size=14 bbWeight=1 PerfScore 9.00
+G_M56342_IG03: ; bbWeight=1, epilog, nogc, extend
pop esi
- pop ebp
ret
- ;; size=3 bbWeight=1 PerfScore 2.00
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 33, prolog size 4, PerfScore 9.12, instruction count 17, allocated bytes for code 33 (MethodHash=169a23e9) for method System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]:<GetCustomAttributes>b__7_1(System.Object):System.__Canon:this (FullOpts)
+; Total bytes of code 19, prolog size 1, PerfScore 11.75, instruction count 9, allocated bytes for code 19 (MethodHash=169a23e9) for method System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]:<GetCustomAttributes>b__7_1(System.Object):System.__Canon:this (FullOpts)
; ============================================================
-19 (-32.76%) : 678.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (FullOpts)
@@ -7,10 +7,9 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) int -> esi single-def
-; V01 loc0 [V01,T02] ( 3, 4.25) ref -> eax single-def "CASTCLASS eval op1"
-; V02 tmp1 [V02,T03] ( 3, 1.25) int -> ecx "fgMakeTemp is creating a new local variable"
-; V03 tmp2 [V03,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) int -> ecx single-def
+; V01 loc0 [V01,T01] ( 2, 4 ) ref -> edx single-def "argument with side effect"
+; V02 cse0 [V02,T02] ( 3, 3 ) int -> esi "CSE - aggressive"
;
; Lcl frame size = 4
@@ -20,11 +19,10 @@ G_M13946_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push esi
push eax
mov dword ptr [ebp-0x08], ecx
- mov esi, ecx
- ;; size=10 bbWeight=1 PerfScore 4.50
-G_M13946_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov ecx, dword ptr [esi+0x20]
- mov ecx, dword ptr [ecx]
+ ;; size=8 bbWeight=1 PerfScore 4.25
+G_M13946_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ mov esi, dword ptr [ecx+0x20]
+ mov ecx, dword ptr [esi]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[eax]
mov ecx, eax
@@ -33,36 +31,17 @@ G_M13946_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; gcrRegs -[ecx]
mov edx, eax
; gcrRegs +[edx]
- test edx, edx
- je SHORT G_M13946_IG05
- ;; size=24 bbWeight=1 PerfScore 9.75
-G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz
- mov ecx, dword ptr [esi+0x20]
- mov ecx, dword ptr [ecx]
- cmp dword ptr [edx], ecx
- je SHORT G_M13946_IG05
- ;; size=9 bbWeight=0.25 PerfScore 2.00
-G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[edx]
- mov edx, eax
- ; gcrRegs +[edx]
+ mov ecx, dword ptr [esi]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[edx]
- mov edx, eax
- ; gcrRegs +[edx]
- ;; size=9 bbWeight=0.12 PerfScore 0.19
-G_M13946_IG05: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
- mov eax, edx
- ; gcrRegs +[eax]
- ;; size=2 bbWeight=1 PerfScore 0.25
-G_M13946_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=27 bbWeight=1 PerfScore 11.50
+G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
pop ecx
pop esi
pop ebp
ret
;; size=4 bbWeight=1 PerfScore 2.50
-; Total bytes of code 58, prolog size 8, PerfScore 19.19, instruction count 26, allocated bytes for code 58 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
+; Total bytes of code 39, prolog size 8, PerfScore 18.25, instruction count 17, allocated bytes for code 39 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
; ============================================================
-14 (-30.43%) : 35682.dasm - System.Management.Automation.Language.GetSafeValueVisitor:VisitArrayExpression(System.Management.Automation.Language.ArrayExpressionAst):System.Object:this (FullOpts)
@@ -8,12 +8,10 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 3 ) ref -> eax this class-hnd single-def <System.Management.Automation.Language.GetSafeValueVisitor>
-; V01 arg1 [V01,T03] ( 3, 3 ) ref -> edx class-hnd single-def <System.Management.Automation.Language.ArrayExpressionAst>
-; V02 tmp0 [V02,T04] ( 3, 4.25) ref -> eax single-def "CASTCLASS eval op1"
-; V03 tmp1 [V03,T05] ( 3, 1.25) int -> ecx "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <<unknown class>>
-; V05 tmp3 [V05,T01] ( 3, 6 ) ref -> ecx single-def "argument with side effect"
+; V00 this [V00,T01] ( 3, 3 ) ref -> eax this class-hnd single-def <System.Management.Automation.Language.GetSafeValueVisitor>
+; V01 arg1 [V01,T02] ( 3, 3 ) ref -> edx class-hnd single-def <System.Management.Automation.Language.ArrayExpressionAst>
+; V02 tmp0 [V02,T00] ( 3, 6 ) ref -> ecx single-def "argument with side effect"
+; V03 tmp1 [V03,T03] ( 2, 4 ) ref -> edx single-def "argument with side effect"
;
; Lcl frame size = 0
@@ -23,7 +21,7 @@ G_M20846_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov eax, ecx
; gcrRegs +[eax]
;; size=5 bbWeight=1 PerfScore 1.50
-G_M20846_IG02: ; bbWeight=1, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz
+G_M20846_IG02: ; bbWeight=1, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref
; gcrRegs +[edx]
mov ecx, gword ptr [edx+0x10]
; gcrRegs +[ecx]
@@ -35,33 +33,15 @@ G_M20846_IG02: ; bbWeight=1, gcrefRegs=00000005 {eax edx}, byrefRegs=0000
; gcrRegs -[ecx edx] +[eax]
mov edx, eax
; gcrRegs +[edx]
- test edx, edx
- je SHORT G_M20846_IG05
- ;; size=19 bbWeight=1 PerfScore 10.75
-G_M20846_IG03: ; bbWeight=0.25, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz
mov ecx, 0xD1FFAB1E ; <unknown class>
- cmp dword ptr [edx], ecx
- je SHORT G_M20846_IG05
- ;; size=9 bbWeight=0.25 PerfScore 1.06
-G_M20846_IG04: ; bbWeight=0.12, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[edx]
- mov edx, eax
- ; gcrRegs +[edx]
call CORINFO_HELP_CHKCASTARRAY
; gcrRegs -[edx]
- mov edx, eax
- ; gcrRegs +[edx]
- ;; size=9 bbWeight=0.12 PerfScore 0.19
-G_M20846_IG05: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
- mov eax, edx
- ; gcrRegs +[eax]
- ;; size=2 bbWeight=1 PerfScore 0.25
-G_M20846_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=25 bbWeight=1 PerfScore 10.75
+G_M20846_IG03: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret
;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 46, prolog size 3, PerfScore 15.25, instruction count 20, allocated bytes for code 46 (MethodHash=55a8ae91) for method System.Management.Automation.Language.GetSafeValueVisitor:VisitArrayExpression(System.Management.Automation.Language.ArrayExpressionAst):System.Object:this (FullOpts)
+; Total bytes of code 32, prolog size 3, PerfScore 13.75, instruction count 13, allocated bytes for code 32 (MethodHash=55a8ae91) for method System.Management.Automation.Language.GetSafeValueVisitor:VisitArrayExpression(System.Management.Automation.Language.ArrayExpressionAst):System.Object:this (FullOpts)
; ============================================================
+0 (0.00%) : 32168.dasm - System.Dynamic.Utils.TypeUtils:IsIntegerOrBool(System.Type):ubyte (FullOpts)
@@ -9,22 +9,17 @@
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 8, 7 ) ref -> esi class-hnd <System.Type>
-; V01 loc0 [V01,T01] ( 3, 1.50) int -> eax
-; V02 tmp0 [V02,T02] ( 2, 1 ) int -> eax "Inline return value spill temp"
-;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V04 tmp2 [V04 ] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V06 tmp4 [V06 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.RuntimeType>
-;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref "CASTCLASS eval op1"
-;* V09 tmp7 [V09 ] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V11 tmp9 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.RuntimeType>
-;* V12 tmp10 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
-;* V13 tmp11 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
-;* V14 tmp12 [V14 ] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V15 tmp13 [V15 ] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V16 tmp14 [V16 ] ( 0, 0 ) int -> zero-ref "index expr"
+;* V01 loc0 [V01 ] ( 0, 0 ) int -> zero-ref
+; V02 tmp0 [V02,T01] ( 3, 1.50) int -> eax "Inline return value spill temp"
+;* V03 tmp1 [V03 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType>
+;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.RuntimeType>
+;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.RuntimeType>
+;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
+;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
+;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V11 tmp9 [V11 ] ( 0, 0 ) int -> zero-ref "index expr"
;
; Lcl frame size = 0
+11 (+2.60%) : 7406.dasm - FSharp.Compiler.CheckExpressions:ComputeAccessAndCompPath(FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Core.FSharpOption1[FSharp.Compiler.CheckExpressions+DeclKind],FSharp.Compiler.Text.Range,Microsoft.FSharp.Core.FSharpOption1[FSharp.Compiler.Syntax.SynAccess],Microsoft.FSharp.Core.FSharpOption1[FSharp.Compiler.TypedTree+Accessibility],FSharp.Compiler.TypedTree+ParentRef):System.Tuple2[FSharp.Compiler.TypedTree+Accessibility,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CompilationPath]] (FullOpts)
@@ -10,12 +10,12 @@
;
; V00 arg0 [V00,T02] ( 4, 3.50) ref -> esi class-hnd single-def <FSharp.Compiler.CheckExpressions+TcEnv>
; V01 arg1 [V01,T03] ( 4, 3.50) ref -> edx class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CheckExpressions+DeclKind]>
-; V02 arg2 [V02,T28] ( 1, 0.50) struct (16) [ebp+0x14] single-def <FSharp.Compiler.Text.Range>
-; V03 arg3 [V03,T12] ( 3, 2 ) ref -> edi class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess]>
-; V04 arg4 [V04,T26] ( 2, 1.50) ref -> [ebp+0x0C] class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Accessibility]>
-; V05 arg5 [V05,T13] ( 3, 2 ) ref -> ebx class-hnd single-def <FSharp.Compiler.TypedTree+ParentRef>
-; V06 loc0 [V06,T27] ( 2, 1.50) ref -> [ebp-0x14] class-hnd exact spill-single-def <FSharp.Compiler.TypedTree+CompilationPath>
-; V07 loc1 [V07,T11] ( 3, 2.50) ubyte -> [ebp-0x10] spill-single-def
+; V02 arg2 [V02,T26] ( 1, 0.50) struct (16) [ebp+0x14] single-def <FSharp.Compiler.Text.Range>
+; V03 arg3 [V03,T11] ( 3, 2 ) ref -> edi class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess]>
+; V04 arg4 [V04,T23] ( 2, 1.50) ref -> ebx class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Accessibility]>
+; V05 arg5 [V05,T24] ( 2, 1.50) ref -> [ebp+0x08] class-hnd single-def <FSharp.Compiler.TypedTree+ParentRef>
+; V06 loc0 [V06,T25] ( 2, 1.50) ref -> [ebp-0x14] class-hnd exact spill-single-def <FSharp.Compiler.TypedTree+CompilationPath>
+; V07 loc1 [V07,T10] ( 3, 2.50) ubyte -> [ebp-0x10] spill-single-def
;* V08 loc2 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CheckExpressions+DeclKind]>
;* V09 loc3 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <FSharp.Compiler.ErrorLogger+Error>
;* V10 loc4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <FSharp.Compiler.TypedTree+Accessibility>
@@ -23,35 +23,33 @@
;* V12 loc6 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess]>
;* V13 loc7 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;* V14 loc8 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
-; V15 tmp0 [V15,T16] ( 3, 2 ) int -> edx
-; V16 tmp1 [V16,T06] ( 6, 3 ) ref -> edi
-; V17 tmp2 [V17,T14] ( 3, 2 ) ref -> edi
+; V15 tmp0 [V15,T14] ( 3, 2 ) int -> edx
+; V16 tmp1 [V16,T05] ( 6, 3 ) ref -> ebx
+; V17 tmp2 [V17,T12] ( 3, 2 ) ref -> ebx
;* V18 tmp3 [V18 ] ( 0, 0 ) ref -> zero-ref single-def
;* V19 tmp4 [V19 ] ( 0, 0 ) ref -> zero-ref
-; V20 tmp5 [V20,T15] ( 3, 2 ) ref -> ebx
+; V20 tmp5 [V20,T13] ( 3, 2 ) ref -> edi
; V21 tmp6 [V21,T00] ( 4, 8 ) ref -> eax class-hnd exact single-def "NewObj constructor temp" <System.Tuple`2[FSharp.Compiler.TypedTree+Accessibility,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CompilationPath]]>
-; V22 tmp7 [V22,T25] ( 2, 2 ) int -> eax "fgMakeTemp is creating a new local variable"
-; V23 tmp8 [V23,T04] ( 5, 5 ) ref -> ecx class-hnd "spilling QMark2" <<unknown class>>
-; V24 tmp9 [V24,T01] ( 6, 6 ) ref -> [ebp-0x18] class-hnd exact spill-single-def "NewObj constructor temp" <FSharp.Compiler.ErrorLogger+Error>
-; V25 tmp10 [V25,T17] ( 2, 2 ) ref -> eax class-hnd single-def "Inlining Arg" <System.Tuple`2[int,System.String]>
-;* V26 tmp11 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon>
-; V27 tmp12 [V27,T18] ( 2, 2 ) ref -> edi class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+CompilationPath]>
-; V28 tmp13 [V28,T05] ( 4, 4 ) ref -> [ebp-0x1C] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+CompilationPath]>
-; V29 tmp14 [V29,T07] ( 3, 3 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.TypedTree+Accessibility>
-;* V30 tmp15 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <FSharp.Compiler.TypedTree+Accessibility>
+; V22 tmp7 [V22,T01] ( 6, 6 ) ref -> [ebp-0x18] class-hnd exact spill-single-def "NewObj constructor temp" <FSharp.Compiler.ErrorLogger+Error>
+; V23 tmp8 [V23,T15] ( 2, 2 ) ref -> eax class-hnd single-def "Inlining Arg" <System.Tuple`2[int,System.String]>
+;* V24 tmp9 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon>
+; V25 tmp10 [V25,T16] ( 2, 2 ) ref -> edi class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+CompilationPath]>
+; V26 tmp11 [V26,T04] ( 4, 4 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+CompilationPath]>
+; V27 tmp12 [V27,T06] ( 3, 3 ) ref -> eax class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.TypedTree+Accessibility>
+;* V28 tmp13 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <FSharp.Compiler.TypedTree+Accessibility>
+;* V29 tmp14 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+CompilationPath]>
+; V30 tmp15 [V30,T17] ( 2, 2 ) ref -> eax class-hnd exact single-def "Inlining Arg" <FSharp.Compiler.TypedTree+Accessibility>
;* V31 tmp16 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+CompilationPath]>
-; V32 tmp17 [V32,T19] ( 2, 2 ) ref -> eax class-hnd exact single-def "Inlining Arg" <FSharp.Compiler.TypedTree+Accessibility>
-;* V33 tmp18 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+CompilationPath]>
-; V34 tmp19 [V34,T20] ( 2, 2 ) ref -> edi class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
-; V35 tmp20 [V35,T08] ( 3, 3 ) ref -> eax class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.TypedTree+Accessibility>
-; V36 tmp21 [V36,T21] ( 2, 2 ) ref -> esi class-hnd exact single-def "Inlining Arg" <FSharp.Compiler.TypedTree+CompilationPath>
-; V37 tmp22 [V37,T09] ( 3, 3 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CompilationPath]>
-; V38 tmp23 [V38,T22] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
-; V39 tmp24 [V39,T23] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
-; V40 tmp25 [V40,T24] ( 2, 2 ) ref -> edx single-def "argument with side effect"
-; V41 rat0 [V41,T10] ( 3, 3 ) int -> edi "ReplaceWithLclVar is creating a new local variable"
+; V32 tmp17 [V32,T18] ( 2, 2 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
+; V33 tmp18 [V33,T07] ( 3, 3 ) ref -> eax class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.TypedTree+Accessibility>
+; V34 tmp19 [V34,T19] ( 2, 2 ) ref -> esi class-hnd exact single-def "Inlining Arg" <FSharp.Compiler.TypedTree+CompilationPath>
+; V35 tmp20 [V35,T08] ( 3, 3 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CompilationPath]>
+; V36 tmp21 [V36,T20] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
+; V37 tmp22 [V37,T21] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
+; V38 tmp23 [V38,T22] ( 2, 2 ) ref -> edx single-def "argument with side effect"
+; V39 rat0 [V39,T09] ( 3, 3 ) int -> edi "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 16
+; Lcl frame size = 12
G_M49966_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -59,13 +57,13 @@ G_M49966_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 16
+ sub esp, 12
vzeroupper
mov esi, ecx
; gcrRegs +[esi]
mov edi, gword ptr [ebp+0x10]
; gcrRegs +[edi]
- mov ebx, gword ptr [ebp+0x08]
+ mov ebx, gword ptr [ebp+0x0C]
; gcrRegs +[ebx]
;; size=20 bbWeight=1 PerfScore 7.75
G_M49966_IG02: ; bbWeight=1, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
@@ -77,33 +75,37 @@ G_M49966_IG02: ; bbWeight=1, gcrefRegs=000000CC {edx ebx esi edi}, byrefR
test edx, edx
jne SHORT G_M49966_IG04
;; size=10 bbWeight=1 PerfScore 4.25
-G_M49966_IG03: ; bbWeight=0.50, gcVars=08000000 {V06}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M49966_IG03: ; bbWeight=0.50, gcVars=02000000 {V06}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[ecx edx]
+ mov eax, gword ptr [ebp+0x08]
+ ; gcrRegs +[eax]
mov edx, 1
jmp SHORT G_M49966_IG05
- ;; size=7 bbWeight=0.50 PerfScore 1.12
+ ;; size=10 bbWeight=0.50 PerfScore 1.62
G_M49966_IG04: ; bbWeight=0.50, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs +[edx]
+ ; gcrRegs -[eax] +[edx]
mov ecx, gword ptr [edx+0x04]
; gcrRegs +[ecx]
call [FSharp.Compiler.CheckExpressions+DeclKind:IsModuleOrMemberOrExtensionBinding(FSharp.Compiler.CheckExpressions+DeclKind):ubyte]
; gcrRegs -[ecx edx]
mov edx, eax
- ;; size=11 bbWeight=0.50 PerfScore 2.62
-G_M49966_IG05: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov eax, gword ptr [ebp+0x08]
+ ; gcrRegs +[eax]
+ ;; size=14 bbWeight=0.50 PerfScore 3.12
+G_M49966_IG05: ; bbWeight=1, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
movzx edx, dl
mov dword ptr [ebp-0x10], edx
test edi, edi
je SHORT G_M49966_IG07
;; size=10 bbWeight=1 PerfScore 2.50
-G_M49966_IG06: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M49966_IG06: ; bbWeight=0.50, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
test edx, edx
jne SHORT G_M49966_IG09
+ mov gword ptr [ebp+0x08], eax
mov ecx, 0xD1FFAB1E ; FSharp.Compiler.ErrorLogger+Error
call CORINFO_HELP_NEWSFAST
- ; gcrRegs +[eax]
mov gword ptr [ebp-0x18], eax
- ; GC ptr vars +{V24}
+ ; GC ptr vars +{V22}
call [FSComp.SR:tcMultipleVisibilityAttributesWithLet():System.Tuple`2[int,System.String]]
mov ecx, gword ptr [ebp-0x18]
; gcrRegs +[ecx]
@@ -122,182 +124,187 @@ G_M49966_IG06: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
; gcrRegs +[ecx]
mov edx, gword ptr [ebp-0x18]
; gcrRegs +[edx]
- ; GC ptr vars -{V24}
+ ; GC ptr vars -{V22}
call [<unknown method>]
; gcrRegs -[eax ecx edx]
- mov edx, dword ptr [ebp-0x10]
- ;; size=78 bbWeight=0.50 PerfScore 12.12
-G_M49966_IG07: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov eax, gword ptr [ebp+0x0C]
+ mov eax, gword ptr [ebp+0x08]
; gcrRegs +[eax]
- test eax, eax
+ mov edx, dword ptr [ebp-0x10]
+ ;; size=84 bbWeight=0.50 PerfScore 13.12
+G_M49966_IG07: ; bbWeight=1, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ test ebx, ebx
je SHORT G_M49966_IG10
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=4 bbWeight=1 PerfScore 1.25
G_M49966_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[edi]
; GC ptr vars -{V06}
- mov edi, gword ptr [eax+0x04]
- ; gcrRegs +[edi]
- jmp SHORT G_M49966_IG14
+ mov ebx, gword ptr [ebx+0x04]
+ jmp SHORT G_M49966_IG15
;; size=5 bbWeight=0.50 PerfScore 2.00
-G_M49966_IG09: ; bbWeight=0.25, gcVars=08000000 {V06}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax]
- ; GC ptr vars +{V06 V27}
+G_M49966_IG09: ; bbWeight=0.25, gcVars=02000000 {V06}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs +[edi]
+ ; GC ptr vars +{V06 V25}
mov edx, dword ptr [ebp-0x10]
jmp SHORT G_M49966_IG07
;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M49966_IG10: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M49966_IG10: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[ebx]
test edi, edi
- je SHORT G_M49966_IG11
- mov eax, gword ptr [edi+0x04]
- ; gcrRegs +[eax]
- mov edi, dword ptr [eax+0x04]
+ je SHORT G_M49966_IG12
+ mov ebx, gword ptr [edi+0x04]
+ ; gcrRegs +[ebx]
+ mov edi, dword ptr [ebx+0x04]
; gcrRegs -[edi]
cmp edi, 2
- ja SHORT G_M49966_IG11
- lea eax, [@RWD00]
+ ja SHORT G_M49966_IG12
+ mov gword ptr [ebp+0x08], eax
+ lea ebx, [@RWD00]
+ ; gcrRegs -[ebx]
+ mov ebx, dword ptr [ebx+4*edi]
+ lea eax, G_M49966_IG02
; gcrRegs -[eax]
- mov eax, dword ptr [eax+4*edi]
- lea ecx, G_M49966_IG02
- add eax, ecx
- jmp eax
- ;; size=34 bbWeight=0.50 PerfScore 6.12
-G_M49966_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V06 V27}
- mov edi, gword ptr [D1FFAB1EH] ; static handle
- ; gcrRegs +[edi]
- jmp SHORT G_M49966_IG14
+ add ebx, eax
+ jmp ebx
+ ;; size=37 bbWeight=0.50 PerfScore 6.62
+G_M49966_IG11: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+ ; GC ptr vars -{V06 V25}
+ mov eax, gword ptr [ebp+0x08]
+ ; gcrRegs +[eax]
+ ;; size=3 bbWeight=0.25 PerfScore 0.25
+G_M49966_IG12: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
+ mov ebx, gword ptr [D1FFAB1EH] ; static handle
+ ; gcrRegs +[ebx]
+ jmp SHORT G_M49966_IG15
;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M49966_IG12: ; bbWeight=0.50, gcVars=08000000 {V06}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[edi]
- ; GC ptr vars +{V06 V27}
+G_M49966_IG13: ; bbWeight=0.50, gcVars=02000000 {V06}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[eax ebx]
+ ; GC ptr vars +{V06 V25}
mov edi, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[edi]
mov ecx, 0xD1FFAB1E ; Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+CompilationPath]
call CORINFO_HELP_NEWSFAST
; gcrRegs +[eax]
- mov gword ptr [ebp-0x1C], eax
- ; GC ptr vars +{V28}
- lea edx, bword ptr [eax+0x04]
- ; byrRegs +[edx]
- mov ecx, gword ptr [ebp-0x14]
- ; gcrRegs +[ecx]
- ; GC ptr vars -{V06 V27}
- call CORINFO_HELP_ASSIGN_REF_ECX
- ; gcrRegs -[ecx]
- ; byrRegs -[edx]
- lea edx, bword ptr [eax+0x08]
- ; byrRegs +[edx]
- call CORINFO_HELP_ASSIGN_REF_EDI
- ; gcrRegs -[eax edi]
...
+5 (+2.79%) : 34117.dasm - System.Management.Automation.Interpreter.NewArrayInitInstruction`1[System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
@@ -8,25 +8,24 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T06] ( 5, 5 ) ref -> [ebp-0x10] this class-hnd single-def <System.Management.Automation.Interpreter.NewArrayInitInstruction`1[System.__Canon]>
-; V01 arg1 [V01,T02] ( 8, 17 ) ref -> esi class-hnd single-def <System.Management.Automation.Interpreter.InterpretedFrame>
-; V02 loc0 [V02,T07] ( 3, 6 ) ref -> [ebp-0x14] class-hnd exact spill-single-def <<unknown class>>
-; V03 loc1 [V03,T03] ( 6, 18 ) int -> ebx
+; V00 this [V00,T05] ( 4, 4 ) ref -> [ebp-0x1C] this class-hnd single-def <System.Management.Automation.Interpreter.NewArrayInitInstruction`1[System.__Canon]>
+; V01 arg1 [V01,T01] ( 8, 17 ) ref -> esi class-hnd single-def <System.Management.Automation.Interpreter.InterpretedFrame>
+; V02 loc0 [V02,T06] ( 3, 6 ) ref -> [ebp-0x20] class-hnd exact spill-single-def <<unknown class>>
+; V03 loc1 [V03,T02] ( 6, 18 ) int -> [ebp-0x10]
;* V04 tmp0 [V04 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V05 tmp1 [V05,T04] ( 3, 17 ) ref -> edx "CASTCLASS eval op1"
-; V06 tmp2 [V06,T09] ( 3, 5 ) int -> edi "fgMakeTemp is creating a new local variable"
-; V07 tmp3 [V07,T00] ( 5, 27 ) ref -> ecx class-hnd "spilling QMark2" <System.__Canon>
-; V08 tmp4 [V08,T05] ( 4, 16 ) int -> edx "Inline stloc first use temp"
-; V09 tmp5 [V09,T01] ( 3, 24 ) ref -> ecx class-hnd "impAppendStmt" <<unknown class>>
-; V10 tmp6 [V10,T14] ( 3, 3 ) int -> edx single-def "Inline stloc first use temp"
-; V11 tmp7 [V11,T12] ( 2, 4 ) ref -> ecx class-hnd single-def "impAppendStmt" <<unknown class>>
-; V12 tmp8 [V12,T13] ( 2, 4 ) int -> ecx "argument with side effect"
-; V13 cse0 [V13,T15] ( 3, 3 ) int -> ebx "CSE - moderate"
-; V14 rat0 [V14,T10] ( 3, 4.40) int -> ecx "Spilling to split statement for tree"
-; V15 rat1 [V15,T11] ( 3, 4 ) int -> ecx "runtime lookup"
-; V16 rat2 [V16,T08] ( 3, 5.60) int -> eax "fgMakeTemp is creating a new local variable"
+; V05 tmp1 [V05,T03] ( 4, 16 ) int -> edi "Inline stloc first use temp"
+; V06 tmp2 [V06,T00] ( 3, 24 ) ref -> [ebp-0x24] class-hnd spill-single-def "impAppendStmt" <<unknown class>>
+; V07 tmp3 [V07,T13] ( 3, 3 ) int -> edx single-def "Inline stloc first use temp"
+; V08 tmp4 [V08,T11] ( 2, 4 ) ref -> ecx class-hnd single-def "impAppendStmt" <<unknown class>>
+; V09 tmp5 [V09,T12] ( 2, 4 ) int -> ecx "argument with side effect"
+; V10 tmp6 [V10,T04] ( 2, 16 ) int -> ebx "argument with side effect"
+; V11 cse0 [V11,T14] ( 3, 3 ) int -> [ebp-0x14] spill-single-def "CSE - moderate"
+; V12 cse1 [V12,T07] ( 3, 6 ) int -> [ebp-0x18] spill-single-def "CSE - moderate"
+; V13 rat0 [V13,T09] ( 3, 4.40) int -> ecx "Spilling to split statement for tree"
+; V14 rat1 [V14,T10] ( 3, 4 ) int -> ecx "runtime lookup"
+; V15 rat2 [V15,T08] ( 3, 5.60) int -> eax "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 24
G_M52320_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -34,22 +33,24 @@ G_M52320_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 8
- mov gword ptr [ebp-0x10], ecx
+ sub esp, 24
+ mov gword ptr [ebp-0x1C], ecx
; GC ptr vars +{V00}
mov esi, edx
; gcrRegs +[esi]
;; size=14 bbWeight=1 PerfScore 5.75
-G_M52320_IG02: ; bbWeight=1, gcVars=00000040 {V00}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- mov edi, gword ptr [ebp-0x10]
+G_M52320_IG02: ; bbWeight=1, gcVars=00000020 {V00}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ mov edi, gword ptr [ebp-0x1C]
; gcrRegs +[edi]
- mov ecx, dword ptr [edi]
+ mov ebx, dword ptr [edi]
+ mov dword ptr [ebp-0x18], ebx
+ mov ecx, ebx
mov edx, dword ptr [ecx+0x24]
mov edx, dword ptr [edx]
mov eax, dword ptr [edx+0x08]
test eax, eax
je SHORT G_M52320_IG04
- ;; size=17 bbWeight=1 PerfScore 10.25
+ ;; size=22 bbWeight=1 PerfScore 11.50
G_M52320_IG03: ; bbWeight=0.80, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edi]
mov ecx, eax
@@ -61,82 +62,73 @@ G_M52320_IG04: ; bbWeight=0.20, gcrefRegs=00000040 {esi}, byrefRegs=00000
mov ecx, eax
;; size=12 bbWeight=0.20 PerfScore 0.30
G_M52320_IG05: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov edi, gword ptr [ebp-0x10]
+ mov edi, gword ptr [ebp-0x1C]
; gcrRegs +[edi]
- mov ebx, dword ptr [edi+0x04]
- mov edx, ebx
+ mov eax, dword ptr [edi+0x04]
+ mov dword ptr [ebp-0x14], eax
+ mov edx, eax
call CORINFO_HELP_NEWARR_1_OBJ
; gcrRegs -[edi] +[eax]
- mov gword ptr [ebp-0x14], eax
+ mov gword ptr [ebp-0x20], eax
; GC ptr vars +{V02}
- dec ebx
- js SHORT G_M52320_IG11
- ;; size=19 bbWeight=1 PerfScore 6.50
-G_M52320_IG06: ; bbWeight=0.50, gcVars=000000C0 {V00 V02}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+ mov edx, dword ptr [ebp-0x14]
+ dec edx
+ mov dword ptr [ebp-0x10], edx
+ test edx, edx
+ jl SHORT G_M52320_IG07
+ ;; size=30 bbWeight=1 PerfScore 9.75
+G_M52320_IG06: ; bbWeight=4, gcVars=00000060 {V00 V02}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax]
- mov eax, gword ptr [ebp-0x14]
- ; gcrRegs +[eax]
- ;; size=3 bbWeight=0.50 PerfScore 0.50
-G_M52320_IG07: ; bbWeight=4, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [esi+0x14]
; gcrRegs +[ecx]
- mov edx, dword ptr [esi+0x24]
- dec edx
- mov dword ptr [esi+0x24], edx
- cmp edx, dword ptr [ecx+0x04]
- jae SHORT G_M52320_IG14
- mov edx, gword ptr [ecx+4*edx+0x08]
- ; gcrRegs +[edx]
- mov ecx, edx
- test ecx, ecx
- je SHORT G_M52320_IG10
- ;; size=25 bbWeight=4 PerfScore 51.00
-G_M52320_IG08: ; bbWeight=1, gcrefRegs=00000047 {eax ecx edx esi}, byrefRegs=00000000 {}, byref, isz
- mov edi, gword ptr [ebp-0x10]
- ; gcrRegs +[edi]
- mov edi, dword ptr [edi]
- ; gcrRegs -[edi]
- mov edi, dword ptr [edi+0x24]
- mov edi, dword ptr [edi]
- mov edi, dword ptr [edi]
- cmp dword ptr [ecx], edi
- je SHORT G_M52320_IG10
- ;; size=16 bbWeight=1 PerfScore 13.00
-G_M52320_IG09: ; bbWeight=0.50, gcrefRegs=00000045 {eax edx esi}, byrefRegs=00000000 {}, byref
+ mov gword ptr [ebp-0x24], ecx
+ ; GC ptr vars +{V06}
+ mov edi, dword ptr [esi+0x24]
+ dec edi
+ mov dword ptr [esi+0x24], edi
+ mov ebx, dword ptr [ebx+0x24]
+ mov ebx, dword ptr [ebx]
+ mov ebx, dword ptr [ebx]
+ mov ecx, ebx
; gcrRegs -[ecx]
- mov ecx, edi
+ mov ebx, gword ptr [ebp-0x24]
+ ; gcrRegs +[ebx]
+ cmp edi, dword ptr [ebx+0x04]
+ jae SHORT G_M52320_IG09
+ mov edx, gword ptr [ebx+4*edi+0x08]
+ ; gcrRegs +[edx]
+ ; GC ptr vars -{V00 V06}
call CORINFO_HELP_CHKCASTANY
- ; gcrRegs -[edx]
- mov ecx, eax
- ; gcrRegs +[ecx]
- mov eax, gword ptr [ebp-0x14]
- ;; size=12 bbWeight=0.50 PerfScore 1.25
-G_M52320_IG10: ; bbWeight=4, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref, isz
- push ecx
+ ; gcrRegs -[edx ebx] +[eax]
+ push eax
; gcr arg push 0
- mov ecx, eax
- mov edx, ebx
+ mov edx, dword ptr [ebp-0x10]
+ mov ecx, gword ptr [ebp-0x20]
+ ; gcrRegs +[ecx]
call CORINFO_HELP_ARRADDR_ST
; gcrRegs -[eax ecx]
; gcr arg pop 1
- dec ebx
- jns SHORT G_M52320_IG13
- ;; size=13 bbWeight=4 PerfScore 15.00
-G_M52320_IG11: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ mov edi, dword ptr [ebp-0x10]
+ dec edi
+ mov dword ptr [ebp-0x10], edi
+ mov ebx, dword ptr [ebp-0x18]
+ jns SHORT G_M52320_IG06
+ ;; size=63 bbWeight=4 PerfScore 115.00
+G_M52320_IG07: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, gword ptr [esi+0x14]
; gcrRegs +[ecx]
mov edx, dword ptr [esi+0x24]
lea eax, [edx+0x01]
mov dword ptr [esi+0x24], eax
- push gword ptr [ebp-0x14]
+ push gword ptr [ebp-0x20]
; gcr arg push 0
- ; GC ptr vars -{V02}
+ ; GC ptr vars -{V02} +{V00}
call CORINFO_HELP_ARRADDR_ST
; gcrRegs -[ecx esi]
; gcr arg pop 1
mov eax, 1
;; size=25 bbWeight=1 PerfScore 7.75
-G_M52320_IG12: ; bbWeight=1, epilog, nogc, extend
+G_M52320_IG08: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -144,20 +136,11 @@ G_M52320_IG12: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret
;; size=8 bbWeight=1 PerfScore 3.50
-G_M52320_IG13: ; bbWeight=2, gcVars=000000C0 {V00 V02}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs +[esi]
- ; GC ptr vars +{V02 V07}
- mov eax, gword ptr [ebp-0x14]
- ; gcrRegs +[eax]
- jmp SHORT G_M52320_IG07
- ;; size=5 bbWeight=2 PerfScore 6.00
-G_M52320_IG14: ; bbWeight=0, gcVars=00000040 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[eax esi]
- ; GC ptr vars -{V02 V07}
+G_M52320_IG09: ; bbWeight=0, gcVars=00000020 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 179, prolog size 14, PerfScore 122.60, instruction count 72, allocated bytes for code 179 (MethodHash=1c78339f) for method System.Management.Automation.Interpreter.NewArrayInitInstruction`1[System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
+; Total bytes of code 184, prolog size 14, PerfScore 155.35, instruction count 71, allocated bytes for code 184 (MethodHash=1c78339f) for method System.Management.Automation.Interpreter.NewArrayInitInstruction`1[System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int: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 |
91 |
79 |
10 |
2 |
-1,239 |
+66 |
| benchmarks.run_pgo.windows.x86.checked.mch |
1,967 |
1,949 |
17 |
1 |
-15,320 |
+97 |
| benchmarks.run_tiered.windows.x86.checked.mch |
52 |
42 |
8 |
2 |
-749 |
+59 |
| coreclr_tests.run.windows.x86.checked.mch |
238 |
202 |
19 |
17 |
-3,159 |
+309 |
| libraries.crossgen2.windows.x86.checked.mch |
1,035 |
1,032 |
1 |
2 |
-29,761 |
+3 |
| libraries.pmi.windows.x86.checked.mch |
563 |
515 |
27 |
21 |
-8,722 |
+236 |
| libraries_tests.run.windows.x86.Release.mch |
1,048 |
976 |
52 |
20 |
-14,853 |
+1,094 |
| librariestestsnotieredcompilation.run.windows.x86.Release.mch |
740 |
690 |
29 |
21 |
-13,431 |
+396 |
| realworld.run.windows.x86.checked.mch |
150 |
140 |
2 |
8 |
-2,344 |
+16 |
|
5,884 |
5,625 |
165 |
94 |
-89,578 |
+2,276 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.windows.x86.checked.mch |
22,792 |
4 |
22,788 |
0 (0.00%) |
1,707 (6.97%) |
| benchmarks.run_pgo.windows.x86.checked.mch |
99,058 |
41,640 |
57,418 |
0 (0.00%) |
17,949 (15.34%) |
| benchmarks.run_tiered.windows.x86.checked.mch |
47,458 |
28,737 |
18,721 |
0 (0.00%) |
1,240 (2.55%) |
| coreclr_tests.run.windows.x86.checked.mch |
564,443 |
320,020 |
244,423 |
0 (0.00%) |
10,272 (1.79%) |
| libraries.crossgen2.windows.x86.checked.mch |
242,501 |
15 |
242,486 |
0 (0.00%) |
58 (0.02%) |
| libraries.pmi.windows.x86.checked.mch |
276,722 |
6 |
276,716 |
0 (0.00%) |
28,819 (9.43%) |
| libraries_tests.run.windows.x86.Release.mch |
593,218 |
424,879 |
168,339 |
0 (0.00%) |
33,882 (5.40%) |
| librariestestsnotieredcompilation.run.windows.x86.Release.mch |
288,229 |
21,909 |
266,320 |
0 (0.00%) |
28,180 (8.91%) |
| realworld.run.windows.x86.checked.mch |
31,259 |
3 |
31,256 |
0 (0.00%) |
4,731 (13.15%) |
|
2,165,680 |
837,213 |
1,328,467 |
0 (0.00%) |
126,838 (5.53%) |
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: 5980860 (overridden on cmd)
Total bytes of diff: 5979687 (overridden on cmd)
Total bytes of delta: -1173 (-0.02 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
15 : 12207.dasm (2.40 % of base)
12 : 6042.dasm (3.97 % of base)
6 : 12216.dasm (9.68 % of base)
6 : 14074.dasm (9.68 % of base)
6 : 23860.dasm (9.68 % of base)
6 : 24196.dasm (9.68 % of base)
6 : 14668.dasm (9.68 % of base)
6 : 16056.dasm (9.68 % of base)
2 : 12807.dasm (0.32 % of base)
1 : 2731.dasm (0.12 % of base)
Top file improvements (bytes):
-86 : 4084.dasm (-2.47 % of base)
-47 : 12149.dasm (-1.72 % of base)
-33 : 19896.dasm (-9.12 % of base)
-33 : 6195.dasm (-12.55 % of base)
-31 : 8078.dasm (-6.42 % of base)
-30 : 8107.dasm (-11.81 % of base)
-28 : 17440.dasm (-6.10 % of base)
-24 : 12976.dasm (-11.01 % of base)
-24 : 2635.dasm (-19.35 % of base)
-22 : 18692.dasm (-11.64 % of base)
-22 : 8355.dasm (-13.50 % of base)
-22 : 17650.dasm (-27.16 % of base)
-21 : 12822.dasm (-4.61 % of base)
-20 : 14507.dasm (-9.35 % of base)
-19 : 15575.dasm (-20.65 % of base)
-19 : 16565.dasm (-20.65 % of base)
-19 : 3558.dasm (-28.79 % of base)
-19 : 678.dasm (-32.76 % of base)
-18 : 511.dasm (-8.45 % of base)
-18 : 12004.dasm (-38.30 % of base)
59 total files with Code Size differences (49 improved, 10 regressed), 2 unchanged.
Top method regressions (bytes):
15 (2.40 % of base) : 12207.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
12 (3.97 % of base) : 6042.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]:<.cctor>b__4_0(System.Object):this (FullOpts)
6 (9.68 % of base) : 12216.dasm - PerfLabTests.CastingPerf:FooObjIsDescendant():this (FullOpts)
6 (9.68 % of base) : 24196.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (FullOpts)
6 (9.68 % of base) : 14074.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (FullOpts)
6 (9.68 % of base) : 14668.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (FullOpts)
6 (9.68 % of base) : 16056.dasm - PerfLabTests.CastingPerf:IntObj():this (FullOpts)
6 (9.68 % of base) : 23860.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (FullOpts)
2 (0.32 % of base) : 12807.dasm - System.Xml.Serialization.TempAssembly:LoadAssemblyByPath(System.Type,System.String):System.Reflection.Assembly (FullOpts)
1 (0.12 % of base) : 2731.dasm - ProtoBuf.Internal.TypeHelper`1[System.__Canon]:.cctor() (FullOpts)
Top method improvements (bytes):
-86 (-2.47 % of base) : 4084.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
-47 (-1.72 % of base) : 12149.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.__Canon,System.__Canon,System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
-33 (-9.12 % of base) : 19896.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (FullOpts)
-33 (-12.55 % of base) : 6195.dasm - System.Net.Http.Headers.HttpHeaders:AddValueToStoreValue[System.__Canon](System.__Canon,byref) (FullOpts)
-31 (-6.42 % of base) : 8078.dasm - Newtonsoft.Json.Utilities.ReflectionUtils:GetAttributes(System.Object,System.Type,ubyte):System.Attribute[] (FullOpts)
-30 (-11.81 % of base) : 8107.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (FullOpts)
-28 (-6.10 % of base) : 17440.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithAnnotationsGreen[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxAnnotation]):System.__Canon (FullOpts)
-24 (-19.35 % of base) : 2635.dasm - System.Threading.Tasks.TaskFactory`1+<>c__56`1[System.__Canon,System.__Canon]:<ContinueWhenAllImpl>b__56_0(System.Threading.Tasks.Task`1[System.__Canon],System.Object):System.__Canon:this (FullOpts)
-24 (-11.01 % of base) : 12976.dasm - System.Xml.Serialization.XmlSerializationWriterILGen:GenerateElement(System.Xml.Serialization.XmlMapping):System.String:this (FullOpts)
-22 (-11.64 % of base) : 18692.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-22 (-27.16 % of base) : 17650.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
-22 (-13.50 % of base) : 8355.dasm - System.Collections.Generic.List`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
-21 (-4.61 % of base) : 12822.dasm - System.Xml.Serialization.ContextAwareTables`1[System.__Canon]:GetOrCreateValue(System.Type,System.Func`2[System.__Canon,System.__Canon]):System.__Canon:this (FullOpts)
-20 (-9.35 % of base) : 14507.dasm - System.Collections.Generic.Dictionary`2[int,System.__Canon]:System.Collections.IDictionary.set_Item(System.Object,System.Object):this (FullOpts)
-19 (-20.65 % of base) : 16565.dasm - Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions:GetRequiredService[System.__Canon](System.IServiceProvider):System.__Canon (FullOpts)
-19 (-20.65 % of base) : 15575.dasm - Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions:GetService[System.__Canon](System.IServiceProvider):System.__Canon (FullOpts)
-19 (-32.76 % of base) : 678.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
-19 (-28.79 % of base) : 3558.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
-18 (-8.14 % of base) : 12270.dasm - System.Collections.Perf_Frozen`1[System.__Canon]:GetUniqueValues(int):System.__Canon[]:this (FullOpts)
-18 (-8.45 % of base) : 511.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (FullOpts)
Top method regressions (percentages):
6 (9.68 % of base) : 12216.dasm - PerfLabTests.CastingPerf:FooObjIsDescendant():this (FullOpts)
6 (9.68 % of base) : 24196.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (FullOpts)
6 (9.68 % of base) : 14074.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (FullOpts)
6 (9.68 % of base) : 14668.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (FullOpts)
6 (9.68 % of base) : 16056.dasm - PerfLabTests.CastingPerf:IntObj():this (FullOpts)
6 (9.68 % of base) : 23860.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (FullOpts)
12 (3.97 % of base) : 6042.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]:<.cctor>b__4_0(System.Object):this (FullOpts)
15 (2.40 % of base) : 12207.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
2 (0.32 % of base) : 12807.dasm - System.Xml.Serialization.TempAssembly:LoadAssemblyByPath(System.Type,System.String):System.Reflection.Assembly (FullOpts)
1 (0.12 % of base) : 2731.dasm - ProtoBuf.Internal.TypeHelper`1[System.__Canon]:.cctor() (FullOpts)
Top method improvements (percentages):
-14 (-41.18 % of base) : 7049.dasm - System.Collections.ContainsKeyTrue`2+<>c[System.__Canon,System.__Canon]:<Setup>b__10_1(System.__Canon):System.__Canon:this (FullOpts)
-16 (-39.02 % of base) : 3752.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
-18 (-38.30 % of base) : 12004.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (FullOpts)
-19 (-32.76 % of base) : 678.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
-14 (-29.79 % of base) : 1476.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
-19 (-28.79 % of base) : 3558.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
-22 (-27.16 % of base) : 17650.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
-17 (-22.67 % of base) : 16892.dasm - Newtonsoft.Json.JsonConvert:DeserializeObject[System.__Canon](System.String,Newtonsoft.Json.JsonSerializerSettings):System.__Canon (FullOpts)
-17 (-21.79 % of base) : 7769.dasm - Sigil.NonGeneric.Emit:CreateDelegate[System.__Canon](byref,int):System.__Canon:this (FullOpts)
-12 (-21.43 % of base) : 20615.dasm - System.Xml.Base64Decoder:SetNextOutputBuffer(System.Array,int,int):this (FullOpts)
-19 (-20.65 % of base) : 16565.dasm - Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions:GetRequiredService[System.__Canon](System.IServiceProvider):System.__Canon (FullOpts)
-19 (-20.65 % of base) : 15575.dasm - Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions:GetService[System.__Canon](System.IServiceProvider):System.__Canon (FullOpts)
-24 (-19.35 % of base) : 2635.dasm - System.Threading.Tasks.TaskFactory`1+<>c__56`1[System.__Canon,System.__Canon]:<ContinueWhenAllImpl>b__56_0(System.Threading.Tasks.Task`1[System.__Canon],System.Object):System.__Canon:this (FullOpts)
-12 (-15.38 % of base) : 13610.dasm - System.Text.Json.Serialization.Converters.DictionaryOfTKeyTValueConverter`3[System.__Canon,int,System.__Canon]:Add(int,byref,System.Text.Json.JsonSerializerOptions,byref):this (FullOpts)
-14 (-15.22 % of base) : 9002.dasm - System.Text.Json.Serialization.Converters.ListOfTConverter`2[System.__Canon,System.__Canon]:Add(byref,byref):this (FullOpts)
-15 (-14.85 % of base) : 5225.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (FullOpts)
-10 (-14.71 % of base) : 15625.dasm - MicroBenchmarks.Serializers.Json_FromStream`1[System.__Canon]:DataContractJsonSerializer_():System.__Canon:this (FullOpts)
-10 (-14.71 % of base) : 6901.dasm - MicroBenchmarks.Serializers.Xml_FromStream`1[System.__Canon]:DataContractSerializer_():System.__Canon:this (FullOpts)
-10 (-14.71 % of base) : 13524.dasm - MicroBenchmarks.Serializers.Xml_FromStream`1[System.__Canon]:XmlSerializer_():System.__Canon:this (FullOpts)
-22 (-13.50 % of base) : 8355.dasm - System.Collections.Generic.List`1[System.__Canon]:System.Collections.IList.Add(System.Object):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: 27314129 (overridden on cmd)
Total bytes of diff: 27298906 (overridden on cmd)
Total bytes of delta: -15223 (-0.06 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
28 : 75828.dasm (1.63 % of base)
14 : 66532.dasm (10.61 % of base)
11 : 34697.dasm (1.75 % of base)
6 : 30788.dasm (9.68 % of base)
6 : 45613.dasm (9.68 % of base)
6 : 110521.dasm (9.68 % of base)
6 : 113462.dasm (9.68 % of base)
6 : 58362.dasm (9.68 % of base)
6 : 50330.dasm (9.68 % of base)
1 : 110930.dasm (0.31 % of base)
1 : 41037.dasm (0.31 % of base)
1 : 90196.dasm (0.31 % of base)
1 : 100799.dasm (0.31 % of base)
1 : 86225.dasm (0.31 % of base)
1 : 95737.dasm (0.31 % of base)
1 : 104717.dasm (0.31 % of base)
1 : 28628.dasm (0.31 % of base)
Top file improvements (bytes):
-128 : 79777.dasm (-4.46 % of base)
-89 : 19526.dasm (-2.47 % of base)
-48 : 83738.dasm (-5.01 % of base)
-47 : 31492.dasm (-1.69 % of base)
-46 : 75830.dasm (-3.07 % of base)
-46 : 2323.dasm (-17.23 % of base)
-33 : 76000.dasm (-8.87 % of base)
-31 : 80596.dasm (-1.21 % of base)
-28 : 69547.dasm (-6.05 % of base)
-26 : 19722.dasm (-18.44 % of base)
-25 : 53318.dasm (-4.20 % of base)
-25 : 108022.dasm (-4.66 % of base)
-19 : 101281.dasm (-3.18 % of base)
-19 : 27521.dasm (-3.18 % of base)
-19 : 52085.dasm (-3.18 % of base)
-19 : 87130.dasm (-3.18 % of base)
-19 : 100513.dasm (-3.18 % of base)
-19 : 50806.dasm (-3.18 % of base)
-19 : 9124.dasm (-32.76 % of base)
-19 : 54266.dasm (-3.18 % of base)
52 total files with Code Size differences (35 improved, 17 regressed), 1 unchanged.
Top method regressions (bytes):
28 (1.63 % of base) : 75828.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:DeriveUseSiteInfoFromType(byref,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int):ubyte:this (Tier1)
14 (10.61 % of base) : 66532.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
11 (1.75 % of base) : 34697.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (Tier0-FullOpts)
6 (9.68 % of base) : 30788.dasm - PerfLabTests.CastingPerf:FooObjIsDescendant():this (Tier0-FullOpts)
6 (9.68 % of base) : 113462.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier0-FullOpts)
6 (9.68 % of base) : 45613.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier0-FullOpts)
6 (9.68 % of base) : 50330.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier0-FullOpts)
6 (9.68 % of base) : 58362.dasm - PerfLabTests.CastingPerf:IntObj():this (Tier0-FullOpts)
6 (9.68 % of base) : 110521.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier0-FullOpts)
1 (0.31 % of base) : 110930.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
1 (0.31 % of base) : 41037.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
1 (0.31 % of base) : 90196.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
1 (0.31 % of base) : 100799.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
1 (0.31 % of base) : 86225.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
1 (0.31 % of base) : 95737.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
1 (0.31 % of base) : 104717.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
1 (0.31 % of base) : 28628.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
Top method improvements (bytes):
-128 (-4.46 % of base) : 79777.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
-89 (-2.47 % of base) : 19526.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier0-FullOpts)
-48 (-5.01 % of base) : 83738.dasm - Microsoft.CodeAnalysis.CSharp.LocalBinderFactory:VisitLocalDeclarationStatement(Microsoft.CodeAnalysis.CSharp.Syntax.LocalDeclarationStatementSyntax):this (Tier0-FullOpts)
-47 (-1.69 % of base) : 31492.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.__Canon,System.__Canon,System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier0-FullOpts)
-46 (-3.07 % of base) : 75830.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:DeriveUseSiteInfoFromType(byref,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):ubyte:this (Tier1)
-46 (-17.23 % of base) : 2323.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
-33 (-8.87 % of base) : 76000.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (Tier0-FullOpts)
-31 (-1.21 % of base) : 80596.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeConversionNodeCore(Microsoft.CodeAnalysis.CSharp.BoundConversion,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,ubyte,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
-28 (-6.05 % of base) : 69547.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithAnnotationsGreen[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxAnnotation]):System.__Canon (Tier0-FullOpts)
-26 (-18.44 % of base) : 19722.dasm - Microsoft.Extensions.Options.OptionsMonitor`1[System.__Canon]:add__onChange(System.Action`2[System.__Canon,System.__Canon]):this (Tier0-FullOpts)
-25 (-4.20 % of base) : 53318.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
-25 (-4.66 % of base) : 108022.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
-19 (-32.76 % of base) : 9124.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-19 (-3.18 % of base) : 101281.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
-19 (-3.18 % of base) : 27521.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
-19 (-3.18 % of base) : 52085.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
-19 (-3.18 % of base) : 87130.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
-19 (-3.18 % of base) : 100513.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
-19 (-3.18 % of base) : 50806.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
-19 (-3.18 % of base) : 54266.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
Top method regressions (percentages):
14 (10.61 % of base) : 66532.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
6 (9.68 % of base) : 30788.dasm - PerfLabTests.CastingPerf:FooObjIsDescendant():this (Tier0-FullOpts)
6 (9.68 % of base) : 113462.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier0-FullOpts)
6 (9.68 % of base) : 45613.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier0-FullOpts)
6 (9.68 % of base) : 50330.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier0-FullOpts)
6 (9.68 % of base) : 58362.dasm - PerfLabTests.CastingPerf:IntObj():this (Tier0-FullOpts)
6 (9.68 % of base) : 110521.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier0-FullOpts)
11 (1.75 % of base) : 34697.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (Tier0-FullOpts)
28 (1.63 % of base) : 75828.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:DeriveUseSiteInfoFromType(byref,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int):ubyte:this (Tier1)
1 (0.31 % of base) : 110930.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
1 (0.31 % of base) : 41037.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
1 (0.31 % of base) : 90196.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
1 (0.31 % of base) : 86225.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
1 (0.31 % of base) : 95737.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
1 (0.31 % of base) : 104717.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
1 (0.31 % of base) : 28628.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
1 (0.31 % of base) : 100799.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
Top method improvements (percentages):
-19 (-32.76 % of base) : 9124.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-17 (-21.79 % of base) : 49257.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
-26 (-18.44 % of base) : 19722.dasm - Microsoft.Extensions.Options.OptionsMonitor`1[System.__Canon]:add__onChange(System.Action`2[System.__Canon,System.__Canon]):this (Tier0-FullOpts)
-46 (-17.23 % of base) : 2323.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
-15 (-15.15 % of base) : 49219.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (Tier1)
-12 (-12.77 % of base) : 46464.dasm - System.Xml.Linq.XDocument:GetFirstNode[System.__Canon]():System.__Canon:this (Tier0-FullOpts)
-18 (-11.46 % of base) : 83889.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-10 (-10.64 % of base) : 84774.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
-33 (-8.87 % of base) : 76000.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (Tier0-FullOpts)
-12 (-8.70 % of base) : 84995.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-14 (-7.07 % of base) : 21285.dasm - ProtoBuf.ProtoReader+State:DeserializeRootImpl[System.__Canon](System.__Canon):System.__Canon:this (FullOpts)
-8 (-6.11 % of base) : 83619.dasm - Microsoft.CodeAnalysis.SyntaxNode:FirstAncestorOrSelf[System.__Canon](System.Func`2[System.__Canon,ubyte],ubyte):System.__Canon:this (Tier0-FullOpts)
-28 (-6.05 % of base) : 69547.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithAnnotationsGreen[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxAnnotation]):System.__Canon (Tier0-FullOpts)
-14 (-5.98 % of base) : 29353.dasm - System.Linq.Enumerable+<CastIterator>d__66`1[System.__Canon]:MoveNext():ubyte:this (Tier0-FullOpts)
-48 (-5.01 % of base) : 83738.dasm - Microsoft.CodeAnalysis.CSharp.LocalBinderFactory:VisitLocalDeclarationStatement(Microsoft.CodeAnalysis.CSharp.Syntax.LocalDeclarationStatementSyntax):this (Tier0-FullOpts)
-25 (-4.66 % of base) : 108022.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
-12 (-4.55 % of base) : 1207.dasm - System.Linq.EnumerableSorter`2[System.__Canon,int]:ComputeKeys(System.__Canon[],int):this (Tier0-FullOpts)
-128 (-4.46 % of base) : 79777.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
-25 (-4.20 % of base) : 53318.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
-10 (-3.73 % of base) : 936.dasm - System.Linq.Enumerable+<OfTypeIterator>d__64`1[System.__Canon]:MoveNext():ubyte:this (Tier0-FullOpts)
benchmarks.run_tiered.windows.x86.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 8634134 (overridden on cmd)
Total bytes of diff: 8633444 (overridden on cmd)
Total bytes of delta: -690 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
12 : 46831.dasm (3.97 % of base)
11 : 23725.dasm (1.80 % of base)
6 : 28206.dasm (9.68 % of base)
6 : 27513.dasm (9.68 % of base)
6 : 47631.dasm (9.68 % of base)
6 : 21314.dasm (9.68 % of base)
6 : 30801.dasm (9.68 % of base)
6 : 48289.dasm (9.68 % of base)
Top file improvements (bytes):
-86 : 4763.dasm (-2.47 % of base)
-47 : 23814.dasm (-1.72 % of base)
-33 : 39214.dasm (-9.12 % of base)
-31 : 18630.dasm (-6.42 % of base)
-30 : 31959.dasm (-11.81 % of base)
-28 : 33818.dasm (-6.10 % of base)
-26 : 9950.dasm (-18.44 % of base)
-21 : 25288.dasm (-4.34 % of base)
-19 : 21574.dasm (-28.79 % of base)
-19 : 7625.dasm (-32.76 % of base)
-18 : 1151.dasm (-8.45 % of base)
-18 : 24065.dasm (-38.30 % of base)
-18 : 42988.dasm (-11.46 % of base)
-17 : 14035.dasm (-21.79 % of base)
-17 : 46483.dasm (-21.79 % of base)
-17 : 8286.dasm (-3.33 % of base)
-16 : 19649.dasm (-39.02 % of base)
-16 : 18061.dasm (-13.33 % of base)
-15 : 13883.dasm (-14.85 % of base)
-14 : 5575.dasm (-7.07 % of base)
46 total files with Code Size differences (38 improved, 8 regressed), 2 unchanged.
Top method regressions (bytes):
12 (3.97 % of base) : 46831.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]:<.cctor>b__4_0(System.Object):this (Tier1)
11 (1.80 % of base) : 23725.dasm - System.Collections.Generic.SortedSet`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:.ctor(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Generic.IComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):this (Tier0-FullOpts)
6 (9.68 % of base) : 21314.dasm - PerfLabTests.CastingPerf:FooObjIsDescendant():this (Tier0-FullOpts)
6 (9.68 % of base) : 48289.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier0-FullOpts)
6 (9.68 % of base) : 27513.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier0-FullOpts)
6 (9.68 % of base) : 28206.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier0-FullOpts)
6 (9.68 % of base) : 30801.dasm - PerfLabTests.CastingPerf:IntObj():this (Tier0-FullOpts)
6 (9.68 % of base) : 47631.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier0-FullOpts)
Top method improvements (bytes):
-86 (-2.47 % of base) : 4763.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier0-FullOpts)
-47 (-1.72 % of base) : 23814.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.__Canon,System.__Canon,System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier0-FullOpts)
-33 (-9.12 % of base) : 39214.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (Tier0-FullOpts)
-31 (-6.42 % of base) : 18630.dasm - Newtonsoft.Json.Utilities.ReflectionUtils:GetAttributes(System.Object,System.Type,ubyte):System.Attribute[] (Tier1)
-30 (-11.81 % of base) : 31959.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (Tier1)
-28 (-6.10 % of base) : 33818.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithAnnotationsGreen[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxAnnotation]):System.__Canon (Tier0-FullOpts)
-26 (-18.44 % of base) : 9950.dasm - Microsoft.Extensions.Options.OptionsMonitor`1[System.__Canon]:add__onChange(System.Action`2[System.__Canon,System.__Canon]):this (Tier0-FullOpts)
-21 (-4.34 % of base) : 25288.dasm - System.Xml.Serialization.ContextAwareTables`1[System.__Canon]:GetOrCreateValue(System.Type,System.Func`2[System.__Canon,System.__Canon]):System.__Canon:this (Tier1)
-19 (-32.76 % of base) : 7625.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-19 (-28.79 % of base) : 21574.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
-18 (-11.46 % of base) : 42988.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-18 (-8.45 % of base) : 1151.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
-18 (-38.30 % of base) : 24065.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
-17 (-21.79 % of base) : 46483.dasm - Sigil.NonGeneric.Emit:CreateDelegate[System.__Canon](byref,int):System.__Canon:this (Tier1)
-17 (-3.33 % of base) : 8286.dasm - System.Collections.Generic.SortedDictionary`2[System.__Canon,System.__Canon]:.ctor(System.Collections.Generic.IDictionary`2[System.__Canon,System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (Tier0-FullOpts)
-17 (-21.79 % of base) : 14035.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
-16 (-39.02 % of base) : 19649.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
-16 (-13.33 % of base) : 18061.dasm - System.Text.Json.Reflection.ReflectionExtensions:GetUniqueCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
-15 (-14.85 % of base) : 13883.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (Tier1)
-14 (-7.07 % of base) : 5575.dasm - ProtoBuf.ProtoReader+State:DeserializeRootImpl[System.__Canon](System.__Canon):System.__Canon:this (FullOpts)
Top method regressions (percentages):
6 (9.68 % of base) : 21314.dasm - PerfLabTests.CastingPerf:FooObjIsDescendant():this (Tier0-FullOpts)
6 (9.68 % of base) : 48289.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier0-FullOpts)
6 (9.68 % of base) : 27513.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier0-FullOpts)
6 (9.68 % of base) : 28206.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier0-FullOpts)
6 (9.68 % of base) : 30801.dasm - PerfLabTests.CastingPerf:IntObj():this (Tier0-FullOpts)
6 (9.68 % of base) : 47631.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier0-FullOpts)
12 (3.97 % of base) : 46831.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]:<.cctor>b__4_0(System.Object):this (Tier1)
11 (1.80 % of base) : 23725.dasm - System.Collections.Generic.SortedSet`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:.ctor(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Generic.IComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):this (Tier0-FullOpts)
Top method improvements (percentages):
-16 (-39.02 % of base) : 19649.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
-18 (-38.30 % of base) : 24065.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
-19 (-32.76 % of base) : 7625.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-14 (-29.79 % of base) : 26353.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (Tier1)
-19 (-28.79 % of base) : 21574.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
-17 (-21.79 % of base) : 46483.dasm - Sigil.NonGeneric.Emit:CreateDelegate[System.__Canon](byref,int):System.__Canon:this (Tier1)
-17 (-21.79 % of base) : 14035.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
-26 (-18.44 % of base) : 9950.dasm - Microsoft.Extensions.Options.OptionsMonitor`1[System.__Canon]:add__onChange(System.Action`2[System.__Canon,System.__Canon]):this (Tier0-FullOpts)
-15 (-14.85 % of base) : 13883.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (Tier1)
-16 (-13.33 % of base) : 18061.dasm - System.Text.Json.Reflection.ReflectionExtensions:GetUniqueCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
-12 (-12.77 % of base) : 28140.dasm - System.Xml.Linq.XDocument:GetFirstNode[System.__Canon]():System.__Canon:this (Tier0-FullOpts)
-14 (-12.50 % of base) : 23823.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.__Canon,System.__Canon,System.__Canon]:<OnTryRead>g__ReadDictionaryKey|10_0(System.Text.Json.Serialization.JsonConverter`1[System.__Canon],byref,byref,System.Text.Json.JsonSerializerOptions):System.__Canon (Tier1)
-30 (-11.81 % of base) : 31959.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (Tier1)
-18 (-11.46 % of base) : 42988.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-10 (-10.87 % of base) : 40604.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
-12 (-10.00 % of base) : 15568.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
-10 (-9.43 % of base) : 26382.dasm - System.Linq.Expressions.ExpressionVisitor:VisitAndConvert[System.__Canon](System.__Canon,System.String):System.__Canon:this (Tier1)
-33 (-9.12 % of base) : 39214.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (Tier0-FullOpts)
-10 (-8.62 % of base) : 38095.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (Tier1)
-18 (-8.45 % of base) : 1151.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
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: 291128494 (overridden on cmd)
Total bytes of diff: 291125644 (overridden on cmd)
Total bytes of delta: -2850 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
46 : 2925.dasm (0.81 % of base)
46 : 2946.dasm (0.81 % of base)
34 : 182676.dasm (566.67 % of base)
21 : 242297.dasm (3.24 % of base)
21 : 495141.dasm (3.23 % of base)
18 : 454622.dasm (0.77 % of base)
16 : 455391.dasm (12.31 % of base)
14 : 165169.dasm (2.78 % of base)
14 : 164784.dasm (2.78 % of base)
14 : 167780.dasm (2.78 % of base)
13 : 461036.dasm (4.51 % of base)
12 : 449004.dasm (0.70 % of base)
11 : 280815.dasm (1.75 % of base)
11 : 542347.dasm (1.75 % of base)
9 : 568562.dasm (1.31 % of base)
5 : 301798.dasm (1.74 % of base)
2 : 301955.dasm (0.23 % of base)
1 : 421568.dasm (0.31 % of base)
1 : 439488.dasm (0.31 % of base)
Top file improvements (bytes):
-128 : 483384.dasm (-4.46 % of base)
-54 : 304552.dasm (-6.76 % of base)
-54 : 118.dasm (-6.85 % of base)
-48 : 449974.dasm (-5.21 % of base)
-46 : 483330.dasm (-3.13 % of base)
-44 : 172385.dasm (-18.80 % of base)
-44 : 172408.dasm (-18.80 % of base)
-43 : 165097.dasm (-29.25 % of base)
-42 : 454647.dasm (-3.64 % of base)
-38 : 167298.dasm (-2.81 % of base)
-33 : 188081.dasm (-9.12 % of base)
-33 : 233167.dasm (-1.55 % of base)
-33 : 304551.dasm (-4.66 % of base)
-33 : 116.dasm (-4.73 % of base)
-33 : 327.dasm (-4.67 % of base)
-33 : 483124.dasm (-1.55 % of base)
-33 : 304779.dasm (-4.60 % of base)
-33 : 448432.dasm (-8.87 % of base)
-32 : 228198.dasm (-21.33 % of base)
-31 : 189925.dasm (-6.03 % of base)
68 total files with Code Size differences (49 improved, 19 regressed), 17 unchanged.
Top method regressions (bytes):
46 (0.81 % of base) : 2925.dasm - Program:TestCase0003() (FullOpts)
46 (0.81 % of base) : 2946.dasm - Program:TestCase0003() (FullOpts)
34 (566.67 % of base) : 182676.dasm - T:TestEntryPoint():int (FullOpts)
21 (3.24 % of base) : 242297.dasm - AA`6[byte,ubyte,uint,uint,long,ubyte]:Static2(ulong,short,byref,byref):ushort[] (FullOpts)
21 (3.23 % of base) : 495141.dasm - AA`6[byte,ubyte,uint,uint,long,ubyte]:Static2(ulong,short,byref,byref):ushort[] (Tier0-FullOpts)
18 (0.77 % of base) : 454622.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1)
16 (12.31 % of base) : 455391.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
14 (2.78 % of base) : 165169.dasm - DisabledRuntimeMarshalling.PInvokeAssemblyMarshallingDisabled.PInvokes:<Varargs_NotSupported>g__AssertThrowsCorrectException|6_1(System.Action) (FullOpts)
14 (2.78 % of base) : 164784.dasm - DisabledRuntimeMarshalling.PInvokeAssemblyMarshallingDisabled.PInvokes:<Varargs_NotSupported>g__AssertThrowsCorrectException|6_1(System.Action) (FullOpts)
14 (2.78 % of base) : 167780.dasm - DisabledRuntimeMarshalling.PInvokeAssemblyMarshallingDisabled.PInvokes:<Varargs_NotSupported>g__AssertThrowsCorrectException|6_1(System.Action) (FullOpts)
13 (4.51 % of base) : 461036.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler+<>c:<.cctor>b__10_0(System.Object):this (Tier1)
12 (0.70 % of base) : 449004.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:DeriveUseSiteInfoFromType(byref,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int):ubyte:this (Tier1)
11 (1.75 % of base) : 280815.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
11 (1.75 % of base) : 542347.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (Tier0-FullOpts)
9 (1.31 % of base) : 568562.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
5 (1.74 % of base) : 301798.dasm - Microsoft.Build.Logging.LoggerDescription:CreateForwardingLogger():Microsoft.Build.Framework.IForwardingLogger:this (FullOpts)
2 (0.23 % of base) : 301955.dasm - Microsoft.Build.Execution.BuildManager+<>c__DisplayClass100_0:<IssueBuildRequestForBuildSubmission>g__IssueBuildSubmissionToSchedulerImpl|1(Microsoft.Build.Execution.BuildSubmission,ubyte):this (FullOpts)
1 (0.31 % of base) : 421568.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
1 (0.31 % of base) : 439488.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
Top method improvements (bytes):
-128 (-4.46 % of base) : 483384.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
-54 (-6.85 % of base) : 118.dasm - InterlockedCompareExchange1:PosTest2[System.__Canon]():ubyte:this (FullOpts)
-54 (-6.76 % of base) : 304552.dasm - InterlockedCompareExchange1:PosTest2[System.__Canon]():ubyte:this (Tier0-FullOpts)
-48 (-5.21 % of base) : 449974.dasm - Microsoft.CodeAnalysis.CSharp.LocalBinderFactory:VisitLocalDeclarationStatement(Microsoft.CodeAnalysis.CSharp.Syntax.LocalDeclarationStatementSyntax):this (Tier0-FullOpts)
-46 (-3.13 % of base) : 483330.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:DeriveUseSiteInfoFromType(byref,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):ubyte:this (Tier1)
-44 (-18.80 % of base) : 172408.dasm - MyCounter[System.__Canon]:Decrement[System.__Canon](int):this (FullOpts)
-44 (-18.80 % of base) : 172385.dasm - MyCounter`1[System.__Canon]:Decrement[System.__Canon](int):this (FullOpts)
-43 (-29.25 % of base) : 165097.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (FullOpts)
-42 (-3.64 % of base) : 454647.dasm - System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this (Tier1)
-38 (-2.81 % of base) : 167298.dasm - Microsoft.CSharp.RuntimeBinder.ComInterop.SplatInvokeBinder:Bind(System.Object[],System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.ParameterExpression],System.Linq.Expressions.LabelTarget):System.Linq.Expressions.Expression:this (FullOpts)
-33 (-4.73 % of base) : 116.dasm - InterlockedCompareExchange1:PosTest1[System.__Canon]():ubyte:this (FullOpts)
-33 (-4.66 % of base) : 304551.dasm - InterlockedCompareExchange1:PosTest1[System.__Canon]():ubyte:this (Tier0-FullOpts)
-33 (-4.67 % of base) : 327.dasm - InterlockedExchange1:PosTest1[System.__Canon]():ubyte:this (FullOpts)
-33 (-4.60 % of base) : 304779.dasm - InterlockedExchange1:PosTest1[System.__Canon]():ubyte:this (Tier0-FullOpts)
-33 (-1.55 % of base) : 233167.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:AddMemberToCandidateSet[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,ubyte,ubyte,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],ubyte,byref,ubyte,ubyte):this (FullOpts)
-33 (-1.55 % of base) : 483124.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:AddMemberToCandidateSet[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,ubyte,ubyte,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],ubyte,byref,ubyte,ubyte):this (Tier0-FullOpts)
-33 (-9.12 % of base) : 188081.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (FullOpts)
-33 (-8.87 % of base) : 448432.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (Tier0-FullOpts)
-32 (-21.33 % of base) : 228198.dasm - JitTest_castclass_ldlen_array_il.Test:Main():int (FullOpts)
-31 (-6.03 % of base) : 189925.dasm - Newtonsoft.Json.Utilities.ReflectionUtils:GetAttributes(System.Object,System.Type,ubyte):System.Attribute[] (FullOpts)
Top method regressions (percentages):
34 (566.67 % of base) : 182676.dasm - T:TestEntryPoint():int (FullOpts)
16 (12.31 % of base) : 455391.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
13 (4.51 % of base) : 461036.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler+<>c:<.cctor>b__10_0(System.Object):this (Tier1)
21 (3.24 % of base) : 242297.dasm - AA`6[byte,ubyte,uint,uint,long,ubyte]:Static2(ulong,short,byref,byref):ushort[] (FullOpts)
21 (3.23 % of base) : 495141.dasm - AA`6[byte,ubyte,uint,uint,long,ubyte]:Static2(ulong,short,byref,byref):ushort[] (Tier0-FullOpts)
14 (2.78 % of base) : 165169.dasm - DisabledRuntimeMarshalling.PInvokeAssemblyMarshallingDisabled.PInvokes:<Varargs_NotSupported>g__AssertThrowsCorrectException|6_1(System.Action) (FullOpts)
14 (2.78 % of base) : 164784.dasm - DisabledRuntimeMarshalling.PInvokeAssemblyMarshallingDisabled.PInvokes:<Varargs_NotSupported>g__AssertThrowsCorrectException|6_1(System.Action) (FullOpts)
14 (2.78 % of base) : 167780.dasm - DisabledRuntimeMarshalling.PInvokeAssemblyMarshallingDisabled.PInvokes:<Varargs_NotSupported>g__AssertThrowsCorrectException|6_1(System.Action) (FullOpts)
11 (1.75 % of base) : 280815.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
11 (1.75 % of base) : 542347.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (Tier0-FullOpts)
5 (1.74 % of base) : 301798.dasm - Microsoft.Build.Logging.LoggerDescription:CreateForwardingLogger():Microsoft.Build.Framework.IForwardingLogger:this (FullOpts)
9 (1.31 % of base) : 568562.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
46 (0.81 % of base) : 2925.dasm - Program:TestCase0003() (FullOpts)
46 (0.81 % of base) : 2946.dasm - Program:TestCase0003() (FullOpts)
18 (0.77 % of base) : 454622.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1)
12 (0.70 % of base) : 449004.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:DeriveUseSiteInfoFromType(byref,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int):ubyte:this (Tier1)
1 (0.31 % of base) : 421568.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
1 (0.31 % of base) : 439488.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
2 (0.23 % of base) : 301955.dasm - Microsoft.Build.Execution.BuildManager+<>c__DisplayClass100_0:<IssueBuildRequestForBuildSubmission>g__IssueBuildSubmissionToSchedulerImpl|1(Microsoft.Build.Execution.BuildSubmission,ubyte):this (FullOpts)
Top method improvements (percentages):
-19 (-32.76 % of base) : 305349.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-14 (-29.79 % of base) : 165957.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
-43 (-29.25 % of base) : 165097.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (FullOpts)
-22 (-27.16 % of base) : 185631.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
-26 (-26.26 % of base) : 234649.dasm - My:foo[System.__Canon](ubyte,System.Object):System.Object (FullOpts)
-10 (-25.64 % of base) : 204308.dasm - CastExpansionTests:CastToGeneric[System.__Canon](System.Object):System.Object:this (Tier1)
-14 (-25.45 % of base) : 300488.dasm - Program+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
-15 (-25.00 % of base) : 205532.dasm - Xunit.Assert:IsType[System.__Canon](System.Object):System.__Canon (FullOpts)
-19 (-25.00 % of base) : 145276.dasm - Xunit.Assert:Throws[System.__Canon](System.Action):System.__Canon (FullOpts)
-19 (-25.00 % of base) : 236496.dasm - Xunit.Assert:Throws[System.__Canon](System.Action):System.__Canon (FullOpts)
-19 (-23.46 % of base) : 164772.dasm - Xunit.Assert:Throws[System.__Canon](System.Func`1[System.Object]):System.__Canon (FullOpts)
-19 (-23.46 % of base) : 204301.dasm - Xunit.Assert:Throws[System.__Canon](System.Func`1[System.Object]):System.__Canon (Tier1)
-32 (-21.33 % of base) : 228198.dasm - JitTest_castclass_ldlen_array_il.Test:Main():int (FullOpts)
-10 (-21.28 % of base) : 240822.dasm - Program+<>c__5`1[System.__Canon]:<GetCustomAttributes>b__5_0(Program+CustomAttributeData):System.__Canon:this (FullOpts)
-18 (-19.15 % of base) : 280783.dasm - System.CommandLine.Binding.ArgumentConverter:GetValueOrDefault[System.__Canon](System.CommandLine.Binding.ArgumentConversionResult):System.__Canon (FullOpts)
-18 (-19.15 % of base) : 543945.dasm - System.CommandLine.Binding.ArgumentConverter:GetValueOrDefault[System.__Canon](System.CommandLine.Binding.ArgumentConversionResult):System.__Canon (Tier1)
-44 (-18.80 % of base) : 172408.dasm - MyCounter[System.__Canon]:Decrement[System.__Canon](int):this (FullOpts)
-44 (-18.80 % of base) : 172385.dasm - MyCounter`1[System.__Canon]:Decrement[System.__Canon](int):this (FullOpts)
-26 (-18.31 % of base) : 281197.dasm - ILCompiler.DependencyAnalysisFramework.DependencyAnalyzer`2[ILCompiler.DependencyAnalysisFramework.NoLogStrategy`1[System.__Canon],System.__Canon]:add_ComputeDependencyRoutine(System.Action`1[System.__Canon]):this (FullOpts)
-26 (-18.31 % of base) : 543085.dasm - ILCompiler.DependencyAnalysisFramework.DependencyAnalyzer`2[ILCompiler.DependencyAnalysisFramework.NoLogStrategy`1[System.__Canon],System.__Canon]:add_ComputeDependencyRoutine(System.Action`1[System.__Canon]):this (Tier0-FullOpts)
libraries.crossgen2.windows.x86.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 31699024 (overridden on cmd)
Total bytes of diff: 31669266 (overridden on cmd)
Total bytes of delta: -29758 (-0.09 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
3 : 61897.dasm (0.70 % of base)
Top file improvements (bytes):
-219 : 205234.dasm (-5.02 % of base)
-208 : 239025.dasm (-34.61 % of base)
-204 : 239029.dasm (-33.06 % of base)
-192 : 188865.dasm (-17.20 % of base)
-180 : 188864.dasm (-17.11 % of base)
-178 : 73188.dasm (-26.22 % of base)
-169 : 73760.dasm (-24.14 % of base)
-169 : 73761.dasm (-23.54 % of base)
-168 : 188862.dasm (-17.00 % of base)
-156 : 188860.dasm (-16.88 % of base)
-144 : 188858.dasm (-16.74 % of base)
-143 : 239027.dasm (-31.29 % of base)
-140 : 239020.dasm (-31.96 % of base)
-132 : 188856.dasm (-16.58 % of base)
-123 : 73911.dasm (-18.66 % of base)
-123 : 74655.dasm (-18.66 % of base)
-120 : 188854.dasm (-16.39 % of base)
-117 : 205293.dasm (-6.81 % of base)
-109 : 149678.dasm (-10.05 % of base)
-109 : 233583.dasm (-14.83 % of base)
84 total files with Code Size differences (83 improved, 1 regressed), 2 unchanged.
Top method regressions (bytes):
3 (0.70 % of base) : 61897.dasm - Microsoft.CodeAnalysis.CSharp.BoundNodeExtensions:<RewriteInterpolatedStringAddition>g__doRewrite|8_0[System.__Canon,System.__Canon,System.__Canon](Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,System.__Canon,System.Func`4[System.__Canon,int,System.__Canon,System.__Canon],System.Func`5[Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,System.__Canon,System.__Canon,System.__Canon,System.__Canon],byref):System.__Canon (FullOpts)
Top method improvements (bytes):
-219 (-5.02 % of base) : 205234.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
-208 (-34.61 % of base) : 239025.dasm - System.Linq.Expressions.Interpreter.ActionCallInstruction`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
-204 (-33.06 % of base) : 239029.dasm - System.Linq.Expressions.Interpreter.FuncCallInstruction`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
-192 (-17.20 % of base) : 188865.dasm - CommandLine.ParserResultExtensions:MapResult[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
-180 (-17.11 % of base) : 188864.dasm - CommandLine.ParserResultExtensions:MapResult[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
-178 (-26.22 % of base) : 73188.dasm - Microsoft.FSharp.Collections.SetTreeModule:rebalance[System.__Canon](Microsoft.FSharp.Collections.SetTree`1[System.__Canon],System.__Canon,Microsoft.FSharp.Collections.SetTree`1[System.__Canon]):Microsoft.FSharp.Collections.SetTree`1[System.__Canon] (FullOpts)
-169 (-24.14 % of base) : 73760.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2520[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
-169 (-23.54 % of base) : 73761.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2543-1[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
-168 (-17.00 % of base) : 188862.dasm - CommandLine.ParserResultExtensions:MapResult[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
-156 (-16.88 % of base) : 188860.dasm - CommandLine.ParserResultExtensions:MapResult[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
-144 (-16.74 % of base) : 188858.dasm - CommandLine.ParserResultExtensions:MapResult[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
-143 (-31.29 % of base) : 239027.dasm - System.Linq.Expressions.Interpreter.FuncCallInstruction`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
-140 (-31.96 % of base) : 239020.dasm - System.Linq.Expressions.Interpreter.ActionCallInstruction`3[System.__Canon,System.__Canon,System.__Canon]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
-132 (-16.58 % of base) : 188856.dasm - CommandLine.ParserResultExtensions:MapResult[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
-123 (-18.66 % of base) : 74655.dasm - Microsoft.FSharp.Collections.MapTreeModule:rebalance[int,System.__Canon](Microsoft.FSharp.Collections.MapTree`2[int,System.__Canon],int,System.__Canon,Microsoft.FSharp.Collections.MapTree`2[int,System.__Canon]):Microsoft.FSharp.Collections.MapTree`2[int,System.__Canon] (FullOpts)
-123 (-18.66 % of base) : 73911.dasm - Microsoft.FSharp.Collections.MapTreeModule:rebalance[System.__Canon,System.__Canon](Microsoft.FSharp.Collections.MapTree`2[System.__Canon,System.__Canon],System.__Canon,System.__Canon,Microsoft.FSharp.Collections.MapTree`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Collections.MapTree`2[System.__Canon,System.__Canon] (FullOpts)
-120 (-16.39 % of base) : 188854.dasm - CommandLine.ParserResultExtensions:MapResult[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
-117 (-6.81 % of base) : 205293.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.__Canon,System.__Canon,System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
-109 (-10.05 % of base) : 149678.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
-109 (-14.83 % of base) : 233583.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
Top method regressions (percentages):
3 (0.70 % of base) : 61897.dasm - Microsoft.CodeAnalysis.CSharp.BoundNodeExtensions:<RewriteInterpolatedStringAddition>g__doRewrite|8_0[System.__Canon,System.__Canon,System.__Canon](Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,System.__Canon,System.Func`4[System.__Canon,int,System.__Canon,System.__Canon],System.Func`5[Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,System.__Canon,System.__Canon,System.__Canon,System.__Canon],byref):System.__Canon (FullOpts)
Top method improvements (percentages):
-34 (-58.62 % of base) : 188346.dasm - CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]:<Cast>b__0():System.__Canon:this (FullOpts)
-74 (-54.41 % of base) : 196726.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.__Canon]:System.Collections.IDictionary.Add(System.Object,System.Object):this (FullOpts)
-74 (-54.41 % of base) : 196731.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.__Canon]:System.Collections.IDictionary.set_Item(System.Object,System.Object):this (FullOpts)
-74 (-54.41 % of base) : 196871.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.__Canon]:System.Collections.IDictionary.Add(System.Object,System.Object):this (FullOpts)
-74 (-54.41 % of base) : 196876.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.__Canon]:System.Collections.IDictionary.set_Item(System.Object,System.Object):this (FullOpts)
-84 (-53.50 % of base) : 205306.dasm - System.Text.Json.Serialization.Converters.ImmutableDictionaryOfTKeyTValueConverter`3[System.__Canon,System.__Canon,System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
-84 (-53.50 % of base) : 205276.dasm - System.Text.Json.Serialization.Converters.ImmutableEnumerableOfTConverter`2[System.__Canon,System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
-30 (-52.63 % of base) : 202125.dasm - System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]:<GetMetadataViewProvider>b__1_0(System.Collections.Generic.IDictionary`2[System.String,System.Object]):System.__Canon:this (FullOpts)
-30 (-52.63 % of base) : 171495.dasm - System.Linq.ParallelQuery`1+<>c__1`1[System.__Canon,System.__Canon]:<Cast>b__1_0(System.__Canon):System.__Canon:this (FullOpts)
-73 (-51.77 % of base) : 121548.dasm - Microsoft.CodeAnalysis.Emit.PEModuleBuilder`9[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Translate(Microsoft.CodeAnalysis.Symbols.ITypeSymbolInternal,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.Cci.ITypeReference:this (FullOpts)
-73 (-51.77 % of base) : 87611.dasm - Microsoft.CodeAnalysis.Emit.PEModuleBuilder`9[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Translate(Microsoft.CodeAnalysis.Symbols.ITypeSymbolInternal,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.Cci.ITypeReference:this (FullOpts)
-45 (-50.00 % of base) : 173971.dasm - Microsoft.Extensions.Hosting.Internal.ConfigureContainerAdapter`1[System.__Canon]:ConfigureContainer(Microsoft.Extensions.Hosting.HostBuilderContext,System.Object):this (FullOpts)
-40 (-50.00 % of base) : 66653.dasm - System.Data.SortExpressionBuilder`1+<>c__DisplayClass10_0`1[System.__Canon,System.__Canon]:<CloneCast>b__0(System.__Canon):System.Object:this (FullOpts)
-40 (-50.00 % of base) : 228744.dasm - System.Diagnostics.DiagnosticSourceEventSource+TransformSpec+PropertySpec+PropertyFetch+RefTypedFetchProperty`2[System.__Canon,System.__Canon]:Fetch(System.Object):System.Object:this (FullOpts)
-75 (-50.00 % of base) : 205312.dasm - System.Text.Json.Serialization.Converters.SmallObjectWithParameterizedConstructorConverter`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:CreateObject(byref):System.Object:this (FullOpts)
-45 (-50.00 % of base) : 205878.dasm - System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1+<>c__DisplayClass10_0[System.__Canon]:<SetSetter>b__0(System.Object,System.Object):this (FullOpts)
-45 (-50.00 % of base) : 205880.dasm - System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1+<>c__DisplayClass15_0[System.__Canon]:<SetShouldSerialize>b__0(System.Object,System.Object):ubyte:this (FullOpts)
-43 (-50.00 % of base) : 229885.dasm - System.Threading.Tasks.Dataflow.ActionBlock`1+<>c[System.__Canon]:<ProcessMessageWithTask>b__8_0(System.Threading.Tasks.Task,System.Object):this (FullOpts)
-44 (-47.83 % of base) : 174046.dasm - Microsoft.Extensions.Hosting.HostApplicationBuilder+<>c__DisplayClass30_0`1[System.__Canon]:<ConfigureContainer>b__1(System.Object):this (FullOpts)
-30 (-46.15 % of base) : 241509.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.__Canon,System.__Canon]:get_Items():System.Collections.Generic.List`1[System.__Canon]: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: 36396395 (overridden on cmd)
Total bytes of diff: 36387909 (overridden on cmd)
Total bytes of delta: -8486 (-0.02 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
52 : 99937.dasm (3.33 % of base)
30 : 93098.dasm (2.16 % of base)
26 : 197944.dasm (15.29 % of base)
20 : 69159.dasm (7.91 % of base)
14 : 197941.dasm (6.60 % of base)
11 : 226828.dasm (1.75 % of base)
8 : 118546.dasm (0.38 % of base)
8 : 156501.dasm (0.35 % of base)
8 : 156511.dasm (1.38 % of base)
7 : 211184.dasm (1.45 % of base)
5 : 208083.dasm (1.74 % of base)
5 : 212165.dasm (6.94 % of base)
5 : 197947.dasm (3.82 % of base)
5 : 212163.dasm (6.94 % of base)
4 : 234547.dasm (5.13 % of base)
4 : 236134.dasm (5.13 % of base)
4 : 258539.dasm (1.04 % of base)
3 : 193733.dasm (2.56 % of base)
3 : 212152.dasm (3.23 % of base)
2 : 229326.dasm (2.60 % of base)
Top file improvements (bytes):
-253 : 219452.dasm (-20.91 % of base)
-109 : 77841.dasm (-12.88 % of base)
-107 : 194560.dasm (-10.07 % of base)
-89 : 285599.dasm (-2.47 % of base)
-82 : 177273.dasm (-6.22 % of base)
-78 : 177918.dasm (-36.11 % of base)
-64 : 29224.dasm (-13.50 % of base)
-64 : 29231.dasm (-13.01 % of base)
-63 : 71551.dasm (-14.82 % of base)
-60 : 177920.dasm (-4.77 % of base)
-56 : 170250.dasm (-19.58 % of base)
-48 : 259668.dasm (-13.75 % of base)
-46 : 226796.dasm (-3.21 % of base)
-46 : 69082.dasm (-15.97 % of base)
-45 : 228126.dasm (-0.92 % of base)
-44 : 70988.dasm (-28.95 % of base)
-44 : 10120.dasm (-7.63 % of base)
-43 : 293203.dasm (-29.25 % of base)
-43 : 291468.dasm (-29.25 % of base)
-42 : 14338.dasm (-15.00 % of base)
69 total files with Code Size differences (45 improved, 24 regressed), 20 unchanged.
Top method regressions (bytes):
52 (3.33 % of base) : 99937.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory:XmlThreadSafetyElement(ubyte,ubyte):Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmptyElementSyntax (FullOpts)
30 (2.16 % of base) : 93098.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanXmlStringUnQuoted():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
26 (15.29 % of base) : 197944.dasm - Newtonsoft.Json.Utilities.DictionaryWrapper`2[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
20 (7.91 % of base) : 69159.dasm - System.Data.ColumnTypeConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
14 (6.60 % of base) : 197941.dasm - Newtonsoft.Json.Utilities.DictionaryWrapper`2[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.get_Item(System.Object):System.Object:this (FullOpts)
11 (1.75 % of base) : 226828.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
8 (1.38 % of base) : 156511.dasm - Microsoft.CodeAnalysis.Emit.DefinitionMap:GetDeletedSynthesizedMethods(Microsoft.CodeAnalysis.Symbols.IMethodSymbolInternal,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Emit.EncLambdaInfo]):System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CodeGen.DebugId,Microsoft.CodeAnalysis.Symbols.IMethodSymbolInternal]]:this (FullOpts)
8 (0.35 % of base) : 156501.dasm - Microsoft.CodeAnalysis.Emit.DefinitionMap:TryCreateVariableSlotAllocator(Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.Symbols.IMethodSymbolInternal,Microsoft.CodeAnalysis.Symbols.IMethodSymbolInternal,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.CodeGen.VariableSlotAllocator:this (FullOpts)
8 (0.38 % of base) : 118546.dasm - Microsoft.CodeAnalysis.Emit.DefinitionMap:TryCreateVariableSlotAllocator(Microsoft.CodeAnalysis.Emit.EmitBaseline,Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.Symbols.IMethodSymbolInternal,Microsoft.CodeAnalysis.Symbols.IMethodSymbolInternal,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.CodeGen.VariableSlotAllocator:this (FullOpts)
7 (1.45 % of base) : 211184.dasm - Microsoft.Build.BackEnd.TaskExecutionHost:InternalSetTaskParameter(Microsoft.Build.Framework.TaskPropertyInfo,System.Object):ubyte:this (FullOpts)
5 (6.94 % of base) : 212163.dasm - Microsoft.Build.Collections.ReadOnlyEmptyDictionary`2[System.__Canon,System.Nullable`1[int]]:Contains(System.Object):ubyte:this (FullOpts)
5 (6.94 % of base) : 212165.dasm - Microsoft.Build.Collections.ReadOnlyEmptyDictionary`2[System.__Canon,System.Nullable`1[int]]:Remove(System.Object):this (FullOpts)
5 (1.74 % of base) : 208083.dasm - Microsoft.Build.Logging.LoggerDescription:CreateForwardingLogger():Microsoft.Build.Framework.IForwardingLogger:this (FullOpts)
5 (3.82 % of base) : 197947.dasm - Newtonsoft.Json.Utilities.DictionaryWrapper`2[System.__Canon,System.Nullable`1[int]]:Remove(System.Object):this (FullOpts)
4 (5.13 % of base) : 234547.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
4 (5.13 % of base) : 236134.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
4 (1.04 % of base) : 258539.dasm - System.Net.Http.Http3RequestStream:HandleReadResponseContentException(System.Exception,System.Threading.CancellationToken):this (FullOpts)
3 (3.23 % of base) : 212152.dasm - Microsoft.Build.Collections.ReadOnlyEmptyDictionary`2[System.__Canon,System.Nullable`1[int]]:get_Item(System.Object):System.Object:this (FullOpts)
3 (2.56 % of base) : 193733.dasm - Microsoft.Extensions.Hosting.Internal.ServiceFactoryAdapter`1[System.__Canon]:CreateServiceProvider(System.Object):System.IServiceProvider:this (FullOpts)
2 (2.60 % of base) : 229326.dasm - Microsoft.Internal.Collections.CollectionServices+CollectionOfObject`1[System.__Canon]:Add(System.Object):this (FullOpts)
Top method improvements (bytes):
-253 (-20.91 % of base) : 219452.dasm - System.CodeDom.Compiler.CodeGenerator:GenerateExpression(System.CodeDom.CodeExpression):this (FullOpts)
-109 (-12.88 % of base) : 77841.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
-107 (-10.07 % of base) : 194560.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
-89 (-2.47 % of base) : 285599.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
-82 (-6.22 % of base) : 177273.dasm - System.Xml.Serialization.SchemaObjectWriter:Write54_XmlSchemaSequence(System.Xml.Schema.XmlSchemaSequence):this (FullOpts)
-78 (-36.11 % of base) : 177918.dasm - System.Xml.Serialization.XmlSchemas:ItemName(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
-64 (-13.50 % of base) : 29224.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2520[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
-64 (-13.01 % of base) : 29231.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2543-1[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
-63 (-14.82 % of base) : 71551.dasm - System.Data.UniqueConstraint:IsConstraintViolated():ubyte:this (FullOpts)
-60 (-4.77 % of base) : 177920.dasm - System.Xml.Serialization.XmlSchemas:GetSchemaItem(System.Xml.Schema.XmlSchemaObject,System.String,System.String):System.String (FullOpts)
-56 (-19.58 % of base) : 170250.dasm - System.Xml.Schema.Compiler:CanonicalizeParticle(System.Xml.Schema.XmlSchemaParticle,ubyte):System.Xml.Schema.XmlSchemaParticle:this (FullOpts)
-48 (-13.75 % of base) : 259668.dasm - System.Net.Http.Headers.ObjectCollection`1[System.__Canon]:CopyTo(System.__Canon[],int):this (FullOpts)
-46 (-3.21 % of base) : 226796.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (FullOpts)
-46 (-15.97 % of base) : 69082.dasm - System.Data.XSDSchema:GetParticleItems(System.Xml.Schema.XmlSchemaParticle):System.Xml.Schema.XmlSchemaObjectCollection (FullOpts)
-45 (-0.92 % of base) : 228126.dasm - System.ComponentModel.Composition.MetadataViewGenerator:GenerateInterfaceViewProxyType(System.Type):System.Type (FullOpts)
-44 (-28.95 % of base) : 70988.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass16_0[System.__Canon]:<GetLinqDataView>b__4(System.Data.DataRow,System.Data.DataRow):int:this (FullOpts)
-44 (-7.63 % of base) : 10120.dasm - System.Runtime.InteropServices.Marshalling.ComVariant:As[System.__Canon]():System.__Canon:this (FullOpts)
-43 (-29.25 % of base) : 293203.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (FullOpts)
-43 (-29.25 % of base) : 291468.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (FullOpts)
-42 (-15.00 % of base) : 14338.dasm - Microsoft.FSharp.Core.FSharpFunc`2[ubyte,System.Nullable`1[int]]:InvokeFast[long,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[ubyte,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[long,System.Nullable`1[int]]]],ubyte,System.Nullable`1[int],long):System.Nullable`1[int] (FullOpts)
Top method regressions (percentages):
26 (15.29 % of base) : 197944.dasm - Newtonsoft.Json.Utilities.DictionaryWrapper`2[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
20 (7.91 % of base) : 69159.dasm - System.Data.ColumnTypeConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
5 (6.94 % of base) : 212163.dasm - Microsoft.Build.Collections.ReadOnlyEmptyDictionary`2[System.__Canon,System.Nullable`1[int]]:Contains(System.Object):ubyte:this (FullOpts)
5 (6.94 % of base) : 212165.dasm - Microsoft.Build.Collections.ReadOnlyEmptyDictionary`2[System.__Canon,System.Nullable`1[int]]:Remove(System.Object):this (FullOpts)
14 (6.60 % of base) : 197941.dasm - Newtonsoft.Json.Utilities.DictionaryWrapper`2[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.get_Item(System.Object):System.Object:this (FullOpts)
4 (5.13 % of base) : 234547.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
4 (5.13 % of base) : 236134.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
5 (3.82 % of base) : 197947.dasm - Newtonsoft.Json.Utilities.DictionaryWrapper`2[System.__Canon,System.Nullable`1[int]]:Remove(System.Object):this (FullOpts)
52 (3.33 % of base) : 99937.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory:XmlThreadSafetyElement(ubyte,ubyte):Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmptyElementSyntax (FullOpts)
3 (3.23 % of base) : 212152.dasm - Microsoft.Build.Collections.ReadOnlyEmptyDictionary`2[System.__Canon,System.Nullable`1[int]]:get_Item(System.Object):System.Object:this (FullOpts)
2 (2.60 % of base) : 229326.dasm - Microsoft.Internal.Collections.CollectionServices+CollectionOfObject`1[System.__Canon]:Add(System.Object):this (FullOpts)
2 (2.60 % of base) : 293205.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:GetHashCode(System.Object):int:this (FullOpts)
2 (2.60 % of base) : 291470.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:GetHashCode(System.Object):int:this (FullOpts)
3 (2.56 % of base) : 193733.dasm - Microsoft.Extensions.Hosting.Internal.ServiceFactoryAdapter`1[System.__Canon]:CreateServiceProvider(System.Object):System.IServiceProvider:this (FullOpts)
30 (2.16 % of base) : 93098.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanXmlStringUnQuoted():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
11 (1.75 % of base) : 226828.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
5 (1.74 % of base) : 208083.dasm - Microsoft.Build.Logging.LoggerDescription:CreateForwardingLogger():Microsoft.Build.Framework.IForwardingLogger:this (FullOpts)
7 (1.45 % of base) : 211184.dasm - Microsoft.Build.BackEnd.TaskExecutionHost:InternalSetTaskParameter(Microsoft.Build.Framework.TaskPropertyInfo,System.Object):ubyte:this (FullOpts)
8 (1.38 % of base) : 156511.dasm - Microsoft.CodeAnalysis.Emit.DefinitionMap:GetDeletedSynthesizedMethods(Microsoft.CodeAnalysis.Symbols.IMethodSymbolInternal,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Emit.EncLambdaInfo]):System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CodeGen.DebugId,Microsoft.CodeAnalysis.Symbols.IMethodSymbolInternal]]:this (FullOpts)
1 (1.09 % of base) : 222566.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
Top method improvements (percentages):
-14 (-42.42 % of base) : 299274.dasm - System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]:<GetMetadataViewProvider>b__1_0(System.Collections.Generic.IDictionary`2[System.String,System.Object]):System.__Canon:this (FullOpts)
-16 (-39.02 % of base) : 28948.dasm - Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
-16 (-39.02 % of base) : 283005.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
-14 (-38.89 % of base) : 188625.dasm - CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]:<Cast>b__0():System.__Canon:this (FullOpts)
-16 (-36.36 % of base) : 146379.dasm - Roslyn.Utilities.EnumUtilities:GetValues[ubyte]():ubyte[] (FullOpts)
-16 (-36.36 % of base) : 108269.dasm - Roslyn.Utilities.EnumUtilities:GetValues[ubyte]():ubyte[] (FullOpts)
-78 (-36.11 % of base) : 177918.dasm - System.Xml.Serialization.XmlSchemas:ItemName(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
-14 (-35.90 % of base) : 74048.dasm - System.Data.Common.SqlUdtStorage:SetStorage(System.Object,System.Collections.BitArray):this (FullOpts)
-14 (-34.15 % of base) : 268314.dasm - System.Runtime.Serialization.DataNode`1[System.__Canon]:set_Value(System.Object):this (FullOpts)
-14 (-32.56 % of base) : 222389.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
-14 (-32.56 % of base) : 222568.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.Remove(System.Object):this (FullOpts)
-14 (-32.56 % of base) : 224242.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.Remove(System.Object):this (FullOpts)
-14 (-32.56 % of base) : 175112.dasm - System.Xml.Xsl.Runtime.XmlQuerySequence`1[System.__Canon]:System.Collections.IList.IndexOf(System.Object):int:this (FullOpts)
-33 (-29.73 % of base) : 177839.dasm - System.Xml.Serialization.XmlSchemaImporter:IsMixed(System.Xml.Schema.XmlSchemaType):ubyte (FullOpts)
-19 (-29.69 % of base) : 188345.dasm - CommandLine.Infrastructure.ReflectionHelper:CreateDefaultImmutableInstance[System.__Canon](System.Type[]):System.__Canon (FullOpts)
-19 (-29.69 % of base) : 199518.dasm - Newtonsoft.Json.Linq.JToken:ToObject[System.__Canon]():System.__Canon:this (FullOpts)
-43 (-29.25 % of base) : 293203.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (FullOpts)
-43 (-29.25 % of base) : 291468.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (FullOpts)
-14 (-29.17 % of base) : 285053.dasm - System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1+<>c__DisplayClass9_1[System.__Canon]:<SetGetter>b__1(System.Object):System.__Canon:this (FullOpts)
-14 (-29.17 % of base) : 284721.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo`1+<>c__DisplayClass29_0[System.__Canon]:<SetCreateObject>b__0():System.__Canon: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: 157355291 (overridden on cmd)
Total bytes of diff: 157341532 (overridden on cmd)
Total bytes of delta: -13759 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
78 : 49473.dasm (1.51 % of base)
69 : 77684.dasm (1.57 % of base)
66 : 277524.dasm (2.40 % of base)
58 : 291084.dasm (4.85 % of base)
50 : 54395.dasm (2.15 % of base)
48 : 77678.dasm (2.63 % of base)
48 : 567091.dasm (2.81 % of base)
46 : 51625.dasm (2.10 % of base)
46 : 52454.dasm (0.98 % of base)
32 : 570930.dasm (1.52 % of base)
32 : 567089.dasm (1.91 % of base)
32 : 150577.dasm (0.70 % of base)
32 : 79755.dasm (1.50 % of base)
31 : 77649.dasm (1.89 % of base)
28 : 49478.dasm (1.48 % of base)
28 : 140455.dasm (6.19 % of base)
26 : 155172.dasm (1.25 % of base)
25 : 93921.dasm (5.63 % of base)
22 : 616876.dasm (6.32 % of base)
21 : 572158.dasm (1.02 % of base)
Top file improvements (bytes):
-183 : 374818.dasm (-13.72 % of base)
-164 : 373204.dasm (-11.29 % of base)
-131 : 374812.dasm (-10.13 % of base)
-128 : 152229.dasm (-4.32 % of base)
-95 : 374814.dasm (-9.64 % of base)
-89 : 312319.dasm (-2.38 % of base)
-86 : 76983.dasm (-3.82 % of base)
-86 : 389206.dasm (-9.91 % of base)
-84 : 570879.dasm (-2.06 % of base)
-78 : 374810.dasm (-5.69 % of base)
-72 : 374815.dasm (-7.42 % of base)
-72 : 438918.dasm (-7.56 % of base)
-64 : 567602.dasm (-1.70 % of base)
-63 : 221583.dasm (-14.82 % of base)
-60 : 374153.dasm (-5.57 % of base)
-59 : 483139.dasm (-11.03 % of base)
-58 : 374817.dasm (-8.30 % of base)
-58 : 77650.dasm (-3.92 % of base)
-58 : 483037.dasm (-7.20 % of base)
-58 : 567090.dasm (-4.01 % of base)
84 total files with Code Size differences (52 improved, 32 regressed), 20 unchanged.
Top method regressions (bytes):
78 (1.51 % of base) : 49473.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:CalculateUseSiteDiagnostic(byref):ubyte:this (Tier1)
69 (1.57 % of base) : 77684.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol:CalculateUseSiteDiagnostic(byref):ubyte:this (Tier1)
66 (2.40 % of base) : 277524.dasm - System.IO.Tests.BaseSymbolicLinks_FileSystem:ResolveLinkTarget_Succeeds(System.String,ubyte):this (Tier1)
58 (4.85 % of base) : 291084.dasm - System.Security.AccessControl.ObjectSecurity:GetSecurityDescriptorBinaryForm():ubyte[]:this (Tier1)
50 (2.15 % of base) : 54395.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol:CalculateUseSiteDiagnostic(byref):ubyte:this (Tier1)
48 (2.63 % of base) : 77678.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:DeriveUseSiteInfoFromParameter(byref,Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol):ubyte:this (Tier1)
48 (2.81 % of base) : 567091.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:DeriveUseSiteInfoFromParameter(byref,Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol):ubyte:this (Tier1)
46 (2.10 % of base) : 51625.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:DeriveUseSiteInfoFromParameter(byref,Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol):ubyte:this (Tier1)
46 (0.98 % of base) : 52454.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol:CalculateUseSiteDiagnostic(byref):ubyte:this (Tier1)
32 (1.91 % of base) : 567089.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:DeriveUseSiteInfoFromType(byref,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int):ubyte:this (Tier1)
32 (1.52 % of base) : 570930.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol:CalculateUseSiteDiagnostic(byref):ubyte:this (Tier1)
32 (1.50 % of base) : 79755.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol:CalculateUseSiteDiagnostic(byref):ubyte:this (Tier1)
32 (0.70 % of base) : 150577.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:CalculateUseSiteDiagnostic(byref):ubyte:this (Tier1)
31 (1.89 % of base) : 77649.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:DeriveUseSiteInfoFromType(byref,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int):ubyte:this (Tier1)
28 (1.48 % of base) : 49478.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:DeriveUseSiteInfoFromType(byref,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int):ubyte:this (Tier1)
28 (6.19 % of base) : 140455.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],ubyte):System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:this (Tier1)
26 (1.25 % of base) : 155172.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DocumentationCommentParser:ParseNameAttribute(byref,byref,byref):this (Tier1)
25 (5.63 % of base) : 93921.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],ubyte):System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:this (Tier1)
22 (6.32 % of base) : 616876.dasm - System.Threading.Tasks.ConcurrentExclusiveSchedulerPair+<>c:<CompleteTaskAsync>b__30_0(System.Object):this (Tier1)
21 (1.02 % of base) : 572158.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DocumentationCommentParser:ParseNameAttribute(byref,byref,byref):this (Tier1)
Top method improvements (bytes):
-183 (-13.72 % of base) : 374818.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write28_XmlSchemaSimpleTypeRestriction(System.String,System.String,System.Xml.Schema.XmlSchemaSimpleTypeRestriction,ubyte,ubyte):this (Tier0-FullOpts)
-164 (-11.29 % of base) : 373204.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write63_XmlSchema(System.String,System.String,System.Xml.Schema.XmlSchema,ubyte,ubyte):this (Tier0-FullOpts)
-131 (-10.13 % of base) : 374812.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write59_XmlSchemaComplexType(System.String,System.String,System.Xml.Schema.XmlSchemaComplexType,ubyte,ubyte):this (Tier0-FullOpts)
-128 (-4.32 % of base) : 152229.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
-95 (-9.64 % of base) : 374814.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write57_Item(System.String,System.String,System.Xml.Schema.XmlSchemaComplexContentExtension,ubyte,ubyte):this (Tier0-FullOpts)
-89 (-2.38 % of base) : 312319.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier0-FullOpts)
-86 (-3.82 % of base) : 76983.dasm - Microsoft.CodeAnalysis.LanguageService.AbstractDeclaredSymbolInfoFactoryService`10[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:AddDeclaredSymbolInfos(Microsoft.CodeAnalysis.SyntaxNode,System.__Canon,Roslyn.Utilities.StringTable,System.String,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.FindSymbols.DeclaredSymbolInfo],System.Collections.Generic.Dictionary`2[System.String,System.String],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int]],System.String,System.String,System.Threading.CancellationToken):this (Tier0-FullOpts)
-86 (-9.91 % of base) : 389206.dasm - System.Xml.XslCompiledTransformApiTests.CSameInstanceXsltArgumentListTransform:SharedArgList(System.Object):int:this (Tier0-FullOpts)
-84 (-2.06 % of base) : 570879.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol:CalculateUseSiteDiagnostic(byref):ubyte:this (Tier1)
-78 (-5.69 % of base) : 374810.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write51_XmlSchemaElement(System.String,System.String,System.Xml.Schema.XmlSchemaElement,ubyte,ubyte):this (Tier0-FullOpts)
-72 (-7.42 % of base) : 374815.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write53_XmlSchemaSequence(System.String,System.String,System.Xml.Schema.XmlSchemaSequence,ubyte,ubyte):this (Tier0-FullOpts)
-72 (-7.56 % of base) : 438918.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write54_XmlSchemaChoice(System.String,System.String,System.Xml.Schema.XmlSchemaChoice,ubyte,ubyte):this (Tier0-FullOpts)
-64 (-1.70 % of base) : 567602.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:CalculateUseSiteDiagnostic(byref):ubyte:this (Tier1)
-63 (-14.82 % of base) : 221583.dasm - System.Data.UniqueConstraint:IsConstraintViolated():ubyte:this (Tier0-FullOpts)
-60 (-5.57 % of base) : 374153.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterAliasedTestType:Write2_AliasedTestType(System.String,System.String,AliasedTestType,ubyte,ubyte):this (Tier0-FullOpts)
-59 (-11.03 % of base) : 483139.dasm - System.Security.Cryptography.X509Certificates.CertificateExtensionsCommon:GetPublicKey[System.__Canon](System.Security.Cryptography.X509Certificates.X509Certificate2,System.Predicate`1[System.Security.Cryptography.X509Certificates.X509Certificate2]):System.__Canon (Tier1)
-58 (-3.92 % of base) : 77650.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:DeriveUseSiteInfoFromType(byref,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):ubyte:this (Tier1)
-58 (-4.01 % of base) : 567090.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:DeriveUseSiteInfoFromType(byref,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):ubyte:this (Tier1)
-58 (-8.30 % of base) : 374817.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write31_XmlSchemaSimpleType(System.String,System.String,System.Xml.Schema.XmlSchemaSimpleType,ubyte,ubyte):this (Tier0-FullOpts)
-58 (-7.20 % of base) : 483037.dasm - System.Security.Cryptography.X509Certificates.CertificateExtensionsCommon:GetPrivateKey[System.__Canon](System.Security.Cryptography.X509Certificates.X509Certificate2,System.Predicate`1[System.Security.Cryptography.X509Certificates.X509Certificate2]):System.__Canon (Tier1)
Top method regressions (percentages):
10 (10.99 % of base) : 401036.dasm - OLEDB.Test.ModuleCore.CTestCase:get_TestModule():OLEDB.Test.ModuleCore.CTestModule:this (Tier1)
18 (7.44 % of base) : 159546.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRed[System.__Canon](byref,int):System.__Canon:this (Tier1)
18 (7.44 % of base) : 180000.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler+<>c:<.cctor>b__10_0(System.Object):this (Tier1)
22 (6.32 % of base) : 616876.dasm - System.Threading.Tasks.ConcurrentExclusiveSchedulerPair+<>c:<CompleteTaskAsync>b__30_0(System.Object):this (Tier1)
15 (6.20 % of base) : 160974.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRed[System.__Canon](byref,int):System.__Canon:this (Tier1)
28 (6.19 % of base) : 140455.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],ubyte):System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:this (Tier1)
25 (5.63 % of base) : 93921.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],ubyte):System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:this (Tier1)
15 (4.89 % of base) : 615148.dasm - System.Threading.Tasks.TaskFactory`1+<>c[System.Threading.Tasks.VoidTaskResult]:<ContinueWhenAllImpl>b__57_1(System.Threading.Tasks.Task`1[System.Threading.Tasks.Task[]],System.Object):System.Threading.Tasks.VoidTaskResult:this (Tier1)
58 (4.85 % of base) : 291084.dasm - System.Security.AccessControl.ObjectSecurity:GetSecurityDescriptorBinaryForm():ubyte[]:this (Tier1)
6 (3.19 % of base) : 345307.dasm - System.Threading.CancellationTokenSource:Invoke(System.Delegate,System.Object,System.Threading.CancellationTokenSource) (Tier1)
14 (2.93 % of base) : 60998.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],ubyte):System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.__Canon]:this (Tier1)
4 (2.86 % of base) : 393159.dasm - System.Xml.Schema.XsdBuilder:BuildIdentityConstraint_Refer(System.Xml.Schema.XsdBuilder,System.String) (Tier1)
48 (2.81 % of base) : 567091.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:DeriveUseSiteInfoFromParameter(byref,Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol):ubyte:this (Tier1)
7 (2.80 % of base) : 161480.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRed[System.__Canon](byref,int):System.__Canon:this (Tier1)
48 (2.63 % of base) : 77678.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:DeriveUseSiteInfoFromParameter(byref,Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol):ubyte:this (Tier1)
4 (2.61 % of base) : 616817.dasm - System.Threading.Tasks.TaskFactory`1+<>c[System.Threading.Tasks.VoidTaskResult]:<ContinueWhenAnyImpl>b__66_1(System.Threading.Tasks.Task`1[System.Threading.Tasks.Task],System.Object):System.Threading.Tasks.VoidTaskResult:this (Tier1)
3 (2.56 % of base) : 113885.dasm - Microsoft.Extensions.Hosting.Internal.ServiceFactoryAdapter`1[System.__Canon]:CreateServiceProvider(System.Object):System.IServiceProvider:this (Tier1)
66 (2.40 % of base) : 277524.dasm - System.IO.Tests.BaseSymbolicLinks_FileSystem:ResolveLinkTarget_Succeeds(System.String,ubyte):this (Tier1)
10 (2.26 % of base) : 317102.dasm - System.Delegate:GetMethodImpl():System.Reflection.MethodInfo:this (Tier1)
50 (2.15 % of base) : 54395.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol:CalculateUseSiteDiagnostic(byref):ubyte:this (Tier1)
Top method improvements (percentages):
-16 (-39.02 % of base) : 544490.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
-18 (-38.30 % of base) : 113550.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
-14 (-34.15 % of base) : 116268.dasm - Microsoft.Extensions.DependencyInjection.ServiceDescriptor:get_ImplementationFactory():System.Func`2[System.IServiceProvider,System.Object]:this (Tier1)
-14 (-34.15 % of base) : 106154.dasm - Microsoft.Extensions.DependencyInjection.ServiceDescriptor:get_KeyedImplementationFactory():System.Func`3[System.IServiceProvider,System.Object,System.Object]:this (Tier1)
-22 (-33.33 % of base) : 499902.dasm - Moq.Mock`1[System.__Canon]:get_Object():System.__Canon:this (Tier1)
-19 (-32.76 % of base) : 1604.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-43 (-29.25 % of base) : 106191.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (Tier1)
-14 (-25.93 % of base) : 131362.dasm - System.Composition.Hosting.Providers.Lazy.LazyWithMetadataExportDescriptorProvider+<>c__DisplayClass2_2`2[System.__Canon,System.__Canon]:<GetLazyDefinitions>b__4():System.__Canon:this (Tier1)
-14 (-25.93 % of base) : 93669.dasm - System.Composition.Hosting.Providers.Lazy.LazyWithMetadataExportDescriptorProvider+<>c__DisplayClass2_3`2[System.__Canon,System.__Canon]:<GetLazyDefinitions>b__4():System.__Canon:this (Tier1)
-15 (-25.86 % of base) : 301970.dasm - (dynamicClass):lambda_method241(System.Runtime.CompilerServices.Closure):long (FullOpts)
-15 (-25.00 % of base) : 549280.dasm - System.Text.Json.Serialization.Converters.ConcurrentStackOfTConverter`2[System.__Canon,System.__Canon]:Add(byref,byref):this (Tier1)
-15 (-25.00 % of base) : 550225.dasm - System.Text.Json.Serialization.Converters.QueueOfTConverter`2[System.__Canon,System.__Canon]:Add(byref,byref):this (Tier1)
-15 (-25.00 % of base) : 550224.dasm - System.Text.Json.Serialization.Converters.StackOfTConverter`2[System.__Canon,System.__Canon]:Add(byref,byref):this (Tier1)
-36 (-25.00 % of base) : 548790.dasm - System.Text.Json.Serialization.Converters.StackOrQueueConverter`1[System.__Canon]:Add(byref,byref):this (Tier1)
-15 (-25.00 % of base) : 107515.dasm - Xunit.Assert:IsAssignableFrom[System.__Canon](System.Object):System.__Canon (Tier1)
-15 (-25.00 % of base) : 106089.dasm - Xunit.Assert:IsType[System.__Canon](System.Object):System.__Canon (Tier1)
-19 (-25.00 % of base) : 106921.dasm - Xunit.Assert:Throws[System.__Canon](System.Action):System.__Canon (Tier1)
-19 (-25.00 % of base) : 271428.dasm - Xunit.Assert:ThrowsAny[System.__Canon](System.Action):System.__Canon (Tier1)
-16 (-23.88 % of base) : 572204.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-19 (-23.46 % of base) : 104810.dasm - Xunit.Assert:Throws[System.__Canon](System.Func`1[System.Object]):System.__Canon (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: 89450088 (overridden on cmd)
Total bytes of diff: 89437053 (overridden on cmd)
Total bytes of delta: -13035 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
186 : 177307.dasm (9.90 % of base)
37 : 187233.dasm (3.07 % of base)
36 : 150308.dasm (12.33 % of base)
18 : 72529.dasm (1.01 % of base)
18 : 96687.dasm (90.00 % of base)
17 : 98315.dasm (43.59 % of base)
17 : 98001.dasm (43.59 % of base)
11 : 4093.dasm (1.75 % of base)
6 : 206119.dasm (0.42 % of base)
6 : 207770.dasm (0.42 % of base)
6 : 71034.dasm (1.80 % of base)
4 : 99438.dasm (5.13 % of base)
3 : 38656.dasm (2.56 % of base)
3 : 37932.dasm (0.48 % of base)
2 : 38500.dasm (0.48 % of base)
2 : 37929.dasm (0.71 % of base)
2 : 38267.dasm (0.69 % of base)
2 : 38284.dasm (0.30 % of base)
2 : 95632.dasm (0.32 % of base)
2 : 147322.dasm (0.63 % of base)
Top file improvements (bytes):
-470 : 217490.dasm (-10.50 % of base)
-364 : 314172.dasm (-7.29 % of base)
-253 : 64885.dasm (-20.91 % of base)
-189 : 199016.dasm (-17.68 % of base)
-189 : 218517.dasm (-17.68 % of base)
-184 : 172983.dasm (-14.05 % of base)
-172 : 14922.dasm (-18.90 % of base)
-164 : 172100.dasm (-11.29 % of base)
-145 : 199610.dasm (-13.39 % of base)
-145 : 218226.dasm (-13.39 % of base)
-128 : 172977.dasm (-10.26 % of base)
-92 : 172979.dasm (-9.70 % of base)
-89 : 147888.dasm (-2.38 % of base)
-88 : 203658.dasm (-7.17 % of base)
-88 : 205011.dasm (-7.17 % of base)
-86 : 21029.dasm (-3.82 % of base)
-78 : 172975.dasm (-5.89 % of base)
-72 : 207662.dasm (-7.56 % of base)
-72 : 172980.dasm (-7.56 % of base)
-71 : 11965.dasm (-18.21 % of base)
80 total files with Code Size differences (53 improved, 27 regressed), 20 unchanged.
Top method regressions (bytes):
186 (9.90 % of base) : 177307.dasm - (dynamicClass):<xsl:template match="/">(System.Xml.Xsl.Runtime.XmlQueryRuntime) (FullOpts)
37 (3.07 % of base) : 187233.dasm - System.Reflection.Tests.GetCustomAttributes_Compat:GetCustomAttributes_thisAsm():this (FullOpts)
36 (12.33 % of base) : 150308.dasm - System.SpanTests.MemoryMarshalTests:CreateFromPinnedArrayString() (FullOpts)
18 (1.01 % of base) : 72529.dasm - System.Collections.Immutable.Tests.ImmutableSortedDictionaryTest:ToUnorderedTest():this (FullOpts)
18 (90.00 % of base) : 96687.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0:<Insert>b__2():this (FullOpts)
17 (43.59 % of base) : 98315.dasm - System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
17 (43.59 % of base) : 98001.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
11 (1.75 % of base) : 4093.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
6 (1.80 % of base) : 71034.dasm - System.Collections.Frozen.FrozenSetInternalBase`2[System.__Canon,System.Collections.Frozen.LengthBucketsFrozenSet+GSW]:ComparersAreCompatible(System.Collections.Generic.IReadOnlySet`1[System.__Canon]):ubyte:this (FullOpts)
6 (0.42 % of base) : 206119.dasm - System.Runtime.Serialization.Tests.DataContractSerializerHelper:SerializeAndDeserialize[System.__Canon](System.__Canon,System.String,System.Runtime.Serialization.DataContractSerializerSettings,System.Func`1[System.Runtime.Serialization.DataContractSerializer],ubyte,ubyte):System.__Canon (FullOpts)
6 (0.42 % of base) : 207770.dasm - System.Runtime.Serialization.Tests.DataContractSerializerHelper:SerializeAndDeserialize[System.__Canon](System.__Canon,System.String,System.Runtime.Serialization.DataContractSerializerSettings,System.Func`1[System.Runtime.Serialization.DataContractSerializer],ubyte,ubyte):System.__Canon (FullOpts)
4 (5.13 % of base) : 99438.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
3 (0.48 % of base) : 37932.dasm - FluentAssertions.Collections.GenericCollectionAssertions`3[System.__Canon,System.__Canon,System.__Canon]:BeEmpty(System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
3 (2.56 % of base) : 38656.dasm - Microsoft.Extensions.Hosting.Internal.ServiceFactoryAdapter`1[System.__Canon]:CreateServiceProvider(System.Object):System.IServiceProvider:this (FullOpts)
2 (0.30 % of base) : 38284.dasm - FluentAssertions.Collections.GenericCollectionAssertions`3[System.__Canon,System.__Canon,System.__Canon]:BeEquivalentTo[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
2 (0.71 % of base) : 37929.dasm - FluentAssertions.Primitives.BooleanAssertions`1[System.__Canon]:Be(ubyte,System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
2 (0.82 % of base) : 38026.dasm - FluentAssertions.Primitives.BooleanAssertions`1[System.__Canon]:BeFalse(System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
2 (0.82 % of base) : 38301.dasm - FluentAssertions.Primitives.BooleanAssertions`1[System.__Canon]:BeTrue(System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
2 (0.69 % of base) : 38267.dasm - FluentAssertions.Primitives.NullableBooleanAssertions`1[System.__Canon]:Be(System.Nullable`1[ubyte],System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
2 (0.48 % of base) : 38500.dasm - FluentAssertions.Primitives.ReferenceTypeAssertions`2[System.__Canon,System.__Canon]:BeOfType(System.Type,System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
Top method improvements (bytes):
-470 (-10.50 % of base) : 217490.dasm - System.Tests.TupleTests+TupleTestDriver`10[short,int,long,System.__Canon,ushort,float,double,System.DateTime,System.__Canon,System.TimeSpan]:.ctor(System.Object[]):this (FullOpts)
-364 (-7.29 % of base) : 314172.dasm - System.Tests.ValueTupleTests+ValueTupleTestDriver`10[short,int,long,System.__Canon,ushort,float,double,System.DateTime,System.ValueTuple`2[ubyte,System.__Canon],System.TimeSpan]:.ctor(System.Object[]):this (FullOpts)
-253 (-20.91 % of base) : 64885.dasm - System.CodeDom.Compiler.CodeGenerator:GenerateExpression(System.CodeDom.CodeExpression):this (FullOpts)
-189 (-17.68 % of base) : 199016.dasm - System.Tests.ArrayTests:Sort_Array_Generic[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon[]) (FullOpts)
-189 (-17.68 % of base) : 218517.dasm - System.Tests.ArrayTests:Sort_Array_Generic[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon[]) (FullOpts)
-184 (-14.05 % of base) : 172983.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write28_XmlSchemaSimpleTypeRestriction(System.String,System.String,System.Xml.Schema.XmlSchemaSimpleTypeRestriction,ubyte,ubyte):this (FullOpts)
-172 (-18.90 % of base) : 14922.dasm - Microsoft.CodeAnalysis.Shared.Utilities.AbstractSpeculationAnalyzer`8[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Conversion]:ReplacementChangesSemanticsForNode(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode):ubyte:this (FullOpts)
-164 (-11.29 % of base) : 172100.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write63_XmlSchema(System.String,System.String,System.Xml.Schema.XmlSchema,ubyte,ubyte):this (FullOpts)
-145 (-13.39 % of base) : 199610.dasm - System.Tests.ArrayTests:Sort_Array_Array_Generic[System.__Canon](System.__Canon[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon[],System.__Canon[]) (FullOpts)
-145 (-13.39 % of base) : 218226.dasm - System.Tests.ArrayTests:Sort_Array_Array_Generic[System.__Canon](System.__Canon[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon[],System.__Canon[]) (FullOpts)
-128 (-10.26 % of base) : 172977.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write59_XmlSchemaComplexType(System.String,System.String,System.Xml.Schema.XmlSchemaComplexType,ubyte,ubyte):this (FullOpts)
-92 (-9.70 % of base) : 172979.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write57_Item(System.String,System.String,System.Xml.Schema.XmlSchemaComplexContentExtension,ubyte,ubyte):this (FullOpts)
-89 (-2.38 % of base) : 147888.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
-88 (-7.17 % of base) : 203658.dasm - DataContractJsonSerializerTests:DCJS_SuspensionManager() (FullOpts)
-88 (-7.17 % of base) : 205011.dasm - DataContractJsonSerializerTests:DCJS_SuspensionManager() (FullOpts)
-86 (-3.82 % of base) : 21029.dasm - Microsoft.CodeAnalysis.LanguageService.AbstractDeclaredSymbolInfoFactoryService`10[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:AddDeclaredSymbolInfos(Microsoft.CodeAnalysis.SyntaxNode,System.__Canon,Roslyn.Utilities.StringTable,System.String,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.FindSymbols.DeclaredSymbolInfo],System.Collections.Generic.Dictionary`2[System.String,System.String],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int]],System.String,System.String,System.Threading.CancellationToken):this (FullOpts)
-78 (-5.89 % of base) : 172975.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write51_XmlSchemaElement(System.String,System.String,System.Xml.Schema.XmlSchemaElement,ubyte,ubyte):this (FullOpts)
-72 (-7.56 % of base) : 172980.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write53_XmlSchemaSequence(System.String,System.String,System.Xml.Schema.XmlSchemaSequence,ubyte,ubyte):this (FullOpts)
-72 (-7.56 % of base) : 207662.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write54_XmlSchemaChoice(System.String,System.String,System.Xml.Schema.XmlSchemaChoice,ubyte,ubyte):this (FullOpts)
-71 (-18.21 % of base) : 11965.dasm - Microsoft.CodeAnalysis.MetadataDecoder`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:DecodeCustomAttributeFixedArgumentOrThrow(Microsoft.CodeAnalysis.Symbols.ITypeSymbolInternal,byref):Microsoft.CodeAnalysis.TypedConstant:this (FullOpts)
Top method regressions (percentages):
18 (90.00 % of base) : 96687.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0:<Insert>b__2():this (FullOpts)
17 (43.59 % of base) : 98315.dasm - System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
17 (43.59 % of base) : 98001.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
36 (12.33 % of base) : 150308.dasm - System.SpanTests.MemoryMarshalTests:CreateFromPinnedArrayString() (FullOpts)
186 (9.90 % of base) : 177307.dasm - (dynamicClass):<xsl:template match="/">(System.Xml.Xsl.Runtime.XmlQueryRuntime) (FullOpts)
4 (5.13 % of base) : 99438.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
37 (3.07 % of base) : 187233.dasm - System.Reflection.Tests.GetCustomAttributes_Compat:GetCustomAttributes_thisAsm():this (FullOpts)
2 (2.60 % of base) : 86001.dasm - Microsoft.Internal.Collections.CollectionServices+CollectionOfObject`1[System.__Canon]:Add(System.Object):this (FullOpts)
3 (2.56 % of base) : 38656.dasm - Microsoft.Extensions.Hosting.Internal.ServiceFactoryAdapter`1[System.__Canon]:CreateServiceProvider(System.Object):System.IServiceProvider:this (FullOpts)
6 (1.80 % of base) : 71034.dasm - System.Collections.Frozen.FrozenSetInternalBase`2[System.__Canon,System.Collections.Frozen.LengthBucketsFrozenSet+GSW]:ComparersAreCompatible(System.Collections.Generic.IReadOnlySet`1[System.__Canon]):ubyte:this (FullOpts)
2 (1.75 % of base) : 169982.dasm - Tests.Collections.ICollectionTest`1+<>c__DisplayClass35_0[System.__Canon]:<CollectionShouldContainAllItems>b__0(System.Object):this (FullOpts)
11 (1.75 % of base) : 4093.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
2 (1.22 % of base) : 38220.dasm - FluentAssertions.Primitives.StringAssertions`1[System.__Canon]:Be(System.String,System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
1 (1.09 % of base) : 71643.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,int]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
18 (1.01 % of base) : 72529.dasm - System.Collections.Immutable.Tests.ImmutableSortedDictionaryTest:ToUnorderedTest():this (FullOpts)
2 (0.82 % of base) : 38026.dasm - FluentAssertions.Primitives.BooleanAssertions`1[System.__Canon]:BeFalse(System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
2 (0.82 % of base) : 38301.dasm - FluentAssertions.Primitives.BooleanAssertions`1[System.__Canon]:BeTrue(System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
2 (0.71 % of base) : 37929.dasm - FluentAssertions.Primitives.BooleanAssertions`1[System.__Canon]:Be(ubyte,System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
2 (0.69 % of base) : 38267.dasm - FluentAssertions.Primitives.NullableBooleanAssertions`1[System.__Canon]:Be(System.Nullable`1[ubyte],System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
2 (0.63 % of base) : 147322.dasm - System.Management.CompatSwitches:GetSwitchValueFromRegistry():ubyte (FullOpts)
Top method improvements (percentages):
-14 (-42.42 % of base) : 91003.dasm - System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]:<GetMetadataViewProvider>b__1_0(System.Collections.Generic.IDictionary`2[System.String,System.Object]):System.__Canon:this (FullOpts)
-41 (-42.27 % of base) : 62857.dasm - System.Xml.Serialization.ReflectionXmlSerializationReaderHelper+<>c__DisplayClass1_0`2[System.__Canon,System.__Canon]:<GetSetMemberValueDelegateWithType>b__0(System.Object,System.Object):this (FullOpts)
-14 (-41.18 % of base) : 139255.dasm - System.Linq.ParallelQuery`1+<>c__2`1[System.__Canon,System.__Canon]:<OfType>b__2_1(System.__Canon):System.__Canon:this (FullOpts)
-16 (-39.02 % of base) : 35496.dasm - LamarCodeGeneration.Util.TypeExtensions:As[System.__Canon](System.Object):System.__Canon (FullOpts)
-16 (-39.02 % of base) : 148059.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
-14 (-38.89 % of base) : 42952.dasm - Microsoft.CodeAnalysis.Options.Option`1[System.__Canon]:Microsoft.CodeAnalysis.Options.IOption.get_DefaultValue():System.Object:this (FullOpts)
-14 (-38.89 % of base) : 48585.dasm - Microsoft.CodeAnalysis.Options.Option`1[System.__Canon]:Microsoft.CodeAnalysis.Options.IOption.get_DefaultValue():System.Object:this (FullOpts)
-14 (-38.89 % of base) : 48576.dasm - Microsoft.CodeAnalysis.Options.Option2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
-14 (-38.89 % of base) : 42945.dasm - Microsoft.CodeAnalysis.Options.Option2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
-14 (-38.89 % of base) : 48578.dasm - Microsoft.CodeAnalysis.Options.PerLanguageOption2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
-14 (-38.89 % of base) : 42947.dasm - Microsoft.CodeAnalysis.Options.PerLanguageOption2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
-14 (-32.56 % of base) : 73149.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
-14 (-32.56 % of base) : 71672.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,int]:System.Collections.IDictionary.Remove(System.Object):this (FullOpts)
-14 (-32.56 % of base) : 69722.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,int]:System.Collections.IDictionary.Remove(System.Object):this (FullOpts)
-18 (-30.51 % of base) : 173012.dasm - System.Xml.Schema.XmlSchemaSimpleType:get_DerivedFrom():System.Xml.XmlQualifiedName:this (FullOpts)
-14 (-30.43 % of base) : 99944.dasm - System.Diagnostics.DiagnosticSourceEventSource+TransformSpec+PropertySpec+PropertyFetch+RefTypedFetchProperty`2[System.__Canon,System.__Canon]:Fetch(System.Object):System.Object:this (FullOpts)
-14 (-29.79 % of base) : 835.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
-33 (-29.73 % of base) : 172414.dasm - System.Xml.Serialization.XmlSchemaImporter:IsMixed(System.Xml.Schema.XmlSchemaType):ubyte (FullOpts)
-19 (-29.69 % of base) : 22556.dasm - Newtonsoft.Json.Linq.JToken:ToObject[System.__Canon]():System.__Canon:this (FullOpts)
-43 (-29.25 % of base) : 1821.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (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: 7928176 (overridden on cmd)
Total bytes of diff: 7925848 (overridden on cmd)
Total bytes of delta: -2328 (-0.03 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
11 : 7406.dasm (2.60 % of base)
5 : 34117.dasm (2.79 % of base)
Top file improvements (bytes):
-172 : 34118.dasm (-36.36 % of base)
-118 : 34847.dasm (-36.20 % of base)
-67 : 35557.dasm (-22.26 % of base)
-56 : 34114.dasm (-21.46 % of base)
-46 : 35351.dasm (-21.30 % of base)
-38 : 34102.dasm (-22.09 % of base)
-33 : 24878.dasm (-1.55 % of base)
-33 : 16922.dasm (-12.55 % of base)
-33 : 30643.dasm (-9.12 % of base)
-32 : 26652.dasm (-15.17 % of base)
-29 : 35722.dasm (-15.43 % of base)
-28 : 18335.dasm (-6.10 % of base)
-26 : 34076.dasm (-1.90 % of base)
-25 : 32092.dasm (-2.72 % of base)
-25 : 8441.dasm (-27.17 % of base)
-24 : 7368.dasm (-6.20 % of base)
-24 : 12661.dasm (-15.89 % of base)
-24 : 34071.dasm (-20.17 % of base)
-23 : 23129.dasm (-2.35 % of base)
-22 : 35197.dasm (-14.57 % of base)
60 total files with Code Size differences (58 improved, 2 regressed), 8 unchanged.
Top method regressions (bytes):
11 (2.60 % of base) : 7406.dasm - FSharp.Compiler.CheckExpressions:ComputeAccessAndCompPath(FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CheckExpressions+DeclKind],FSharp.Compiler.Text.Range,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Accessibility],FSharp.Compiler.TypedTree+ParentRef):System.Tuple`2[FSharp.Compiler.TypedTree+Accessibility,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CompilationPath]] (FullOpts)
5 (2.79 % of base) : 34117.dasm - System.Management.Automation.Interpreter.NewArrayInitInstruction`1[System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
Top method improvements (bytes):
-172 (-36.36 % of base) : 34118.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`6[System.__Canon,ubyte,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-118 (-36.20 % of base) : 34847.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-67 (-22.26 % of base) : 35557.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Invoke(System.Object,System.Object,System.Object,System.Object,System.Object):System.Object:this (FullOpts)
-56 (-21.46 % of base) : 34114.dasm - System.Management.Automation.Interpreter.FuncCallInstruction`4[System.__Canon,System.__Canon,ubyte,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-46 (-21.30 % of base) : 35351.dasm - System.Management.Automation.Interpreter.DynamicInstruction`3[System.__Canon,System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-38 (-22.09 % of base) : 34102.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`2[System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-33 (-1.55 % of base) : 24878.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:AddMemberToCandidateSet[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,ubyte,ubyte,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],ubyte,byref,ubyte,ubyte):this (FullOpts)
-33 (-9.12 % of base) : 30643.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (FullOpts)
-33 (-12.55 % of base) : 16922.dasm - System.Net.Http.Headers.HttpHeaders:AddValueToStoreValue[System.__Canon](System.__Canon,byref) (FullOpts)
-32 (-15.17 % of base) : 26652.dasm - System.Linq.ImmutableArrayExtensions:SequenceEqual[System.__Canon,System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`3[System.__Canon,System.__Canon,ubyte]):ubyte (FullOpts)
-29 (-15.43 % of base) : 35722.dasm - System.Runtime.InteropServices.CustomMarshalers.ComDataHelpers:GetOrCreateManagedViewFromComData[System.__Canon,System.__Canon](System.Object,System.Func`2[System.__Canon,System.__Canon]):System.__Canon (FullOpts)
-28 (-6.10 % of base) : 18335.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithAnnotationsGreen[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxAnnotation]):System.__Canon (FullOpts)
-26 (-1.90 % of base) : 34076.dasm - System.Management.Automation.ScriptBlock:BindArgumentsForScriptblockInvoke(System.Management.Automation.RuntimeDefinedParameter[],System.Object[],System.Management.Automation.ExecutionContext,ubyte,System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.PSVariable],System.Management.Automation.MutableTuple):System.Object[] (FullOpts)
-25 (-27.17 % of base) : 8441.dasm - FSharp.Compiler.TypedTreeOps:targetOfSuccessDecisionTree(FSharp.Compiler.TypedTree+DecisionTree):Microsoft.FSharp.Core.FSharpOption`1[int] (FullOpts)
-25 (-2.72 % of base) : 32092.dasm - System.Runtime.CompilerServices.CallSite`1[System.__Canon]:<MakeUpdateDelegate>g__MakeUpdateDelegateWhenCanCompileToIL|18_0(byref):System.__Canon:this (FullOpts)
-24 (-6.20 % of base) : 7368.dasm - FSharp.Compiler.CheckDeclarations+TcDeclarations:SplitTyconDefn(FSharp.Compiler.Syntax.SynTypeDefn):System.Tuple`2[FSharp.Compiler.CheckDeclarations+MutRecDefnsPhase1DataForTycon,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynMemberDefn]] (FullOpts)
-24 (-15.89 % of base) : 12661.dasm - FSharp.Compiler.CompilerDiagnostics:GetWarningLevel(FSharp.Compiler.ErrorLogger+PhasedDiagnostic):int (FullOpts)
-24 (-20.17 % of base) : 34071.dasm - System.Management.Automation.LanguagePrimitives:ConvertTo[System.__Canon](System.Object):System.__Canon (FullOpts)
-23 (-2.35 % of base) : 23129.dasm - Microsoft.CodeAnalysis.MetadataDecoder`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:GetExplicitlyOverriddenMethods(System.Reflection.Metadata.TypeDefinitionHandle,System.Reflection.Metadata.MethodDefinitionHandle,System.__Canon):System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
-22 (-11.64 % of base) : 22237.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
Top method regressions (percentages):
5 (2.79 % of base) : 34117.dasm - System.Management.Automation.Interpreter.NewArrayInitInstruction`1[System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
11 (2.60 % of base) : 7406.dasm - FSharp.Compiler.CheckExpressions:ComputeAccessAndCompPath(FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CheckExpressions+DeclKind],FSharp.Compiler.Text.Range,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Accessibility],FSharp.Compiler.TypedTree+ParentRef):System.Tuple`2[FSharp.Compiler.TypedTree+Accessibility,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CompilationPath]] (FullOpts)
Top method improvements (percentages):
-14 (-42.42 % of base) : 34197.dasm - System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]:<GetCustomAttributes>b__7_1(System.Object):System.__Canon:this (FullOpts)
-172 (-36.36 % of base) : 34118.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`6[System.__Canon,ubyte,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-118 (-36.20 % of base) : 34847.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-19 (-32.76 % of base) : 678.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
-14 (-30.43 % of base) : 35682.dasm - System.Management.Automation.Language.GetSafeValueVisitor:VisitArrayExpression(System.Management.Automation.Language.ArrayExpressionAst):System.Object:this (FullOpts)
-14 (-29.79 % of base) : 32223.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
-19 (-28.79 % of base) : 20817.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
-25 (-27.17 % of base) : 8441.dasm - FSharp.Compiler.TypedTreeOps:targetOfSuccessDecisionTree(FSharp.Compiler.TypedTree+DecisionTree):Microsoft.FSharp.Core.FSharpOption`1[int] (FullOpts)
-22 (-27.16 % of base) : 18823.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
-14 (-26.42 % of base) : 19039.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithDiagnosticsGreen[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.DiagnosticInfo[]):System.__Canon (FullOpts)
-67 (-22.26 % of base) : 35557.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Invoke(System.Object,System.Object,System.Object,System.Object,System.Object):System.Object:this (FullOpts)
-38 (-22.09 % of base) : 34102.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`2[System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-56 (-21.46 % of base) : 34114.dasm - System.Management.Automation.Interpreter.FuncCallInstruction`4[System.__Canon,System.__Canon,ubyte,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-46 (-21.30 % of base) : 35351.dasm - System.Management.Automation.Interpreter.DynamicInstruction`3[System.__Canon,System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-24 (-20.17 % of base) : 34071.dasm - System.Management.Automation.LanguagePrimitives:ConvertTo[System.__Canon](System.Object):System.__Canon (FullOpts)
-12 (-19.67 % of base) : 4537.dasm - FSharp.Compiler.ParseAndCheckInputs+PostParseModuleImpls@183:Invoke(FSharp.Compiler.Syntax.ParsedImplFileFragment):Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.Ident]]:this (FullOpts)
-12 (-17.91 % of base) : 9493.dasm - FSharp.Compiler.TypedTreeBasics:ccuOfTyconRef(FSharp.Compiler.TypedTree+EntityRef):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk] (FullOpts)
-14 (-17.72 % of base) : 24543.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (FullOpts)
-14 (-17.50 % of base) : 34856.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`1[System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-12 (-16.44 % of base) : 10856.dasm - FSharp.Compiler.TypedTreeOps:remapAttribKind(FSharp.Compiler.TypedTreeOps+Remap,FSharp.Compiler.TypedTree+AttribKind):FSharp.Compiler.TypedTree+AttribKind (FullOpts)