Assembly Diffs
linux arm
Diffs are based on 2,089,094 contexts (825,130 MinOpts, 1,263,964 FullOpts).
MISSED contexts: base: 77,526 (3.36%), diff: 218,963 (9.49%)
Overall (-102,014 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.linux.arm.checked.mch |
8,924,596 |
-1,326 |
| benchmarks.run_pgo.linux.arm.checked.mch |
42,617,478 |
-33,292 |
| benchmarks.run_tiered.linux.arm.checked.mch |
12,767,976 |
-936 |
| coreclr_tests.run.linux.arm.checked.mch |
297,750,418 |
-2,584 |
| libraries.crossgen2.linux.arm.checked.mch |
36,762,668 |
-17,454 |
| libraries.pmi.linux.arm.checked.mch |
36,001,566 |
-10,080 |
| libraries_tests.run.linux.arm.Release.mch |
203,181,408 |
-21,726 |
| librariestestsnotieredcompilation.run.linux.arm.Release.mch |
75,759,494 |
-12,418 |
| realworld.run.linux.arm.checked.mch |
10,061,560 |
-2,198 |
FullOpts (-102,014 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.linux.arm.checked.mch |
8,541,130 |
-1,326 |
| benchmarks.run_pgo.linux.arm.checked.mch |
30,969,664 |
-33,292 |
| benchmarks.run_tiered.linux.arm.checked.mch |
5,575,674 |
-936 |
| coreclr_tests.run.linux.arm.checked.mch |
85,030,956 |
-2,584 |
| libraries.crossgen2.linux.arm.checked.mch |
36,761,438 |
-17,454 |
| libraries.pmi.linux.arm.checked.mch |
35,895,062 |
-10,080 |
| libraries_tests.run.linux.arm.Release.mch |
80,838,080 |
-21,726 |
| librariestestsnotieredcompilation.run.linux.arm.Release.mch |
65,675,692 |
-12,418 |
| realworld.run.linux.arm.checked.mch |
9,611,874 |
-2,198 |
Example diffs
benchmarks.run.linux.arm.checked.mch
-28 (-51.85%) : 3453.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%) : 6004.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%) : 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
+10 (+10.42%) : 45756.dasm - PerfLabTests.CastingPerf:FooObjIsFoo():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 hoist "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> r5 "CSE - aggressive"
+; V04 cse1 [V04,T01] ( 3, 6 ) ref -> r7 hoist "CSE - aggressive"
+; V05 cse2 [V05,T03] ( 3, 6 ) int -> r6 hoist "CSE - aggressive"
+; TEMP_01 ref -> [r11-0x14]
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M50369_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_M50369_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_M50369_IG07
+ ble SHORT G_M50369_IG04
movw r6, 0xd1ff
movt r6, 0xd1ff
ldr r7, [r6]
; gcrRegs +[r7]
- ;; size=26 bbWeight=1 PerfScore 9.00
-G_M50369_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_M50369_IG06
- ;; size=8 bbWeight=4 PerfScore 16.00
-G_M50369_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_M50369_IG06
- ;; size=14 bbWeight=1 PerfScore 5.00
-G_M50369_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_M50369_IG06: ; bbWeight=4, gcrefRegs=0088 {r3 r7}, byrefRegs=0000 {}, byref, isz
+ ;; size=46 bbWeight=1 PerfScore 15.00
+G_M50369_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]
add r0, r6, 8
- 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_M50369_IG03
- ;; size=22 bbWeight=4 PerfScore 32.00
-G_M50369_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=44 bbWeight=4 PerfScore 60.00
+G_M50369_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=c13d3b3e) for method PerfLabTests.CastingPerf:FooObjIsFoo():this (FullOpts)
+; Total bytes of code 106, prolog size 12, PerfScore 80.00, instruction count 35, allocated bytes for code 106 (MethodHash=c13d3b3e) for method PerfLabTests.CastingPerf:FooObjIsFoo():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%) : 43489.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 hoist "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> r5 "CSE - aggressive"
+; V04 cse1 [V04,T01] ( 3, 6 ) ref -> r7 hoist "CSE - aggressive"
+; V05 cse2 [V05,T03] ( 3, 6 ) int -> r6 hoist "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%) : 46028.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 hoist "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> r5 "CSE - aggressive"
+; V04 cse1 [V04,T01] ( 3, 6 ) ref -> r7 hoist "CSE - aggressive"
+; V05 cse2 [V05,T03] ( 3, 6 ) int -> r6 hoist "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%) : 33009.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 126
; 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%) : 98889.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%) : 82130.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 200
; 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%) : 12864.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%) : 77341.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%) : 99356.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%) : 8076.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%) : 2613.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%) : 17102.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%) : 26500.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():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 hoist "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> r5 "CSE - aggressive"
+; V04 cse1 [V04,T01] ( 3, 6 ) ref -> r7 hoist "CSE - aggressive"
+; V05 cse2 [V05,T03] ( 3, 6 ) int -> r6 hoist "CSE - aggressive"
+; TEMP_01 ref -> [r11-0x14]
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M56449_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_M56449_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_M56449_IG07
+ ble SHORT G_M56449_IG04
movw r6, 0xd1ff
movt r6, 0xd1ff
ldr r7, [r6]
; gcrRegs +[r7]
- ;; size=26 bbWeight=1 PerfScore 9.00
-G_M56449_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_M56449_IG06
- ;; size=8 bbWeight=4 PerfScore 16.00
-G_M56449_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_M56449_IG06
- ;; size=14 bbWeight=1 PerfScore 5.00
-G_M56449_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_M56449_IG06: ; bbWeight=4, gcrefRegs=0088 {r3 r7}, byrefRegs=0000 {}, byref, isz
+ ;; size=46 bbWeight=1 PerfScore 15.00
+G_M56449_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]
add r0, r6, 12
- 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_M56449_IG03
- ;; size=22 bbWeight=4 PerfScore 32.00
-G_M56449_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=44 bbWeight=4 PerfScore 60.00
+G_M56449_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=290d237e) for method PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier0-FullOpts)
+; Total bytes of code 106, prolog size 12, PerfScore 80.00, instruction count 35, allocated bytes for code 106 (MethodHash=290d237e) for method PerfLabTests.CastingPerf:IFooObjIsIFoo():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%) : 65618.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 hoist "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> r5 "CSE - aggressive"
+; V04 cse1 [V04,T01] ( 3, 6 ) ref -> r7 hoist "CSE - aggressive"
+; V05 cse2 [V05,T03] ( 3, 6 ) int -> r6 hoist "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
+10 (+10.64%) : 68360.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 hoist "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> r5 "CSE - aggressive"
+; V04 cse1 [V04,T01] ( 3, 6 ) ref -> r7 hoist "CSE - aggressive"
+; V05 cse2 [V05,T03] ( 3, 6 ) int -> r6 hoist "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
coreclr_tests.run.linux.arm.checked.mch
-30 (-44.12%) : 228664.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%) : 232239.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%) : 227717.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%) : 95390.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%) : 338853.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
@@ -11,75 +11,92 @@
;
; 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,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,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,T09] ( 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_IG12
- 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_IG16
+ 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_IG10
+ 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
- bne SHORT G_M8853_IG08
- ;; size=16 bbWeight=1 PerfScore 6.00
-G_M8853_IG06: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ bne SHORT G_M8853_IG11
+ ;; size=12 bbWeight=1 PerfScore 4.00
+G_M8853_IG09: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r4]
movs r0, 0
;; size=2 bbWeight=0.51 PerfScore 0.51
-G_M8853_IG07: ; bbWeight=0.51, epilog, nogc, extend
- pop {r4,r5,r6,r7,r11,pc}
+G_M8853_IG10: ; bbWeight=0.51, epilog, nogc, extend
+ pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=0.51 PerfScore 0.51
-G_M8853_IG08: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M8853_IG11: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r4]
- cmp r5, r6
- bne SHORT G_M8853_IG15
+ 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
@@ -87,20 +104,17 @@ G_M8853_IG08: ; 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_IG09: ; 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_IG12: ; 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_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r0]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M8853_IG11: ; bbWeight=0, epilog, nogc, extend
- pop {r4,r5,r6,r7,r11,pc}
+G_M8853_IG13: ; 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_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[r4]
+G_M8853_IG14: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r5]
mov r0, r4
; gcrRegs +[r0]
ldr r3, [r4]
@@ -110,17 +124,27 @@ G_M8853_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byre
; gcrRegs -[r0]
and r0, r0, 32
cmp r0, 32
- beq SHORT G_M8853_IG13
+ beq SHORT G_M8853_IG15
movs r3, 0
- b SHORT G_M8853_IG14
+ b SHORT G_M8853_IG16
;; size=22 bbWeight=0 PerfScore 0.00
-G_M8853_IG13: ; 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_IG14: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M8853_IG05
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M8853_IG15: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+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]
+ 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
+G_M8853_IG19: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[r4]
mov r0, r4
; gcrRegs +[r0]
ldr r3, [r4]
@@ -128,15 +152,10 @@ G_M8853_IG15: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
ldr r3, [r3+0x10]
blx r3 // <unknown method>
; gcrRegs -[r4]
- b SHORT G_M8853_IG09
+ b SHORT G_M8853_IG12
;; size=12 bbWeight=0 PerfScore 0.00
-G_M8853_IG16: ; 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.02, 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.77, instruction count 70, allocated bytes for code 180 (MethodHash=a7e7dd6a) for method System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
; ============================================================
Unwind Info:
@@ -148,7 +167,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)
@@ -164,7 +183,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%) : 103896.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.crossgen2.linux.arm.checked.mch
-32 (-43.24%) : 154506.dasm - System.Linq.ParallelQuery1+<>c__11[System.Canon,System.Canon]:b1_0(System.Canon):System.__Canon:this (FullOpts)
@@ -3,70 +3,49 @@
; FullOpts code
; ReadyToRun compilation
; 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 -> r6 this class-hnd single-def <System.Linq.ParallelQuery`1+<>c__1`1[System.__Canon,System.__Canon]>
-; V01 arg1 [V01,T01] ( 4, 3.12) ref -> r5 class-hnd single-def <System.__Canon>
+; V00 this [V00,T00] ( 3, 3 ) ref -> r5 this class-hnd single-def <System.Linq.ParallelQuery`1+<>c__1`1[System.__Canon,System.__Canon]>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> r6 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 -> r0 "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> r7 class-hnd "spilling QMark2" <System.__Canon>
+; V03 tmp1 [V03,T02] ( 2, 4 ) int -> r0 "argument with side effect"
;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M42611_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r8,r11,lr}
- sub sp, 12
- add r11, sp, 32
- str r0, [r11-0x1C]
- mov r6, r0
- ; gcrRegs +[r6]
- mov r5, r1
+ push {r2,r3,r4,r5,r6,lr}
+ str r0, [sp+0x04]
+ mov r5, r0
; gcrRegs +[r5]
- ;; size=18 bbWeight=1 PerfScore 6.00
-G_M42611_IG02: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
- mov r7, r5
- ; gcrRegs +[r7]
- cmp r7, 0
- beq SHORT G_M42611_IG05
- ;; size=6 bbWeight=1 PerfScore 3.00
-G_M42611_IG03: ; bbWeight=0.25, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
- ldr r8, [r7]
- ldr r0, [r6]
+ mov r6, r1
+ ; gcrRegs +[r6]
+ ;; size=8 bbWeight=1 PerfScore 4.00
+G_M42611_IG02: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref
+ ldr r0, [r5]
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
ldr r3, [r4]
blx r3 // CORINFO_HELP_READYTORUN_GENERIC_HANDLE
- cmp r8, r0
- beq SHORT G_M42611_IG05
- ;; size=24 bbWeight=0.25 PerfScore 2.25
-G_M42611_IG04: ; bbWeight=0.12, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r7]
- mov r1, r5
+ ; gcr arg pop 0
+ mov r1, r6
; gcrRegs +[r1]
movw r3, LOW RELOC 0xD1FFAB1E
movt r3, HIGH RELOC 0xD1FFAB1E
add r3, pc
ldr r3, [r3]
blx r3 // CORINFO_HELP_CHKCASTANY
- ; gcrRegs -[r1 r5] +[r0]
- mov r7, r0
- ; gcrRegs +[r7]
- ;; size=18 bbWeight=0.12 PerfScore 0.88
-G_M42611_IG05: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r0]
- mov r0, r7
- ; gcrRegs +[r0]
+ ; gcrRegs -[r1 r6] +[r0]
+ ; gcr arg pop 0
+ ;; size=32 bbWeight=1 PerfScore 12.00
+G_M42611_IG03: ; bbWeight=1, epilog, nogc, extend
+ pop {r2,r3,r4,r5,r6,pc}
;; size=2 bbWeight=1 PerfScore 1.00
-G_M42611_IG06: ; bbWeight=1, epilog, nogc, extend
- add sp, 12
- pop {r4,r5,r6,r7,r8,r11,pc}
- ;; size=6 bbWeight=1 PerfScore 2.00
-; Total bytes of code 74, prolog size 14, PerfScore 15.12, instruction count 28, allocated bytes for code 74 (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 42, prolog size 4, PerfScore 17.00, instruction count 17, allocated bytes for code 42 (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)
; ============================================================
Unwind Info:
@@ -78,11 +57,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 74 (0x00004a)
+ 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
- A9 F0 pop {r4,r5,r6,r7,r8,r11,lr} ; opsize 32
+ ED 7C pop {r2,r3,r4,r5,r6,lr} ; opsize 16
+ FF end
FF end
-32 (-43.24%) : 140587.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,49 @@
; FullOpts code
; ReadyToRun compilation
; 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 -> r6 this class-hnd single-def <System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]>
-; V01 arg1 [V01,T01] ( 4, 3.12) ref -> r5 class-hnd single-def <System.Collections.Generic.IDictionary`2[System.String,System.Object]>
+; V00 this [V00,T00] ( 3, 3 ) ref -> r5 this class-hnd single-def <System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> r6 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 -> r0 "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> r7 class-hnd "spilling QMark2" <System.__Canon>
+; V03 tmp1 [V03,T02] ( 2, 4 ) int -> r0 "argument with side effect"
;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M31417_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r8,r11,lr}
- sub sp, 12
- add r11, sp, 32
- str r0, [r11-0x1C]
- mov r6, r0
- ; gcrRegs +[r6]
- mov r5, r1
+ push {r2,r3,r4,r5,r6,lr}
+ str r0, [sp+0x04]
+ mov r5, r0
; gcrRegs +[r5]
- ;; size=18 bbWeight=1 PerfScore 6.00
-G_M31417_IG02: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
- mov r7, r5
- ; gcrRegs +[r7]
- cmp r7, 0
- beq SHORT G_M31417_IG05
- ;; size=6 bbWeight=1 PerfScore 3.00
-G_M31417_IG03: ; bbWeight=0.25, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
- ldr r8, [r7]
- ldr r0, [r6]
+ mov r6, r1
+ ; gcrRegs +[r6]
+ ;; size=8 bbWeight=1 PerfScore 4.00
+G_M31417_IG02: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref
+ ldr r0, [r5]
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
ldr r3, [r4]
blx r3 // CORINFO_HELP_READYTORUN_GENERIC_HANDLE
- cmp r8, r0
- beq SHORT G_M31417_IG05
- ;; size=24 bbWeight=0.25 PerfScore 2.25
-G_M31417_IG04: ; bbWeight=0.12, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r7]
- mov r1, r5
+ ; gcr arg pop 0
+ mov r1, r6
; gcrRegs +[r1]
movw r3, LOW RELOC 0xD1FFAB1E
movt r3, HIGH RELOC 0xD1FFAB1E
add r3, pc
ldr r3, [r3]
blx r3 // CORINFO_HELP_CHKCASTANY
- ; gcrRegs -[r1 r5] +[r0]
- mov r7, r0
- ; gcrRegs +[r7]
- ;; size=18 bbWeight=0.12 PerfScore 0.88
-G_M31417_IG05: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r0]
- mov r0, r7
- ; gcrRegs +[r0]
+ ; gcrRegs -[r1 r6] +[r0]
+ ; gcr arg pop 0
+ ;; size=32 bbWeight=1 PerfScore 12.00
+G_M31417_IG03: ; bbWeight=1, epilog, nogc, extend
+ pop {r2,r3,r4,r5,r6,pc}
;; size=2 bbWeight=1 PerfScore 1.00
-G_M31417_IG06: ; bbWeight=1, epilog, nogc, extend
- add sp, 12
- pop {r4,r5,r6,r7,r8,r11,pc}
- ;; size=6 bbWeight=1 PerfScore 2.00
-; Total bytes of code 74, prolog size 14, PerfScore 15.12, instruction count 28, allocated bytes for code 74 (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 42, prolog size 4, PerfScore 17.00, instruction count 17, allocated bytes for code 42 (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:
@@ -78,11 +57,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 74 (0x00004a)
+ 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
- A9 F0 pop {r4,r5,r6,r7,r8,r11,lr} ; opsize 32
+ ED 7C pop {r2,r3,r4,r5,r6,lr} ; opsize 16
+ FF end
FF end
-32 (-35.56%) : 167561.dasm - System.Threading.Tasks.Dataflow.Internal.SpscTargetCore`1+<>c[System.Canon]:b13_0(System.Object):this (FullOpts)
@@ -3,77 +3,58 @@
; FullOpts code
; ReadyToRun compilation
; 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 -> r6 this class-hnd single-def <System.Threading.Tasks.Dataflow.Internal.SpscTargetCore`1+<>c[System.__Canon]>
-; V01 arg1 [V01,T01] ( 4, 3.12) ref -> r5 class-hnd single-def <System.Object>
+; V00 this [V00,T00] ( 3, 3 ) ref -> r5 this class-hnd single-def <System.Threading.Tasks.Dataflow.Internal.SpscTargetCore`1+<>c[System.__Canon]>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> r6 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 -> r7 class-hnd "spilling QMark2" <<unknown class>>
+; V03 tmp1 [V03,T03] ( 2, 4 ) int -> r0 "argument with side effect"
+; V04 tmp2 [V04,T02] ( 2, 4 ) ref -> r0 single-def "argument with side effect"
;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M23169_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r8,r11,lr}
- sub sp, 12
- add r11, sp, 32
- str r0, [r11-0x1C]
- mov r6, r0
- ; gcrRegs +[r6]
- mov r5, r1
+ push {r2,r3,r4,r5,r6,lr}
+ str r0, [sp+0x04]
+ mov r5, r0
; gcrRegs +[r5]
- ;; size=18 bbWeight=1 PerfScore 6.00
-G_M23169_IG02: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
- mov r7, r5
- ; gcrRegs +[r7]
- cmp r7, 0
- beq SHORT G_M23169_IG05
- ;; size=6 bbWeight=1 PerfScore 3.00
-G_M23169_IG03: ; bbWeight=0.25, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
- ldr r8, [r7]
- ldr r0, [r6]
+ mov r6, r1
+ ; gcrRegs +[r6]
+ ;; size=8 bbWeight=1 PerfScore 4.00
+G_M23169_IG02: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref
+ ldr r0, [r5]
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
ldr r3, [r4]
blx r3 // CORINFO_HELP_READYTORUN_GENERIC_HANDLE
- cmp r8, r0
- beq SHORT G_M23169_IG05
- ;; size=24 bbWeight=0.25 PerfScore 2.25
-G_M23169_IG04: ; bbWeight=0.12, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r7]
- mov r1, r5
+ ; gcr arg pop 0
+ mov r1, r6
; gcrRegs +[r1]
movw r3, LOW RELOC 0xD1FFAB1E
movt r3, HIGH RELOC 0xD1FFAB1E
add r3, pc
ldr r3, [r3]
blx r3 // CORINFO_HELP_CHKCASTANY
- ; gcrRegs -[r1 r5] +[r0]
- mov r7, r0
- ; gcrRegs +[r7]
- ;; size=18 bbWeight=0.12 PerfScore 0.88
-G_M23169_IG05: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r0]
- mov r0, r7
- ; gcrRegs +[r0]
+ ; gcrRegs -[r1 r6] +[r0]
+ ; gcr arg pop 0
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
ldr r2, [r0]
ldr r3, [r4]
blx r3 // <unknown method>
- ; gcrRegs -[r0 r7]
- ;; size=18 bbWeight=1 PerfScore 7.00
-G_M23169_IG06: ; bbWeight=1, epilog, nogc, extend
- add sp, 12
- pop {r4,r5,r6,r7,r8,r11,pc}
- ;; size=6 bbWeight=1 PerfScore 2.00
+ ; gcrRegs -[r0]
+ ; gcr arg pop 0
+ ;; size=48 bbWeight=1 PerfScore 18.00
+G_M23169_IG03: ; bbWeight=1, epilog, nogc, extend
+ pop {r2,r3,r4,r5,r6,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 90, prolog size 14, PerfScore 21.12, instruction count 34, allocated bytes for code 90 (MethodHash=d2cca57e) for method System.Threading.Tasks.Dataflow.Internal.SpscTargetCore`1+<>c[System.__Canon]:<ScheduleConsumerIfNecessary>b__13_0(System.Object):this (FullOpts)
+; Total bytes of code 58, prolog size 4, PerfScore 23.00, instruction count 23, allocated bytes for code 58 (MethodHash=d2cca57e) for method System.Threading.Tasks.Dataflow.Internal.SpscTargetCore`1+<>c[System.__Canon]:<ScheduleConsumerIfNecessary>b__13_0(System.Object):this (FullOpts)
; ============================================================
Unwind Info:
@@ -85,11 +66,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 45 (0x0002d) Actual length = 90 (0x00005a)
+ Function Length : 29 (0x0001d) Actual length = 58 (0x00003a)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- 03 add sp, sp, #12 ; opsize 16
- A9 F0 pop {r4,r5,r6,r7,r8,r11,lr} ; opsize 32
+ ED 7C pop {r2,r3,r4,r5,r6,lr} ; opsize 16
+ FF end
FF end
+2 (+0.88%) : 126589.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PENamedTypeSymbol+VB$StateMachine156GetMembers`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
@@ -11,32 +11,35 @@
;
; V00 this [V00,T00] ( 23, 13 ) ref -> r5 this class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PENamedTypeSymbol+VB$StateMachine_156_GetMembers`1[System.__Canon]>
; V01 loc0 [V01,T03] ( 3, 2.50) int -> r0 single-def
-; V02 loc1 [V02,T09] ( 2, 1 ) int -> r0 single-def
-; V03 loc2 [V03,T10] ( 2, 1 ) int -> r2 single-def
-; V04 loc3 [V04,T05] ( 5, 2 ) ref -> r6 class-hnd <Microsoft.CodeAnalysis.VisualBasic.Symbol>
+; V02 loc1 [V02,T08] ( 2, 1 ) int -> r0 single-def
+; V03 loc2 [V03,T09] ( 2, 1 ) int -> r2 single-def
+; V04 loc3 [V04,T05] ( 3, 1.50) ref -> r6 class-hnd <Microsoft.CodeAnalysis.VisualBasic.Symbol>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) int -> zero-ref "dup spill"
-; V07 tmp2 [V07,T04] ( 3, 2.50) int -> r0 "fgMakeTemp is creating a new local variable"
-; V08 tmp3 [V08,T06] ( 3, 2 ) ref -> r1 class-hnd "spilling QMark2" <System.__Canon>
-;* V09 tmp4 [V09 ] ( 0, 0 ) int -> zero-ref "dup spill"
-;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref "dup spill"
-;* V11 tmp6 [V11 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V12 tmp7 [V12 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V13 tmp8 [V13 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V14 tmp9 [V14,T01] ( 3, 3 ) ref -> r0 "arr expr"
-; V15 tmp10 [V15,T02] ( 3, 3 ) int -> r3 "index expr"
-; V16 cse0 [V16,T07] ( 3, 1.50) int -> r0 "CSE - moderate"
-; V17 cse1 [V17,T08] ( 3, 1.50) int -> r3 "CSE - moderate"
+;* V07 tmp2 [V07 ] ( 0, 0 ) int -> zero-ref "dup spill"
+;* V08 tmp3 [V08 ] ( 0, 0 ) int -> zero-ref "dup spill"
+;* V09 tmp4 [V09 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V10 tmp5 [V10 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V11 tmp6 [V11 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V12 tmp7 [V12,T01] ( 3, 3 ) ref -> r0 "arr expr"
+; V13 tmp8 [V13,T02] ( 3, 3 ) int -> r3 "index expr"
+; V14 tmp9 [V14,T04] ( 2, 2 ) int -> r0 "argument with side effect"
+; V15 cse0 [V15,T06] ( 3, 1.50) int -> r0 "CSE - moderate"
+; V16 cse1 [V16,T07] ( 3, 1.50) int -> r3 "CSE - moderate"
+; TEMP_01 ref -> [r11-0x18]
;
-; Lcl frame size = 8
+; Lcl frame size = 12
G_M58417_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r2,r3,r4,r5,r6,r7,r11,lr}
+ push {r4,r5,r6,r11,lr}
+ sub sp, 12
add r11, sp, 24
+ movs r1, 0
+ str r1, [sp]
str r0, [r11-0x14]
mov r5, r0
; gcrRegs +[r5]
- ;; size=14 bbWeight=1 PerfScore 4.00
+ ;; size=20 bbWeight=1 PerfScore 7.00
G_M58417_IG02: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
ldr r0, [r5+0x08]
cmp r0, 0
@@ -44,14 +47,15 @@ G_M58417_IG02: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre
;; size=6 bbWeight=1 PerfScore 3.00
G_M58417_IG03: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
cmp r0, 1
- beq SHORT G_M58417_IG13
+ beq SHORT G_M58417_IG10
;; size=4 bbWeight=0.50 PerfScore 1.00
G_M58417_IG04: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
movs r0, 0
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M58417_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop {r2,r3,r4,r5,r6,r7,r11,pc}
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ add sp, 12
+ pop {r4,r5,r6,r11,pc}
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
G_M58417_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, isz
mov r1, -1
str r1, [r5+0x08]
@@ -89,7 +93,7 @@ G_M58417_IG08: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b
ldr r3, [r5+0x20]
ldr r2, [r0+0x04]
cmp r3, r2
- bhs SHORT G_M58417_IG14
+ bhs SHORT G_M58417_IG11
adds r0, 8
; gcrRegs -[r0]
; byrRegs +[r0]
@@ -109,17 +113,12 @@ G_M58417_IG08: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b
ldr r3, [r5+0x10]
cmp r0, r3
bne SHORT G_M58417_IG04
- ldr r7, [r6]
ldr r0, [r5]
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
ldr r3, [r4]
blx r3 // CORINFO_HELP_READYTORUN_GENERIC_HANDLE
- cmp r7, r0
- beq SHORT G_M58417_IG10
- ;; size=62 bbWeight=0.50 PerfScore 13.50
-G_M58417_IG09: ; bbWeight=0.25, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
mov r1, r6
; gcrRegs +[r1]
movw r3, LOW RELOC 0xD1FFAB1E
@@ -128,19 +127,12 @@ G_M58417_IG09: ; bbWeight=0.25, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}
ldr r3, [r3]
blx r3 // CORINFO_HELP_CHKCASTANY
; gcrRegs -[r1 r6] +[r0]
- mov r1, r0
- ; gcrRegs +[r1]
- b SHORT G_M58417_IG11
- ;; size=20 bbWeight=0.25 PerfScore 2.00
-G_M58417_IG10: ; bbWeight=0.25, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r0-r1] +[r6]
- mov r1, r6
- ; gcrRegs +[r1]
- ;; size=2 bbWeight=0.25 PerfScore 0.25
-G_M58417_IG11: ; bbWeight=0.50, gcrefRegs=0022 {r1 r5}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r6]
+ str r0, [sp]
adds r0, r5, 4
+ ; gcrRegs -[r0]
; byrRegs +[r0]
+ ldr r1, [sp]
+ ; gcrRegs +[r1]
movw r12, LOW RELOC 0xD1FFAB1E
movt r12, HIGH RELOC 0xD1FFAB1E
add r12, pc
@@ -150,11 +142,12 @@ G_M58417_IG11: ; bbWeight=0.50, gcrefRegs=0022 {r1 r5}, byrefRegs=0000 {}
; byrRegs -[r0]
movs r0, 1
str r0, [r5+0x08]
- ;; size=22 bbWeight=0.50 PerfScore 4.00
-G_M58417_IG12: ; bbWeight=0.50, epilog, nogc, extend
- pop {r2,r3,r4,r5,r6,r7,r11,pc}
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M58417_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=98 bbWeight=0.50 PerfScore 20.00
+G_M58417_IG09: ; bbWeight=0.50, epilog, nogc, extend
+ add sp, 12
+ pop {r4,r5,r6,r11,pc}
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
+G_M58417_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, isz
mov r0, -1
str r0, [r5+0x08]
ldr r0, [r5+0x20]
@@ -165,7 +158,7 @@ G_M58417_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0020 {r5},
ble SHORT G_M58417_IG08
b SHORT G_M58417_IG04
;; size=20 bbWeight=0.50 PerfScore 4.50
-G_M58417_IG14: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+G_M58417_IG11: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
movw r3, LOW RELOC 0xD1FFAB1E
movt r3, HIGH RELOC 0xD1FFAB1E
add r3, pc
@@ -174,7 +167,7 @@ G_M58417_IG14: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre
bkpt
;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 228, prolog size 12, PerfScore 45.25, instruction count 94, allocated bytes for code 228 (MethodHash=c8251bce) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PENamedTypeSymbol+VB$StateMachine_156_GetMembers`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 230, prolog size 18, PerfScore 49.50, instruction count 95, allocated bytes for code 230 (MethodHash=c8251bce) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PENamedTypeSymbol+VB$StateMachine_156_GetMembers`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -186,7 +179,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 114 (0x00072) Actual length = 228 (0x0000e4)
+ Function Length : 115 (0x00073) Actual length = 230 (0x0000e6)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -198,7 +191,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 FC pop {r2,r3,r4,r5,r6,r7,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
+2 (+0.90%) : 62872.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+d187`1[System.Canon]:MoveNext():ubyte:this (FullOpts)
@@ -11,29 +11,32 @@
;
; V00 this [V00,T00] ( 22, 12.50) ref -> r5 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+<GetMembers>d__187`1[System.__Canon]>
; V01 loc0 [V01,T03] ( 3, 2.50) int -> r0 single-def
-; V02 loc1 [V02,T05] ( 5, 2 ) ref -> r6 class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
+; V02 loc1 [V02,T05] ( 3, 1.50) ref -> r6 class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
;* V03 loc2 [V03 ] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T04] ( 3, 2.50) int -> r0 "fgMakeTemp is creating a new local variable"
-; V06 tmp2 [V06,T06] ( 3, 2 ) ref -> r1 class-hnd "spilling QMark2" <System.__Canon>
-;* V07 tmp3 [V07 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V08 tmp4 [V08 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V09 tmp5 [V09 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V10 tmp6 [V10,T01] ( 3, 3 ) ref -> r0 "arr expr"
-; V11 tmp7 [V11,T02] ( 3, 3 ) int -> r3 "index expr"
-; V12 cse0 [V12,T07] ( 3, 1.50) int -> r0 "CSE - moderate"
-; V13 cse1 [V13,T08] ( 3, 1.50) int -> r0 "CSE - moderate"
-; V14 cse2 [V14,T09] ( 3, 1.50) int -> r3 "CSE - moderate"
+;* V05 tmp1 [V05 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V06 tmp2 [V06 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V07 tmp3 [V07 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V08 tmp4 [V08,T01] ( 3, 3 ) ref -> r0 "arr expr"
+; V09 tmp5 [V09,T02] ( 3, 3 ) int -> r3 "index expr"
+; V10 tmp6 [V10,T04] ( 2, 2 ) int -> r0 "argument with side effect"
+; V11 cse0 [V11,T06] ( 3, 1.50) int -> r0 "CSE - moderate"
+; V12 cse1 [V12,T07] ( 3, 1.50) int -> r0 "CSE - moderate"
+; V13 cse2 [V13,T08] ( 3, 1.50) int -> r3 "CSE - moderate"
+; TEMP_01 ref -> [r11-0x18]
;
-; Lcl frame size = 8
+; Lcl frame size = 12
G_M27500_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r2,r3,r4,r5,r6,r7,r11,lr}
+ push {r4,r5,r6,r11,lr}
+ sub sp, 12
add r11, sp, 24
+ movs r1, 0
+ str r1, [sp]
str r0, [r11-0x14]
mov r5, r0
; gcrRegs +[r5]
- ;; size=14 bbWeight=1 PerfScore 4.00
+ ;; size=20 bbWeight=1 PerfScore 7.00
G_M27500_IG02: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
ldr r0, [r5+0x08]
cmp r0, 0
@@ -41,14 +44,15 @@ G_M27500_IG02: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre
;; size=6 bbWeight=1 PerfScore 3.00
G_M27500_IG03: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
cmp r0, 1
- beq SHORT G_M27500_IG13
+ beq SHORT G_M27500_IG10
;; size=4 bbWeight=0.50 PerfScore 1.00
G_M27500_IG04: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
movs r0, 0
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M27500_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop {r2,r3,r4,r5,r6,r7,r11,pc}
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ add sp, 12
+ pop {r4,r5,r6,r11,pc}
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
G_M27500_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, isz
mov r1, -1
str r1, [r5+0x08]
@@ -83,7 +87,7 @@ G_M27500_IG08: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b
ldr r3, [r5+0x24]
ldr r2, [r0+0x04]
cmp r3, r2
- bhs SHORT G_M27500_IG14
+ bhs SHORT G_M27500_IG11
adds r0, 8
; gcrRegs -[r0]
; byrRegs +[r0]
@@ -103,17 +107,12 @@ G_M27500_IG08: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b
ldr r3, [r5+0x18]
cmp r0, r3
bne SHORT G_M27500_IG04
- ldr r7, [r6]
ldr r0, [r5]
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
ldr r3, [r4]
blx r3 // CORINFO_HELP_READYTORUN_GENERIC_HANDLE
- cmp r7, r0
- beq SHORT G_M27500_IG10
- ;; size=62 bbWeight=0.50 PerfScore 13.50
-G_M27500_IG09: ; bbWeight=0.25, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
mov r1, r6
; gcrRegs +[r1]
movw r3, LOW RELOC 0xD1FFAB1E
@@ -122,19 +121,12 @@ G_M27500_IG09: ; bbWeight=0.25, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}
ldr r3, [r3]
blx r3 // CORINFO_HELP_CHKCASTANY
; gcrRegs -[r1 r6] +[r0]
- mov r1, r0
- ; gcrRegs +[r1]
- b SHORT G_M27500_IG11
- ;; size=20 bbWeight=0.25 PerfScore 2.00
-G_M27500_IG10: ; bbWeight=0.25, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r0-r1] +[r6]
- mov r1, r6
- ; gcrRegs +[r1]
- ;; size=2 bbWeight=0.25 PerfScore 0.25
-G_M27500_IG11: ; bbWeight=0.50, gcrefRegs=0022 {r1 r5}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r6]
+ str r0, [sp]
adds r0, r5, 4
+ ; gcrRegs -[r0]
; byrRegs +[r0]
+ ldr r1, [sp]
+ ; gcrRegs +[r1]
movw r12, LOW RELOC 0xD1FFAB1E
movt r12, HIGH RELOC 0xD1FFAB1E
add r12, pc
@@ -144,11 +136,12 @@ G_M27500_IG11: ; bbWeight=0.50, gcrefRegs=0022 {r1 r5}, byrefRegs=0000 {}
; byrRegs -[r0]
movs r0, 1
str r0, [r5+0x08]
- ;; size=22 bbWeight=0.50 PerfScore 4.00
-G_M27500_IG12: ; bbWeight=0.50, epilog, nogc, extend
- pop {r2,r3,r4,r5,r6,r7,r11,pc}
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M27500_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=98 bbWeight=0.50 PerfScore 20.00
+G_M27500_IG09: ; bbWeight=0.50, epilog, nogc, extend
+ add sp, 12
+ pop {r4,r5,r6,r11,pc}
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
+G_M27500_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, isz
mov r0, -1
str r0, [r5+0x08]
ldr r0, [r5+0x24]
@@ -159,7 +152,7 @@ G_M27500_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0020 {r5},
blt SHORT G_M27500_IG08
b SHORT G_M27500_IG04
;; size=20 bbWeight=0.50 PerfScore 4.50
-G_M27500_IG14: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+G_M27500_IG11: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
movw r3, LOW RELOC 0xD1FFAB1E
movt r3, HIGH RELOC 0xD1FFAB1E
add r3, pc
@@ -168,7 +161,7 @@ G_M27500_IG14: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre
bkpt
;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 222, prolog size 12, PerfScore 43.75, instruction count 91, allocated bytes for code 222 (MethodHash=bcbf9493) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+<GetMembers>d__187`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 224, prolog size 18, PerfScore 48.00, instruction count 92, allocated bytes for code 224 (MethodHash=bcbf9493) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+<GetMembers>d__187`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -180,7 +173,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 111 (0x0006f) Actual length = 222 (0x0000de)
+ Function Length : 112 (0x00070) Actual length = 224 (0x0000e0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -192,7 +185,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 FC pop {r2,r3,r4,r5,r6,r7,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
+4 (+1.10%) : 158593.dasm - Microsoft.Internal.Collections.WeakReferenceCollection1[System.__Canon]:AliveItemsToList():System.Collections.Generic.List1[System.__Canon]:this (FullOpts)
@@ -8,22 +8,21 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T07] ( 4, 4 ) ref -> [sp+0x04] this class-hnd EH-live single-def <Microsoft.Internal.Collections.WeakReferenceCollection`1[System.__Canon]>
+; V00 this [V00,T08] ( 4, 4 ) ref -> [sp+0x04] this class-hnd EH-live single-def <Microsoft.Internal.Collections.WeakReferenceCollection`1[System.__Canon]>
; V01 loc0 [V01,T11] ( 3, 4 ) ref -> r7 class-hnd exact single-def <System.Collections.Generic.List`1[System.__Canon]>
; V02 loc1 [V02 ] ( 6, 11 ) struct (16) [sp+0x0C] 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 -> r9 class-hnd <System.WeakReference>
-;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.__Canon>
+; V03 loc2 [V03,T05] ( 2, 8 ) ref -> r10 class-hnd <System.WeakReference>
+; V04 loc3 [V04,T04] ( 3, 10 ) ref -> r1 class-hnd <System.__Canon>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T08] ( 3, 6 ) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[System.__Canon]>
-; V07 tmp2 [V07,T01] ( 3, 17 ) ref -> r1 "CASTCLASS eval op1"
-; V08 tmp3 [V08,T10] ( 3, 5 ) int -> r10 "fgMakeTemp is creating a new local variable"
-; V09 tmp4 [V09,T00] ( 5, 23 ) ref -> r3 class-hnd "spilling QMark2" <System.__Canon>
-; V10 tmp5 [V10,T03] ( 2, 16 ) int -> [sp+0x08] spill-single-def "argument with side effect"
-; V11 tmp6 [V11,T02] ( 2, 16 ) ref -> r1 "argument with side effect"
-; V12 PSPSym [V12,T12] ( 1, 1 ) int -> [sp+0x20] do-not-enreg[V] "PSPSym"
-; V13 cse0 [V13,T05] ( 3, 9 ) int -> r10 "CSE - aggressive"
-; V14 cse1 [V14,T04] ( 7, 11 ) int -> r8 multi-def "CSE - aggressive"
-; V15 cse2 [V15,T09] ( 3, 6 ) int -> r6 "CSE - aggressive"
+; V06 tmp1 [V06,T09] ( 3, 6 ) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[System.__Canon]>
+;* V07 tmp2 [V07,T06] ( 0, 0 ) int -> zero-ref "argument with side effect"
+; V08 tmp3 [V08,T01] ( 2, 16 ) ref -> r1 "argument with side effect"
+; V09 tmp4 [V09,T00] ( 3, 24 ) int -> [sp+0x08] spill-single-def "argument with side effect"
+; V10 tmp5 [V10,T02] ( 2, 16 ) ref -> r1 "argument with side effect"
+; V11 PSPSym [V11,T12] ( 1, 1 ) int -> [sp+0x20] do-not-enreg[V] "PSPSym"
+; V12 cse0 [V12,T10] ( 1, 1 ) int -> r9 hoist "CSE - aggressive"
+; V13 cse1 [V13,T03] ( 7, 11 ) int -> r8 multi-def "CSE - aggressive"
+; V14 cse2 [V14,T07] ( 4, 7 ) int -> r6 "CSE - aggressive"
;
; Lcl frame size = 36
@@ -37,14 +36,14 @@ G_M63535_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
str r1, [sp+0x14] // [V02 loc1+0x08]
str r1, [sp+0x18] // [V02 loc1+0x0c]
add r1, sp, 72
- str r1, [sp+0x20] // [V12 PSPSym]
+ str r1, [sp+0x20] // [V11 PSPSym]
str r0, [r11-0x24]
str r0, [sp+0x04] // [V00 this]
; GC ptr vars +{V00}
mov r5, r0
; gcrRegs +[r5]
;; size=32 bbWeight=1 PerfScore 13.00
-G_M63535_IG02: ; bbWeight=1, gcVars=00000080 {V00}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref
+G_M63535_IG02: ; bbWeight=1, gcVars=00000100 {V00}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref
ldr r6, [r5]
mov r0, r6
movw r4, LOW RELOC 0xD1FFAB1E
@@ -96,8 +95,16 @@ G_M63535_IG03: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b
blx r3 // <unknown method>
; gcr arg pop 0
cmp r0, 0
- beq SHORT G_M63535_IG09
- ;; size=36 bbWeight=1 PerfScore 13.00
+ beq SHORT G_M63535_IG07
+ mov r0, r6
+ movw r4, LOW RELOC 0xD1FFAB1E
+ movt r4, HIGH RELOC 0xD1FFAB1E
+ add r4, pc
+ ldr r3, [r4]
+ blx r3 // CORINFO_HELP_READYTORUN_GENERIC_HANDLE
+ ; gcr arg pop 0
+ mov r9, r0
+ ;; size=54 bbWeight=1 PerfScore 20.00
G_M63535_IG04: ; bbWeight=4, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
mov r1, r8
add r0, sp, 12
@@ -108,8 +115,8 @@ G_M63535_IG04: ; bbWeight=4, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b
blx r3 // <unknown method>
; gcrRegs +[r0]
; gcr arg pop 0
- mov r9, r0
- ; gcrRegs +[r9]
+ mov r10, r0
+ ; gcrRegs +[r10]
mov r0, r6
; gcrRegs -[r0]
movw r4, LOW RELOC 0xD1FFAB1E
@@ -118,21 +125,20 @@ G_M63535_IG04: ; bbWeight=4, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b
ldr r3, [r4]
blx r3 // CORINFO_HELP_READYTORUN_GENERIC_HANDLE
; gcr arg pop 0
- mov r10, r0
- str r10, [sp+0x08] // [V10 tmp5]
- mov r0, r9
+ str r0, [sp+0x08] // [V09 tmp4]
+ mov r0, r10
; gcrRegs +[r0]
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
- ldr r1, [r0]
- ldr r2, [r4]
- blx r2 // <unknown method>
- ; gcrRegs -[r9]
+ ldr r2, [r0]
+ ldr r3, [r4]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r10]
; gcr arg pop 0
mov r1, r0
; gcrRegs +[r1]
- ldr r0, [sp+0x08] // [V10 tmp5]
+ ldr r0, [sp+0x08] // [V09 tmp4]
; gcrRegs -[r0]
movw r3, LOW RELOC 0xD1FFAB1E
movt r3, HIGH RELOC 0xD1FFAB1E
@@ -143,20 +149,8 @@ G_M63535_IG04: ; bbWeight=4, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b
; gcr arg pop 0
mov r1, r0
; gcrRegs +[r1]
- mov r3, r1
- ; gcrRegs +[r3]
- cmp r3, 0
- beq SHORT G_M63535_IG08
- ;; size=86 bbWeight=4 PerfScore 136.00
-G_M63535_IG05: ; bbWeight=1, gcrefRegs=00AA {r1 r3 r5 r7}, byrefRegs=0000 {}, byref, isz
+ ldr r0, [sp+0x08] // [V09 tmp4]
; gcrRegs -[r0]
- ldr r0, [r3]
- cmp r0, r10
- beq SHORT G_M63535_IG07
- ;; size=6 bbWeight=1 PerfScore 3.00
-G_M63535_IG06: ; bbWeight=0.50, gcrefRegs=00A2 {r1 r5 r7}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r3]
- mov r0, r10
movw r3, LOW RELOC 0xD1FFAB1E
movt r3, HIGH RELOC 0xD1FFAB1E
add r3, pc
@@ -164,25 +158,24 @@ G_M63535_IG06: ; bbWeight=0.50, gcrefRegs=00A2 {r1 r5 r7}, byrefRegs=0000
blx r3 // CORINFO_HELP_CHKCASTANY
; gcrRegs -[r1] +[r0]
; gcr arg pop 0
- mov r3, r0
- ; gcrRegs +[r3]
- ;; size=18 bbWeight=0.50 PerfScore 3.50
-G_M63535_IG07: ; bbWeight=2, gcrefRegs=00A8 {r3 r5 r7}, byrefRegs=0000 {}, byref
+ mov r1, r0
+ ; gcrRegs +[r1]
+ cmp r1, 0
+ beq SHORT G_M63535_IG06
+ ;; size=98 bbWeight=4 PerfScore 156.00
+G_M63535_IG05: ; bbWeight=2, gcrefRegs=00A2 {r1 r5 r7}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
mov r0, r7
; gcrRegs +[r0]
- mov r1, r3
- ; gcrRegs +[r1]
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
ldr r3, [r4]
- ; gcrRegs -[r3]
blx r3 // <unknown method>
; gcrRegs -[r0-r1]
; gcr arg pop 0
- ;; size=18 bbWeight=2 PerfScore 14.00
-G_M63535_IG08: ; bbWeight=4, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=2 PerfScore 12.00
+G_M63535_IG06: ; bbWeight=4, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
mov r1, r8
add r0, sp, 12 // [V02 loc1]
movw r4, LOW RELOC 0xD1FFAB1E
@@ -194,7 +187,7 @@ G_M63535_IG08: ; bbWeight=4, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b
cmp r0, 0
bne SHORT G_M63535_IG04
;; size=22 bbWeight=4 PerfScore 36.00
-G_M63535_IG09: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref
+G_M63535_IG07: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref
mov r1, r8
add r0, sp, 12 // [V02 loc1]
movw r4, LOW RELOC 0xD1FFAB1E
@@ -206,17 +199,17 @@ G_M63535_IG09: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b
mov r0, r7
; gcrRegs +[r0]
;; size=20 bbWeight=1 PerfScore 8.00
-G_M63535_IG10: ; bbWeight=1, epilog, nogc, extend
+G_M63535_IG08: ; bbWeight=1, epilog, nogc, extend
add sp, 36
pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00
-G_M63535_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M63535_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs -[r0 r5 r7]
push {r3,r4,r5,r6,r7,r8,r9,r10,r11,lr}
add r3, r11, 8
str r3, [sp]
;; size=10 bbWeight=0 PerfScore 0.00
-G_M63535_IG12: ; bbWeight=0, gcVars=00000080 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M63535_IG10: ; bbWeight=0, gcVars=00000100 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movw r1, LOW RELOC 0xD1FFAB1E
movt r1, HIGH RELOC 0xD1FFAB1E
add r1, pc
@@ -230,11 +223,11 @@ G_M63535_IG12: ; bbWeight=0, gcVars=00000080 {V00}, gcrefRegs=0000 {}, by
blx r3 // <unknown method>
; gcr arg pop 0
;; size=34 bbWeight=0 PerfScore 0.00
-G_M63535_IG13: ; bbWeight=0, funclet epilog, nogc, extend
+G_M63535_IG11: ; bbWeight=0, funclet epilog, nogc, extend
pop {r3,r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 362, prolog size 32, PerfScore 255.50, instruction count 138, allocated bytes for code 362 (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 366, prolog size 32, PerfScore 274.00, instruction count 139, allocated bytes for code 366 (MethodHash=4d8107d0) for method Microsoft.Internal.Collections.WeakReferenceCollection`1[System.__Canon]:AliveItemsToList():System.Collections.Generic.List`1[System.__Canon]:this (FullOpts)
; ============================================================
Unwind Info:
@@ -246,7 +239,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 157 (0x0009d) Actual length = 314 (0x00013a)
+ Function Length : 159 (0x0009f) Actual length = 318 (0x00013e)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
@@ -274,4 +267,4 @@ Unwind Info:
*************** EH table for Microsoft.Internal.Collections.WeakReferenceCollection`1[System.__Canon]:AliveItemsToList():System.Collections.Generic.List`1[System.__Canon]:this
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M63535_IG03..G_M63535_IG09) handled by [G_M63535_IG11..END) (fault)
+EH#0: try [G_M63535_IG03..G_M63535_IG07) handled by [G_M63535_IG09..END) (fault)
libraries.pmi.linux.arm.checked.mch
-28 (-51.85%) : 231703.dasm - System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]:b__1_0(System.Collections.Generic.IDictionary`2[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
-22 (-47.83%) : 15453.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
-22 (-47.83%) : 262078.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
+46 (+2.41%) : 112623.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%) : 181296.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%) : 253829.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%) : 622994.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 18156
; 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%) : 594528.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 189
; 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%) : 332333.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%) : 208603.dasm - System.Collections.Immutable.ImmutableSortedSet1[System.__Canon]:TryCastToImmutableSortedSet(System.Collections.Generic.IEnumerable1[System.__Canon],byref):ubyte (Tier1)
@@ -8,91 +8,87 @@
; with Dynamic PGO: edge weights are valid, and fgCalledCount is 3
; 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.__Canon]>
-; 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.ImmutableSortedSet`1+Builder[System.__Canon]>
+; 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.__Canon]>
+; 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.ImmutableSortedSet`1+Builder[System.__Canon]>
;# 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.ImmutableSortedSet`1[System.__Canon]>
-;* 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_M53879_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_M53879_IG02: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz
- mov r1, r5
- ; gcrRegs +[r1]
- cmp r1, 0
- beq SHORT G_M53879_IG05
- ;; size=6 bbWeight=1 PerfScore 3.00
-G_M53879_IG03: ; bbWeight=0.50, gcrefRegs=0022 {r1 r5}, byrefRegs=0010 {r4}, byref, isz
- ldr r0, [r1]
- cmp r0, r2
- beq SHORT G_M53879_IG05
- ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M53879_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_M53879_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_M53879_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_M53879_IG07
+ beq SHORT G_M53879_IG04
movs r0, 1
; gcrRegs -[r0]
- ;; size=20 bbWeight=1 PerfScore 8.00
-G_M53879_IG06: ; bbWeight=1, epilog, nogc, extend
- pop {r2,r3,r4,r5,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M53879_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_M53879_IG03: ; bbWeight=1, epilog, nogc, extend
+ add sp, 12
+ pop {r4,r5,r6,r11,pc}
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M53879_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0040 {r6}, byrefRegs=0020 {r5}, gcvars, byref, isz
+ ldr r0, [r4+0x24]
ldr r0, [r0]
ldr r0, [r0+0x20]
cmp r0, 0
- beq SHORT G_M53879_IG08
- b SHORT G_M53879_IG09
+ beq SHORT G_M53879_IG05
+ b SHORT G_M53879_IG06
;; size=12 bbWeight=0 PerfScore 0.00
-G_M53879_IG08: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref
- mov r0, r2
+G_M53879_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_M53879_IG09: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz
- mov r1, r5
+G_M53879_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_M53879_IG11
+ beq SHORT G_M53879_IG08
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
@@ -100,27 +96,29 @@ G_M53879_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_M53879_IG10: ; bbWeight=0, epilog, nogc, extend
- pop {r2,r3,r4,r5,r11,pc}
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M53879_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M53879_IG07: ; bbWeight=0, epilog, nogc, extend
+ add sp, 12
+ pop {r4,r5,r6,r11,pc}
+ ;; size=6 bbWeight=0 PerfScore 0.00
+G_M53879_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movs r0, 0
;; size=2 bbWeight=0 PerfScore 0.00
-G_M53879_IG12: ; bbWeight=0, epilog, nogc, extend
- pop {r2,r3,r4,r5,r11,pc}
- ;; size=4 bbWeight=0 PerfScore 0.00
+G_M53879_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=61de2d88) for method System.Collections.Immutable.ImmutableSortedSet`1[System.__Canon]:TryCastToImmutableSortedSet(System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (Tier1)
+; Total bytes of code 160, prolog size 18, PerfScore 26.00, instruction count 60, allocated bytes for code 160 (MethodHash=61de2d88) for method System.Collections.Immutable.ImmutableSortedSet`1[System.__Canon]:TryCastToImmutableSortedSet(System.Collections.Generic.IEnumerable`1[System.__Canon],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
+18 (+8.57%) : 711850.dasm - System.Threading.Tasks.TaskFactory1+<>c[System.Threading.Tasks.VoidTaskResult]:<ContinueWhenAllImpl>b__57_1(System.Threading.Tasks.Task1[System.Threading.Tasks.Task[]],System.Object):System.Threading.Tasks.VoidTaskResult: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.TaskFactory`1+<>c[System.Threading.Tasks.VoidTaskResult]>
-; V01 arg1 [V01,T02] ( 6, 4.50) ref -> r4 class-hnd single-def <System.Threading.Tasks.Task`1[System.Threading.Tasks.Task[]]>
-; V02 arg2 [V02,T03] ( 6, 4.13) ref -> r5 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T02] ( 7, 4.50) ref -> r4 class-hnd single-def <System.Threading.Tasks.Task`1[System.Threading.Tasks.Task[]]>
+; V02 arg2 [V02,T03] ( 6, 4.00) ref -> r5 class-hnd single-def <System.Object>
;* V03 loc0 [V03 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Threading.Tasks.VoidTaskResult>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T05] ( 3, 1.25) int -> r1 "fgMakeTemp is creating a new local variable"
-; V06 tmp2 [V06,T00] ( 8, 7.95) ref -> r6 class-hnd "spilling QMark2" <System.Action`1[System.Threading.Tasks.Task[]]>
-;* V07 tmp3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling ret_expr" <System.Threading.Tasks.Task[]>
-;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp" <System.Threading.Tasks.Tests.CESchedulerPairTests+<>c__DisplayClass9_0>
-; V09 tmp5 [V09,T06] ( 3, 0.60) ref -> r1 class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task[]>
-; V10 rat0 [V10,T01] ( 5, 7.00) ref -> r3 class-hnd "replacement local" <System.Action`1[System.Threading.Tasks.Task[]]>
-; V11 rat1 [V11,T04] ( 3, 2.40) ref -> r3 "delegate invoke call"
+; V05 tmp1 [V05,T04] ( 6, 5.20) ref -> r6 class-hnd single-def "impAppendStmt" <System.Action`1[System.Threading.Tasks.Task[]]>
+;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling ret_expr" <System.Threading.Tasks.Task[]>
+;* V07 tmp3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp" <System.Threading.Tasks.Tests.CESchedulerPairTests+<>c__DisplayClass9_0>
+; V08 tmp4 [V08,T06] ( 3, 0.60) ref -> r1 class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task[]>
+; V09 rat0 [V09,T01] ( 5, 7.00) ref -> r3 class-hnd "replacement local" <System.Action`1[System.Threading.Tasks.Task[]]>
+; V10 rat1 [V10,T00] ( 6, 7.00) ref -> r6 class-hnd "replacement local" <System.Action`1[System.Threading.Tasks.Task[]]>
+; V11 rat2 [V11,T05] ( 3, 2.40) ref -> r3 "delegate invoke call"
;
; Lcl frame size = 4
@@ -49,7 +49,7 @@ G_M33307_IG03: ; bbWeight=0.50, gcrefRegs=0038 {r3 r4 r5}, byrefRegs=0000
movw r2, 0xd1ff
movt r2, 0xd1ff
cmp r0, r2
- bne SHORT G_M33307_IG16
+ bne SHORT G_M33307_IG15
;; size=14 bbWeight=0.50 PerfScore 2.50
G_M33307_IG04: ; bbWeight=1.00, gcrefRegs=0038 {r3 r4 r5}, byrefRegs=0000 {}, byref, isz
cmp r3, 0
@@ -69,9 +69,16 @@ G_M33307_IG06: ; bbWeight=1.00, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
mov r6, r5
; gcrRegs +[r6]
cmp r6, 0
- bne SHORT G_M33307_IG09
+ beq SHORT G_M33307_IG08
;; size=18 bbWeight=1.00 PerfScore 7.00
-G_M33307_IG07: ; bbWeight=1.00, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref, isz
+G_M33307_IG07: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+ ldr r0, [r6]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r0, r3
+ bne SHORT G_M33307_IG16
+ ;; size=14 bbWeight=0.50 PerfScore 2.50
+G_M33307_IG08: ; bbWeight=1.00, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r5]
ldr r0, [r4+0x1C]
dmb 15
@@ -79,41 +86,19 @@ G_M33307_IG07: ; bbWeight=1.00, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}
cmp r0, 0x1000000
bne SHORT G_M33307_IG17
;; size=16 bbWeight=1.00 PerfScore 5.00
-G_M33307_IG08: ; bbWeight=0.50, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref, isz
+G_M33307_IG09: ; bbWeight=0.50, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref
ldr r1, [r4+0x20]
; gcrRegs +[r1]
- b SHORT G_M33307_IG11
- ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M33307_IG09: ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r1] +[r5]
- ldr r0, [r6]
- movw r1, 0xd1ff
- movt r1, 0xd1ff
- cmp r0, r1
- beq SHORT G_M33307_IG07
- ;; size=14 bbWeight=0.25 PerfScore 1.25
-G_M33307_IG10: ; bbWeight=0.13, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r6]
- mov r0, r1
- mov r1, r5
- ; gcrRegs +[r1]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_CHKCASTANY
- ; gcrRegs -[r1 r5] +[r0]
- mov r6, r0
- ; gcrRegs +[r6]
- b SHORT G_M33307_IG07
- ;; size=18 bbWeight=0.13 PerfScore 0.88
-G_M33307_IG11: ; bbWeight=1, gcrefRegs=0042 {r1 r6}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0 r4] +[r1]
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
+G_M33307_IG10: ; bbWeight=1, gcrefRegs=0042 {r1 r6}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r4]
ldr r0, [r6+0x0C]
movw r3, 0xd1ff
movt r3, 0xd1ff
cmp r0, r3
- bne SHORT G_M33307_IG13
+ bne SHORT G_M33307_IG12
;; size=14 bbWeight=1 PerfScore 5.00
-G_M33307_IG12: ; bbWeight=0.40, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz
+G_M33307_IG11: ; bbWeight=0.40, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r1]
ldr r0, [r6+0x04]
; gcrRegs +[r0]
@@ -124,9 +109,9 @@ G_M33307_IG12: ; bbWeight=0.40, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, b
; gcrRegs -[r3]
blx r3 // <unknown method>
; gcrRegs -[r0 r6]
- b SHORT G_M33307_IG14
+ b SHORT G_M33307_IG13
;; size=12 bbWeight=0.40 PerfScore 2.40
-G_M33307_IG13: ; bbWeight=0.10, gcrefRegs=0042 {r1 r6}, byrefRegs=0000 {}, byref
+G_M33307_IG12: ; bbWeight=0.10, gcrefRegs=0042 {r1 r6}, byrefRegs=0000 {}, byref
; gcrRegs +[r1 r6]
ldr r0, [r6+0x04]
; gcrRegs +[r0]
@@ -134,13 +119,13 @@ G_M33307_IG13: ; bbWeight=0.10, gcrefRegs=0042 {r1 r6}, byrefRegs=0000 {}
blx r3 // System.Action`1[System.__Canon]:Invoke(System.__Canon):this
; gcrRegs -[r0-r1 r6]
;; size=6 bbWeight=0.10 PerfScore 0.30
-G_M33307_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M33307_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r0, 0
;; size=2 bbWeight=1 PerfScore 1.00
-G_M33307_IG15: ; bbWeight=1, epilog, nogc, extend
+G_M33307_IG14: ; bbWeight=1, epilog, nogc, extend
pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M33307_IG16: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M33307_IG15: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r4-r5]
mov r1, r5
; gcrRegs +[r1]
@@ -154,8 +139,26 @@ G_M33307_IG16: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5},
; gcrRegs +[r3]
b SHORT G_M33307_IG04
;; size=24 bbWeight=0 PerfScore 0.00
+G_M33307_IG16: ; bbWeight=0, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0 r3]
+ mov r1, r5
+ ; gcrRegs +[r1]
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ blx r3 // CORINFO_HELP_CHKCASTANY
+ ; gcrRegs -[r1 r5] +[r0]
+ mov r6, r0
+ ; gcrRegs +[r6]
+ ldr r0, [r4+0x1C]
+ ; gcrRegs -[r0]
+ dmb 15
+ and r0, r0, 0x11000000
+ cmp r0, 0x1000000
+ beq SHORT G_M33307_IG09
+ ;; size=38 bbWeight=0 PerfScore 0.00
G_M33307_IG17: ; bbWeight=0, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0 r3 r5] +[r6]
mov r0, r4
; gcrRegs +[r0]
movs r1, 1
@@ -166,10 +169,10 @@ G_M33307_IG17: ; bbWeight=0, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, b
; gcrRegs -[r4]
mov r1, r0
; gcrRegs +[r1]
- b SHORT G_M33307_IG11
+ b SHORT G_M33307_IG10
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 210, prolog size 8, PerfScore 45.33, instruction count 81, allocated bytes for code 210 (MethodHash=28937de4) for method 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)
+; Total bytes of code 228, prolog size 8, PerfScore 45.20, instruction count 85, allocated bytes for code 228 (MethodHash=28937de4) for method 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)
; ============================================================
Unwind Info:
@@ -181,7 +184,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 105 (0x00069) Actual length = 210 (0x0000d2)
+ Function Length : 114 (0x00072) Actual length = 228 (0x0000e4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+26 (+14.94%) : 248375.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
@@ -9,92 +9,109 @@
; 3 inlinees with PGO data; 9 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 11, 6.65) ref -> r4 class-hnd single-def <System.Type>
+; V00 arg0 [V00,T00] ( 11, 6.47) 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,T09] ( 3, 1.65) 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,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,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,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, 2.82) int -> r5 "CSE - aggressive"
-; V18 cse1 [V18,T05] ( 3, 3 ) int -> r0 "CSE - aggressive"
-; V19 cse2 [V19,T03] ( 3, 2.82) 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,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_IG17
- 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_IG20
+ ldr r6, [r5+0x0C]
+ ands r0, r6, 2
cmp r0, 0
- bne SHORT G_M8853_IG16
+ bne SHORT G_M8853_IG19
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
- uxtb r3, r7
+G_M8853_IG09: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+ uxtb r3, r6
;; size=2 bbWeight=1 PerfScore 1.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]
cmp r3, 0
- bne SHORT G_M8853_IG13
+ bne SHORT G_M8853_IG16
;; size=4 bbWeight=1 PerfScore 2.00
-G_M8853_IG08: ; bbWeight=0.82, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M8853_IG11: ; bbWeight=0.82, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
movw r0, 0xd1ff
movt r0, 0xd1ff
cmp r4, r0
- bne SHORT G_M8853_IG11
+ bne SHORT G_M8853_IG14
;; size=12 bbWeight=0.82 PerfScore 3.30
-G_M8853_IG09: ; bbWeight=0.53, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M8853_IG12: ; bbWeight=0.53, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r4]
movs r0, 0
;; size=2 bbWeight=0.53 PerfScore 0.53
-G_M8853_IG10: ; bbWeight=0.53, epilog, nogc, extend
- pop {r4,r5,r6,r7,r11,pc}
+G_M8853_IG13: ; bbWeight=0.53, epilog, nogc, extend
+ pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=0.53 PerfScore 0.53
-G_M8853_IG11: ; bbWeight=0.82, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M8853_IG14: ; bbWeight=0.82, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r4]
- cmp r5, r6
- bne SHORT G_M8853_IG15
+ 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
@@ -102,19 +119,19 @@ G_M8853_IG11: ; bbWeight=0.82, gcVars=00000000 {}, gcrefRegs=0010 {r4}, b
ldr r3, [r3]
blx r3 // <unknown method>
; gcrRegs -[r4]
- ;; size=18 bbWeight=0.82 PerfScore 5.77
-G_M8853_IG12: ; bbWeight=0.82, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
- pop {r4,r5,r6,r7,r11,pc}
+ ;; size=28 bbWeight=0.82 PerfScore 8.24
+G_M8853_IG15: ; bbWeight=0.82, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=0.82 PerfScore 0.82
-G_M8853_IG13: ; bbWeight=0.18, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M8853_IG16: ; bbWeight=0.18, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0]
movw r0, 0xd1ff
movt r0, 0xd1ff
;; size=8 bbWeight=0.18 PerfScore 0.35
-G_M8853_IG14: ; bbWeight=0.18, epilog, nogc, extend
- pop {r4,r5,r6,r7,r11,pc}
+G_M8853_IG17: ; bbWeight=0.18, epilog, nogc, extend
+ pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=0.18 PerfScore 0.18
-G_M8853_IG15: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M8853_IG18: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r4]
mov r0, r4
; gcrRegs +[r0]
@@ -123,14 +140,15 @@ G_M8853_IG15: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byre
ldr r3, [r3+0x10]
blx r3 // <unknown method>
; gcrRegs -[r4]
- b SHORT G_M8853_IG12
+ b SHORT G_M8853_IG15
;; size=12 bbWeight=0 PerfScore 0.00
-G_M8853_IG16: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0] +[r4]
- movs r7, 0
- b SHORT G_M8853_IG06
+G_M8853_IG19: ; bbWeight=0, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0] +[r4-r5]
+ movs r6, 0
+ b SHORT G_M8853_IG09
;; size=4 bbWeight=0 PerfScore 0.00
-G_M8853_IG17: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M8853_IG20: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r5]
mov r0, r4
; gcrRegs +[r0]
ldr r3, [r4]
@@ -140,18 +158,18 @@ G_M8853_IG17: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
and r0, r0, 32
cmp r0, 32
- beq SHORT G_M8853_IG18
+ beq SHORT G_M8853_IG21
movs r3, 0
- b SHORT G_M8853_IG19
+ b SHORT G_M8853_IG22
;; size=22 bbWeight=0 PerfScore 0.00
-G_M8853_IG18: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M8853_IG21: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
movs r3, 1
;; size=2 bbWeight=0 PerfScore 0.00
-G_M8853_IG19: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M8853_IG07
+G_M8853_IG22: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M8853_IG10
;; size=2 bbWeight=0 PerfScore 0.00
-; Total bytes of code 174, prolog size 8, PerfScore 42.49, instruction count 68, allocated bytes for code 174 (MethodHash=a7e7dd6a) for method System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
+; Total bytes of code 200, prolog size 8, PerfScore 48.71, instruction count 78, allocated bytes for code 200 (MethodHash=a7e7dd6a) for method System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
; ============================================================
Unwind Info:
@@ -163,7 +181,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 87 (0x00057) Actual length = 174 (0x0000ae)
+ Function Length : 100 (0x00064) Actual length = 200 (0x0000c8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -179,7 +197,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
...
librariestestsnotieredcompilation.run.linux.arm.Release.mch
-28 (-51.85%) : 87782.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 (-51.85%) : 133670.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 (-50.00%) : 42793.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%) : 94381.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%) : 93867.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%) : 95863.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%) : 37680.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%) : 435.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%) : 14956.dasm - FSharp.Compiler.CodeAnalysis.TcInfoState:get_TcInfoExtras():Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CodeAnalysis.TcInfoExtras]:this (FullOpts)
@@ -11,10 +11,8 @@
; V00 this [V00,T00] ( 4, 3.50) ref -> r4 this class-hnd single-def <FSharp.Compiler.CodeAnalysis.TcInfoState>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03,T04] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V04 tmp2 [V04,T02] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-; V05 tmp3 [V05,T03] ( 2, 2 ) ref -> r4 class-hnd exact single-def "Inlining Arg" <FSharp.Compiler.CodeAnalysis.TcInfoExtras>
-; V06 tmp4 [V06,T01] ( 3, 3 ) ref -> r2 class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CodeAnalysis.TcInfoExtras]>
+; V03 tmp1 [V03,T02] ( 2, 2 ) ref -> r4 class-hnd exact single-def "Inlining Arg" <FSharp.Compiler.CodeAnalysis.TcInfoExtras>
+; V04 tmp2 [V04,T01] ( 3, 3 ) ref -> r2 class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CodeAnalysis.TcInfoExtras]>
;
; Lcl frame size = 0
+2 (+0.24%) : 30098.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%) : 37058.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 |
94 |
81 |
12 |
1 |
-1,422 |
+96 |
| benchmarks.run_pgo.linux.arm.checked.mch |
2,156 |
2,136 |
17 |
3 |
-33,568 |
+276 |
| benchmarks.run_tiered.linux.arm.checked.mch |
67 |
58 |
8 |
1 |
-1,012 |
+76 |
| coreclr_tests.run.linux.arm.checked.mch |
231 |
190 |
27 |
14 |
-2,984 |
+400 |
| libraries.crossgen2.linux.arm.checked.mch |
721 |
716 |
4 |
1 |
-17,464 |
+10 |
| libraries.pmi.linux.arm.checked.mch |
502 |
466 |
15 |
21 |
-10,200 |
+120 |
| libraries_tests.run.linux.arm.Release.mch |
1,360 |
1,240 |
76 |
44 |
-22,716 |
+990 |
| librariestestsnotieredcompilation.run.linux.arm.Release.mch |
625 |
589 |
21 |
15 |
-13,146 |
+728 |
| realworld.run.linux.arm.checked.mch |
123 |
117 |
2 |
4 |
-2,210 |
+12 |
|
5,879 |
5,593 |
182 |
104 |
-104,722 |
+2,708 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.linux.arm.checked.mch |
41,847 |
5,279 |
36,568 |
1,423 (3.00%) |
5,553 (11.72%) |
| benchmarks.run_pgo.linux.arm.checked.mch |
141,075 |
58,093 |
82,982 |
3,553 (2.18%) |
21,752 (13.36%) |
| benchmarks.run_tiered.linux.arm.checked.mch |
68,259 |
38,077 |
30,182 |
1,124 (1.55%) |
4,220 (5.82%) |
| coreclr_tests.run.linux.arm.checked.mch |
461,427 |
259,093 |
202,334 |
7,618 (1.59%) |
17,614 (3.68%) |
| libraries.crossgen2.linux.arm.checked.mch |
195,437 |
14 |
195,423 |
0 (0.00%) |
4 (0.00%) |
| libraries.pmi.linux.arm.checked.mch |
243,363 |
6 |
243,357 |
9,462 (3.39%) |
36,066 (12.91%) |
| libraries_tests.run.linux.arm.Release.mch |
666,625 |
442,850 |
223,775 |
17,521 (2.41%) |
59,156 (8.15%) |
| librariestestsnotieredcompilation.run.linux.arm.Release.mch |
239,305 |
21,565 |
217,740 |
35,091 (11.40%) |
68,550 (22.27%) |
| realworld.run.linux.arm.checked.mch |
31,756 |
153 |
31,603 |
1,734 (4.59%) |
6,048 (16.00%) |
|
2,089,094 |
825,130 |
1,263,964 |
77,526 (3.36%) |
218,963 (9.49%) |
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: 8924596 (overridden on cmd)
Total bytes of diff: 8923270 (overridden on cmd)
Total bytes of delta: -1326 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
10 : 17169.dasm (10.42 % of base)
10 : 18989.dasm (10.42 % of base)
10 : 45756.dasm (10.42 % of base)
10 : 14614.dasm (10.42 % of base)
10 : 43489.dasm (10.64 % of base)
10 : 46028.dasm (10.64 % of base)
10 : 5495.dasm (2.60 % of base)
10 : 17438.dasm (1.44 % of base)
6 : 14031.dasm (4.17 % of base)
6 : 2198.dasm (1.01 % of base)
2 : 3922.dasm (0.26 % of base)
2 : 14106.dasm (0.72 % of base)
Top file improvements (bytes):
-56 : 7803.dasm (-9.86 % of base)
-46 : 3946.dasm (-8.24 % of base)
-40 : 6368.dasm (-0.95 % of base)
-36 : 4145.dasm (-10.59 % of base)
-32 : 436.dasm (-41.03 % of base)
-32 : 21703.dasm (-36.36 % of base)
-30 : 774.dasm (-20.55 % of base)
-28 : 14429.dasm (-40.00 % of base)
-28 : 24379.dasm (-5.36 % of base)
-28 : 3453.dasm (-51.85 % of base)
-28 : 1546.dasm (-4.02 % of base)
-28 : 1604.dasm (-8.81 % of base)
-26 : 25599.dasm (-12.26 % of base)
-26 : 27881.dasm (-11.93 % of base)
-26 : 28240.dasm (-13.54 % of base)
-24 : 12931.dasm (-26.67 % of base)
-24 : 28103.dasm (-13.64 % of base)
-24 : 976.dasm (-31.58 % of base)
-24 : 17089.dasm (-7.55 % of base)
-24 : 26789.dasm (-6.63 % of base)
59 total files with Code Size differences (47 improved, 12 regressed), 1 unchanged.
Top method regressions (bytes):
10 (10.42 % of base) : 45756.dasm - PerfLabTests.CastingPerf:FooObjIsFoo():this (FullOpts)
10 (10.64 % of base) : 46028.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (FullOpts)
10 (10.42 % of base) : 14614.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (FullOpts)
10 (10.42 % of base) : 17169.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (FullOpts)
10 (10.42 % of base) : 18989.dasm - PerfLabTests.CastingPerf:IntObj():this (FullOpts)
10 (10.64 % of base) : 43489.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (FullOpts)
10 (1.44 % of base) : 17438.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) : 5495.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]:<.cctor>b__4_0(System.Object):this (FullOpts)
6 (1.01 % of base) : 2198.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) : 14031.dasm - System.Net.Security.SslStream:MakeEx(System.Security.Cryptography.X509Certificates.X509Certificate):System.Security.Cryptography.X509Certificates.X509Certificate2 (FullOpts)
2 (0.72 % of base) : 14106.dasm - System.Collections.Perf_Frozen`1[System.__Canon]:GetUniqueValues(int):System.__Canon[]:this (FullOpts)
2 (0.26 % of base) : 3922.dasm - System.Xml.Serialization.TempAssembly:LoadAssemblyByPath(System.Type,System.String):System.Reflection.Assembly (FullOpts)
Top method improvements (bytes):
-56 (-9.86 % of base) : 7803.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) : 3946.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) : 6368.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) : 4145.dasm - System.Xml.Serialization.XmlSerializationWriterILGen:GenerateElement(System.Xml.Serialization.XmlMapping):System.String:this (FullOpts)
-32 (-36.36 % of base) : 21703.dasm - Newtonsoft.Json.JsonConvert:DeserializeObject[System.__Canon](System.String,Newtonsoft.Json.JsonSerializerSettings):System.__Canon (FullOpts)
-32 (-41.03 % of base) : 436.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
-30 (-20.55 % of base) : 774.dasm - BenchmarkDotNet.Characteristics.Characteristic`1[System.__Canon]:ResolveValueCore(BenchmarkDotNet.Characteristics.CharacteristicObject,System.Object):System.Object:this (FullOpts)
-28 (-5.36 % of base) : 24379.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) : 1546.dasm - Newtonsoft.Json.Utilities.ReflectionUtils:GetAttributes(System.Object,System.Type,ubyte):System.Attribute[] (FullOpts)
-28 (-51.85 % of base) : 3453.dasm - System.Collections.ContainsKeyTrue`2+<>c[System.__Canon,System.__Canon]:<Setup>b__10_1(System.__Canon):System.__Canon:this (FullOpts)
-28 (-8.81 % of base) : 1604.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (FullOpts)
-28 (-40.00 % of base) : 14429.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (FullOpts)
-26 (-13.54 % of base) : 28240.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-26 (-12.26 % of base) : 25599.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-26 (-11.93 % of base) : 27881.dasm - System.Collections.Generic.List`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
-24 (-31.58 % of base) : 976.dasm - BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:Freeze():System.__Canon:this (FullOpts)
-24 (-13.64 % of base) : 28103.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-24 (-26.67 % of base) : 12931.dasm - Sigil.NonGeneric.Emit:CreateDelegate[System.__Canon](byref,int):System.__Canon:this (FullOpts)
-24 (-7.55 % of base) : 17089.dasm - System.Collections.Generic.Dictionary`2[int,System.__Canon]:System.Collections.IDictionary.set_Item(System.Object,System.Object):this (FullOpts)
-24 (-6.63 % of base) : 26789.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) : 46028.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (FullOpts)
10 (10.64 % of base) : 43489.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (FullOpts)
10 (10.42 % of base) : 45756.dasm - PerfLabTests.CastingPerf:FooObjIsFoo():this (FullOpts)
10 (10.42 % of base) : 14614.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (FullOpts)
10 (10.42 % of base) : 17169.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (FullOpts)
10 (10.42 % of base) : 18989.dasm - PerfLabTests.CastingPerf:IntObj():this (FullOpts)
6 (4.17 % of base) : 14031.dasm - System.Net.Security.SslStream:MakeEx(System.Security.Cryptography.X509Certificates.X509Certificate):System.Security.Cryptography.X509Certificates.X509Certificate2 (FullOpts)
10 (2.60 % of base) : 5495.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]:<.cctor>b__4_0(System.Object):this (FullOpts)
10 (1.44 % of base) : 17438.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) : 2198.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) : 14106.dasm - System.Collections.Perf_Frozen`1[System.__Canon]:GetUniqueValues(int):System.__Canon[]:this (FullOpts)
2 (0.26 % of base) : 3922.dasm - System.Xml.Serialization.TempAssembly:LoadAssemblyByPath(System.Type,System.String):System.Reflection.Assembly (FullOpts)
Top method improvements (percentages):
-28 (-51.85 % of base) : 3453.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) : 6004.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
-32 (-41.03 % of base) : 436.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
-28 (-40.00 % of base) : 14429.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (FullOpts)
-32 (-36.36 % of base) : 21703.dasm - Newtonsoft.Json.JsonConvert:DeserializeObject[System.__Canon](System.String,Newtonsoft.Json.JsonSerializerSettings):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) : 6487.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
-24 (-26.67 % of base) : 12931.dasm - Sigil.NonGeneric.Emit:CreateDelegate[System.__Canon](byref,int):System.__Canon:this (FullOpts)
-18 (-24.32 % of base) : 22336.dasm - System.Xml.Base64Decoder:SetNextOutputBuffer(System.Array,int,int):this (FullOpts)
-18 (-23.68 % of base) : 3335.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
-30 (-20.55 % of base) : 774.dasm - BenchmarkDotNet.Characteristics.Characteristic`1[System.__Canon]:ResolveValueCore(BenchmarkDotNet.Characteristics.CharacteristicObject,System.Object):System.Object:this (FullOpts)
-16 (-18.18 % of base) : 10278.dasm - MicroBenchmarks.Serializers.Json_FromStream`1[System.__Canon]:DataContractJsonSerializer_():System.__Canon:this (FullOpts)
-16 (-18.18 % of base) : 13654.dasm - MicroBenchmarks.Serializers.Xml_FromStream`1[System.__Canon]:DataContractSerializer_():System.__Canon:this (FullOpts)
-16 (-18.18 % of base) : 17473.dasm - MicroBenchmarks.Serializers.Xml_FromStream`1[System.__Canon]:XmlSerializer_():System.__Canon:this (FullOpts)
-20 (-17.24 % of base) : 6401.dasm - System.Text.Json.Serialization.Converters.ListOfTConverter`2[System.__Canon,System.__Canon]:Add(byref,byref):this (FullOpts)
-14 (-16.67 % of base) : 24589.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
-18 (-16.67 % of base) : 13783.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) : 41507.dasm - System.Diagnostics.Tracing.Statics:GetCustomAttribute[System.__Canon](System.Type):System.__Canon (FullOpts)
-16 (-14.81 % of base) : 26125.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (FullOpts)
-14 (-14.58 % of base) : 6017.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: 42617478 (overridden on cmd)
Total bytes of diff: 42584186 (overridden on cmd)
Total bytes of delta: -33292 (-0.08 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
28 : 99356.dasm (18.42 % of base)
28 : 77341.dasm (18.42 % of base)
26 : 110422.dasm (14.77 % of base)
26 : 12864.dasm (16.88 % of base)
26 : 83246.dasm (14.77 % of base)
26 : 100446.dasm (14.77 % of base)
26 : 109321.dasm (14.77 % of base)
10 : 143486.dasm (10.64 % of base)
10 : 67513.dasm (10.42 % of base)
10 : 153914.dasm (10.64 % of base)
10 : 149417.dasm (10.42 % of base)
10 : 41925.dasm (10.42 % of base)
10 : 54857.dasm (10.42 % of base)
10 : 56026.dasm (1.44 % of base)
10 : 93568.dasm (0.66 % of base)
8 : 93828.dasm (0.46 % of base)
2 : 13781.dasm (0.33 % of base)
Top file improvements (bytes):
-162 : 97480.dasm (-4.75 % of base)
-64 : 106944.dasm (-6.61 % of base)
-46 : 66356.dasm (-6.59 % of base)
-46 : 86585.dasm (-6.59 % of base)
-46 : 160196.dasm (-6.59 % of base)
-46 : 58141.dasm (-6.59 % of base)
-46 : 69011.dasm (-6.59 % of base)
-46 : 72597.dasm (-6.59 % of base)
-46 : 153595.dasm (-6.59 % of base)
-46 : 162724.dasm (-6.59 % of base)
-46 : 45327.dasm (-6.59 % of base)
-46 : 52464.dasm (-6.59 % of base)
-44 : 83252.dasm (-9.09 % of base)
-44 : 98308.dasm (-1.47 % of base)
-44 : 110434.dasm (-9.09 % of base)
-44 : 100469.dasm (-9.09 % of base)
-40 : 15512.dasm (-0.92 % of base)
-38 : 56509.dasm (-5.51 % of base)
-38 : 157728.dasm (-5.51 % of base)
-32 : 9702.dasm (-41.03 % of base)
59 total files with Code Size differences (42 improved, 17 regressed), 3 unchanged.
Top method regressions (bytes):
28 (18.42 % of base) : 99356.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
28 (18.42 % of base) : 77341.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
26 (14.77 % of base) : 110422.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
26 (16.88 % of base) : 12864.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
26 (14.77 % of base) : 83246.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
26 (14.77 % of base) : 100446.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
26 (14.77 % of base) : 109321.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
10 (0.66 % of base) : 93568.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:DeriveUseSiteInfoFromType(byref,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int):ubyte:this (Tier1)
10 (10.42 % of base) : 149417.dasm - PerfLabTests.CastingPerf:FooObjIsFoo():this (Tier0-FullOpts)
10 (10.64 % of base) : 153914.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier0-FullOpts)
10 (10.42 % of base) : 41925.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier0-FullOpts)
10 (10.42 % of base) : 54857.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier0-FullOpts)
10 (10.42 % of base) : 67513.dasm - PerfLabTests.CastingPerf:IntObj():this (Tier0-FullOpts)
10 (10.64 % of base) : 143486.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier0-FullOpts)
10 (1.44 % of base) : 56026.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) : 93828.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetWellKnownTypeMember(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,int,byref,ubyte):Microsoft.CodeAnalysis.CSharp.Symbol (Tier1)
2 (0.33 % of base) : 13781.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) : 97480.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) : 106944.dasm - Microsoft.CodeAnalysis.CSharp.LocalBinderFactory:VisitLocalDeclarationStatement(Microsoft.CodeAnalysis.CSharp.Syntax.LocalDeclarationStatementSyntax):this (Tier0-FullOpts)
-46 (-6.59 % of base) : 66356.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) : 86585.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) : 160196.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) : 58141.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) : 69011.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) : 72597.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) : 153595.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) : 162724.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) : 45327.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) : 52464.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) : 98308.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) : 83252.dasm - System.ComponentModel.ReflectTypeDescriptionProvider+ReflectedTypeData:GetConverter(System.Object):System.ComponentModel.TypeConverter:this (Tier1)
-44 (-9.09 % of base) : 110434.dasm - System.ComponentModel.ReflectTypeDescriptionProvider+ReflectedTypeData:GetConverter(System.Object):System.ComponentModel.TypeConverter:this (Tier1)
-44 (-9.09 % of base) : 100469.dasm - System.ComponentModel.ReflectTypeDescriptionProvider+ReflectedTypeData:GetConverter(System.Object):System.ComponentModel.TypeConverter:this (Tier1)
-40 (-0.92 % of base) : 15512.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier0-FullOpts)
-38 (-5.51 % of base) : 56509.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) : 157728.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) : 9702.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
Top method regressions (percentages):
28 (18.42 % of base) : 99356.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
28 (18.42 % of base) : 77341.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
26 (16.88 % of base) : 12864.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
26 (14.77 % of base) : 110422.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
26 (14.77 % of base) : 83246.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
26 (14.77 % of base) : 100446.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
26 (14.77 % of base) : 109321.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
10 (10.64 % of base) : 153914.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier0-FullOpts)
10 (10.64 % of base) : 143486.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier0-FullOpts)
10 (10.42 % of base) : 149417.dasm - PerfLabTests.CastingPerf:FooObjIsFoo():this (Tier0-FullOpts)
10 (10.42 % of base) : 41925.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier0-FullOpts)
10 (10.42 % of base) : 54857.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier0-FullOpts)
10 (10.42 % of base) : 67513.dasm - PerfLabTests.CastingPerf:IntObj():this (Tier0-FullOpts)
10 (1.44 % of base) : 56026.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) : 93568.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:DeriveUseSiteInfoFromType(byref,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int):ubyte:this (Tier1)
8 (0.46 % of base) : 93828.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetWellKnownTypeMember(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,int,byref,ubyte):Microsoft.CodeAnalysis.CSharp.Symbol (Tier1)
2 (0.33 % of base) : 13781.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) : 135631.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
-22 (-47.83 % of base) : 98889.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
-22 (-47.83 % of base) : 82130.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
-22 (-47.83 % of base) : 33009.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
-22 (-47.83 % of base) : 125876.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
-32 (-41.03 % of base) : 9702.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-32 (-36.36 % of base) : 22955.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
-18 (-13.85 % of base) : 36343.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (Tier1)
-26 (-13.54 % of base) : 107098.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-16 (-12.70 % of base) : 39830.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)
-14 (-12.07 % of base) : 108043.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
-14 (-10.61 % of base) : 116981.dasm - BenchmarkDotNet.Characteristics.Characteristic`1[System.__Canon]:ResolveValueCore(BenchmarkDotNet.Characteristics.CharacteristicObject,System.Object):System.Object:this (Tier1)
-14 (-10.61 % of base) : 49991.dasm - BenchmarkDotNet.Characteristics.Characteristic`1[System.__Canon]:ResolveValueCore(BenchmarkDotNet.Characteristics.CharacteristicObject,System.Object):System.Object:this (Tier1)
-16 (-10.53 % of base) : 9578.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) : 83252.dasm - System.ComponentModel.ReflectTypeDescriptionProvider+ReflectedTypeData:GetConverter(System.Object):System.ComponentModel.TypeConverter:this (Tier1)
-44 (-9.09 % of base) : 110434.dasm - System.ComponentModel.ReflectTypeDescriptionProvider+ReflectedTypeData:GetConverter(System.Object):System.ComponentModel.TypeConverter:this (Tier1)
-44 (-9.09 % of base) : 100469.dasm - System.ComponentModel.ReflectTypeDescriptionProvider+ReflectedTypeData:GetConverter(System.Object):System.ComponentModel.TypeConverter:this (Tier1)
-30 (-8.93 % of base) : 3083.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
-10 (-8.93 % of base) : 49430.dasm - System.Xml.Linq.XDocument:GetFirstNode[System.__Canon]():System.__Canon:this (Tier0-FullOpts)
-10 (-7.94 % of base) : 99988.dasm - PerfLabTests.CastingPerf:FooObjCastIfIsa():this (Tier0-FullOpts)
benchmarks.run_tiered.linux.arm.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 12767976 (overridden on cmd)
Total bytes of diff: 12767040 (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 : 37619.dasm (10.42 % of base)
10 : 65618.dasm (10.64 % of base)
10 : 65951.dasm (10.42 % of base)
10 : 32378.dasm (10.42 % of base)
10 : 33720.dasm (1.44 % of base)
10 : 68360.dasm (10.64 % of base)
10 : 26500.dasm (10.42 % of base)
6 : 7194.dasm (1.01 % of base)
Top file improvements (bytes):
-46 : 27068.dasm (-7.85 % of base)
-32 : 2613.dasm (-41.03 % of base)
-32 : 5840.dasm (-36.36 % of base)
-30 : 29988.dasm (-20.55 % of base)
-28 : 5272.dasm (-8.81 % of base)
-28 : 2013.dasm (-9.27 % of base)
-28 : 3960.dasm (-4.02 % of base)
-28 : 17102.dasm (-40.00 % of base)
-28 : 43946.dasm (-5.36 % of base)
-26 : 54780.dasm (-13.54 % of base)
-24 : 25958.dasm (-26.67 % of base)
-24 : 30152.dasm (-31.58 % of base)
-24 : 31986.dasm (-7.55 % of base)
-24 : 49344.dasm (-6.63 % of base)
-24 : 54480.dasm (-13.64 % of base)
-22 : 18496.dasm (-31.43 % of base)
-22 : 8076.dasm (-47.83 % of base)
-20 : 26565.dasm (-18.52 % of base)
-20 : 30479.dasm (-10.00 % of base)
-18 : 1793.dasm (-6.08 % of base)
55 total files with Code Size differences (47 improved, 8 regressed), 1 unchanged.
Top method regressions (bytes):
10 (10.42 % of base) : 65951.dasm - PerfLabTests.CastingPerf:FooObjIsFoo():this (Tier0-FullOpts)
10 (10.64 % of base) : 68360.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier0-FullOpts)
10 (10.42 % of base) : 26500.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) : 37619.dasm - PerfLabTests.CastingPerf:IntObj():this (Tier0-FullOpts)
10 (10.64 % of base) : 65618.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier0-FullOpts)
10 (1.44 % of base) : 33720.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) : 7194.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) : 27068.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) : 2613.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-32 (-36.36 % of base) : 5840.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
-30 (-20.55 % of base) : 29988.dasm - BenchmarkDotNet.Characteristics.Characteristic`1[System.__Canon]:ResolveValueCore(BenchmarkDotNet.Characteristics.CharacteristicObject,System.Object):System.Object:this (Tier1)
-28 (-5.36 % of base) : 43946.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) : 3960.dasm - Newtonsoft.Json.Utilities.ReflectionUtils:GetAttributes(System.Object,System.Type,ubyte):System.Attribute[] (Tier1)
-28 (-8.81 % of base) : 5272.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (Tier1)
-28 (-9.27 % of base) : 2013.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
-28 (-40.00 % of base) : 17102.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
-26 (-13.54 % of base) : 54780.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-24 (-31.58 % of base) : 30152.dasm - BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:Freeze():System.__Canon:this (Tier1)
-24 (-13.64 % of base) : 54480.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-24 (-26.67 % of base) : 25958.dasm - Sigil.NonGeneric.Emit:CreateDelegate[System.__Canon](byref,int):System.__Canon:this (Tier1)
-24 (-7.55 % of base) : 31986.dasm - System.Collections.Generic.Dictionary`2[int,System.__Canon]:System.Collections.IDictionary.set_Item(System.Object,System.Object):this (Tier1)
-24 (-6.63 % of base) : 49344.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (Tier0-FullOpts)
-22 (-31.43 % of base) : 18496.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (Tier1)
-22 (-47.83 % of base) : 8076.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
-20 (-10.00 % of base) : 30479.dasm - BenchmarkDotNet.Extensions.ValuesGenerator:GenerateValue[System.__Canon](System.Random):System.__Canon (Tier1)
-20 (-18.52 % of base) : 26565.dasm - System.Text.Json.Serialization.Converters.ListOfTConverter`2[System.__Canon,int]:Add(byref,byref):this (Tier1)
-18 (-6.08 % of base) : 1793.dasm - System.Linq.Enumerable+<OfTypeIterator>d__64`1[System.__Canon]:MoveNext():ubyte:this (Tier0-FullOpts)
Top method regressions (percentages):
10 (10.64 % of base) : 68360.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier0-FullOpts)
10 (10.64 % of base) : 65618.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier0-FullOpts)
10 (10.42 % of base) : 65951.dasm - PerfLabTests.CastingPerf:FooObjIsFoo():this (Tier0-FullOpts)
10 (10.42 % of base) : 26500.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) : 37619.dasm - PerfLabTests.CastingPerf:IntObj():this (Tier0-FullOpts)
10 (1.44 % of base) : 33720.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) : 7194.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) : 8076.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
-32 (-41.03 % of base) : 2613.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-28 (-40.00 % of base) : 17102.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
-32 (-36.36 % of base) : 5840.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
-24 (-31.58 % of base) : 30152.dasm - BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:Freeze():System.__Canon:this (Tier1)
-22 (-31.43 % of base) : 18496.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (Tier1)
-24 (-26.67 % of base) : 25958.dasm - Sigil.NonGeneric.Emit:CreateDelegate[System.__Canon](byref,int):System.__Canon:this (Tier1)
-18 (-23.68 % of base) : 56236.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
-30 (-20.55 % of base) : 29988.dasm - BenchmarkDotNet.Characteristics.Characteristic`1[System.__Canon]:ResolveValueCore(BenchmarkDotNet.Characteristics.CharacteristicObject,System.Object):System.Object:this (Tier1)
-20 (-18.52 % of base) : 26565.dasm - System.Text.Json.Serialization.Converters.ListOfTConverter`2[System.__Canon,int]:Add(byref,byref):this (Tier1)
-18 (-16.67 % of base) : 28483.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) : 64591.dasm - System.Diagnostics.Tracing.Statics:GetCustomAttribute[System.__Canon](System.Type):System.__Canon (Tier1)
-16 (-14.81 % of base) : 50856.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (Tier1)
-14 (-14.58 % of base) : 11234.dasm - System.Text.Json.Serialization.Converters.IListConverter`1[System.__Canon]:Add(byref,byref):this (Tier1)
-18 (-14.29 % of base) : 9975.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (Tier1)
-14 (-14.29 % of base) : 20423.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) : 54480.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-26 (-13.54 % of base) : 54780.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-14 (-12.28 % of base) : 50344.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
-16 (-11.76 % of base) : 44836.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: 297750418 (overridden on cmd)
Total bytes of diff: 297747834 (overridden on cmd)
Total bytes of delta: -2584 (-0.00 % of base)
diff is an improvement.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
80 : 3069.dasm (1.06 % of base)
74 : 3090.dasm (0.98 % of base)
46 : 103896.dasm (766.67 % of base)
28 : 338853.dasm (18.42 % of base)
18 : 93486.dasm (2.43 % of base)
18 : 95313.dasm (2.43 % of base)
18 : 95390.dasm (2.43 % of base)
10 : 442423.dasm (1.44 % of base)
10 : 208488.dasm (1.44 % of base)
10 : 329735.dasm (0.66 % of base)
8 : 346509.dasm (2.17 % of base)
8 : 170919.dasm (2.06 % of base)
8 : 230327.dasm (1.86 % of base)
8 : 329982.dasm (0.46 % of base)
8 : 383227.dasm (2.05 % of base)
6 : 169833.dasm (0.79 % of base)
6 : 381776.dasm (0.79 % of base)
4 : 463532.dasm (1.87 % of base)
4 : 463535.dasm (1.90 % of base)
4 : 467584.dasm (1.87 % of base)
Top file improvements (bytes):
-64 : 332137.dasm (-6.84 % of base)
-44 : 337114.dasm (-1.75 % of base)
-40 : 156755.dasm (-18.87 % of base)
-36 : 162735.dasm (-29.03 % of base)
-36 : 346332.dasm (-20.00 % of base)
-32 : 227717.dasm (-41.03 % of base)
-32 : 233610.dasm (-41.03 % of base)
-30 : 228664.dasm (-44.12 % of base)
-30 : 115727.dasm (-4.07 % of base)
-30 : 95466.dasm (-20.83 % of base)
-28 : 111043.dasm (-5.36 % of base)
-28 : 469854.dasm (-9.27 % of base)
-28 : 232239.dasm (-41.18 % of base)
-28 : 322600.dasm (-5.30 % of base)
-28 : 115753.dasm (-8.81 % of base)
-26 : 112515.dasm (-12.26 % of base)
-26 : 114576.dasm (-13.54 % of base)
-26 : 329938.dasm (-7.14 % of base)
-24 : 210886.dasm (-10.17 % of base)
-24 : 113731.dasm (-6.63 % of base)
69 total files with Code Size differences (44 improved, 25 regressed), 14 unchanged.
Top method regressions (bytes):
80 (1.06 % of base) : 3069.dasm - Program:TestCase0003() (FullOpts)
74 (0.98 % of base) : 3090.dasm - Program:TestCase0003() (FullOpts)
46 (766.67 % of base) : 103896.dasm - T:TestEntryPoint():int (FullOpts)
28 (18.42 % of base) : 338853.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
18 (2.43 % of base) : 93486.dasm - DisabledRuntimeMarshalling.PInvokeAssemblyMarshallingDisabled.PInvokes:<Varargs_NotSupported>g__AssertThrowsCorrectException|6_1(System.Action) (FullOpts)
18 (2.43 % of base) : 95313.dasm - DisabledRuntimeMarshalling.PInvokeAssemblyMarshallingDisabled.PInvokes:<Varargs_NotSupported>g__AssertThrowsCorrectException|6_1(System.Action) (FullOpts)
18 (2.43 % of base) : 95390.dasm - DisabledRuntimeMarshalling.PInvokeAssemblyMarshallingDisabled.PInvokes:<Varargs_NotSupported>g__AssertThrowsCorrectException|6_1(System.Action) (FullOpts)
10 (0.66 % of base) : 329735.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:DeriveUseSiteInfoFromType(byref,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int):ubyte:this (Tier1)
10 (1.44 % of base) : 208488.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) : 442423.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) : 230327.dasm - Microsoft.Build.Logging.LoggerDescription:CreateForwardingLogger():Microsoft.Build.Framework.IForwardingLogger:this (FullOpts)
8 (0.46 % of base) : 329982.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetWellKnownTypeMember(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,int,byref,ubyte):Microsoft.CodeAnalysis.CSharp.Symbol (Tier1)
8 (2.17 % of base) : 346509.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler+<>c:<.cctor>b__10_0(System.Object):this (Tier1)
8 (2.06 % of base) : 170919.dasm - Test.DD:Main1() (FullOpts)
8 (2.05 % of base) : 383227.dasm - Test.DD:Main1() (Tier0-FullOpts)
6 (0.79 % of base) : 169833.dasm - AA`6[byte,ubyte,uint,uint,long,ubyte]:Static2(ulong,short,byref,byref):ushort[] (FullOpts)
6 (0.79 % of base) : 381776.dasm - AA`6[byte,ubyte,uint,uint,long,ubyte]:Static2(ulong,short,byref,byref):ushort[] (Tier0-FullOpts)
4 (1.87 % of base) : 463532.dasm - Internal.TypeSystem.MethodDesc:Equals(System.Object):ubyte:this (Tier1)
4 (1.87 % of base) : 467584.dasm - Internal.TypeSystem.MethodDesc:Equals(System.Object):ubyte:this (Tier1)
4 (1.48 % of base) : 471541.dasm - Internal.TypeSystem.MethodDesc:Equals(System.Object):ubyte:this (Tier1)
Top method improvements (bytes):
-64 (-6.84 % of base) : 332137.dasm - Microsoft.CodeAnalysis.CSharp.LocalBinderFactory:VisitLocalDeclarationStatement(Microsoft.CodeAnalysis.CSharp.Syntax.LocalDeclarationStatementSyntax):this (Tier0-FullOpts)
-44 (-1.75 % of base) : 337114.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1)
-40 (-18.87 % of base) : 156755.dasm - JitTest_castclass_ldlen_array_il.Test:Main():int (FullOpts)
-36 (-29.03 % of base) : 162735.dasm - My:foo[System.__Canon](ubyte,System.Object):System.Object (FullOpts)
-36 (-20.00 % of base) : 346332.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
-32 (-41.03 % of base) : 227717.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
-32 (-41.03 % of base) : 233610.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-30 (-4.07 % of base) : 115727.dasm - Newtonsoft.Json.Utilities.ReflectionUtils:GetAttributes(System.Object,System.Type,ubyte):System.Attribute[] (FullOpts)
-30 (-44.12 % of base) : 228664.dasm - Program+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
-30 (-20.83 % of base) : 95466.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (FullOpts)
-28 (-5.36 % of base) : 111043.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) : 322600.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) : 115753.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (FullOpts)
-28 (-41.18 % of base) : 232239.dasm - System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]:<StartAsyncOperation>b__11_1(System.Object):this (FullOpts)
-28 (-9.27 % of base) : 469854.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
-26 (-13.54 % of base) : 114576.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-26 (-12.26 % of base) : 112515.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-26 (-7.14 % of base) : 329938.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (Tier0-FullOpts)
-24 (-10.17 % of base) : 210886.dasm - Gen`1[System.__Canon]:ExceptionTest(System.__Canon):this (FullOpts)
-24 (-6.63 % of base) : 113731.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (FullOpts)
Top method regressions (percentages):
46 (766.67 % of base) : 103896.dasm - T:TestEntryPoint():int (FullOpts)
28 (18.42 % of base) : 338853.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
18 (2.43 % of base) : 93486.dasm - DisabledRuntimeMarshalling.PInvokeAssemblyMarshallingDisabled.PInvokes:<Varargs_NotSupported>g__AssertThrowsCorrectException|6_1(System.Action) (FullOpts)
18 (2.43 % of base) : 95313.dasm - DisabledRuntimeMarshalling.PInvokeAssemblyMarshallingDisabled.PInvokes:<Varargs_NotSupported>g__AssertThrowsCorrectException|6_1(System.Action) (FullOpts)
18 (2.43 % of base) : 95390.dasm - DisabledRuntimeMarshalling.PInvokeAssemblyMarshallingDisabled.PInvokes:<Varargs_NotSupported>g__AssertThrowsCorrectException|6_1(System.Action) (FullOpts)
8 (2.17 % of base) : 346509.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler+<>c:<.cctor>b__10_0(System.Object):this (Tier1)
8 (2.06 % of base) : 170919.dasm - Test.DD:Main1() (FullOpts)
8 (2.05 % of base) : 383227.dasm - Test.DD:Main1() (Tier0-FullOpts)
4 (1.96 % of base) : 471481.dasm - Internal.TypeSystem.TypeDesc:Equals(System.Object):ubyte:this (Tier1)
4 (1.96 % of base) : 475126.dasm - Internal.TypeSystem.TypeDesc:Equals(System.Object):ubyte:this (Tier1)
4 (1.92 % of base) : 475208.dasm - Internal.TypeSystem.MethodDesc:Equals(System.Object):ubyte:this (Tier1)
4 (1.90 % of base) : 463535.dasm - Internal.TypeSystem.TypeDesc:Equals(System.Object):ubyte:this (Tier1)
4 (1.90 % of base) : 464516.dasm - Internal.TypeSystem.TypeDesc:Equals(System.Object):ubyte:this (Tier1)
4 (1.87 % of base) : 463532.dasm - Internal.TypeSystem.MethodDesc:Equals(System.Object):ubyte:this (Tier1)
4 (1.87 % of base) : 467584.dasm - Internal.TypeSystem.MethodDesc:Equals(System.Object):ubyte:this (Tier1)
8 (1.86 % of base) : 230327.dasm - Microsoft.Build.Logging.LoggerDescription:CreateForwardingLogger():Microsoft.Build.Framework.IForwardingLogger:this (FullOpts)
4 (1.48 % of base) : 471541.dasm - Internal.TypeSystem.MethodDesc:Equals(System.Object):ubyte:this (Tier1)
10 (1.44 % of base) : 208488.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) : 442423.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)
80 (1.06 % of base) : 3069.dasm - Program:TestCase0003() (FullOpts)
Top method improvements (percentages):
-30 (-44.12 % of base) : 228664.dasm - Program+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
-28 (-41.18 % of base) : 232239.dasm - System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]:<StartAsyncOperation>b__11_1(System.Object):this (FullOpts)
-32 (-41.03 % of base) : 227717.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
-32 (-41.03 % of base) : 233610.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-22 (-31.43 % of base) : 133068.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
-36 (-29.03 % of base) : 162735.dasm - My:foo[System.__Canon](ubyte,System.Object):System.Object (FullOpts)
-30 (-20.83 % of base) : 95466.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (FullOpts)
-16 (-20.00 % of base) : 209570.dasm - Internal.TypeSystem.MetadataTypeSystemContext:ComputeHasStaticConstructor(Internal.TypeSystem.TypeDesc):ubyte:this (FullOpts)
-36 (-20.00 % of base) : 346332.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
-20 (-18.87 % of base) : 472801.dasm - Internal.TypeSystem.MetadataTypeSystemContext:ComputeHasStaticConstructor(Internal.TypeSystem.TypeDesc):ubyte:this (Tier1)
-20 (-18.87 % of base) : 475563.dasm - Internal.TypeSystem.MetadataTypeSystemContext:ComputeHasStaticConstructor(Internal.TypeSystem.TypeDesc):ubyte:this (Tier1)
-40 (-18.87 % of base) : 156755.dasm - JitTest_castclass_ldlen_array_il.Test:Main():int (FullOpts)
-18 (-18.00 % of base) : 94627.dasm - Xunit.Assert:Throws[System.__Canon](System.Action):System.__Canon (FullOpts)
-18 (-18.00 % of base) : 306783.dasm - Xunit.Assert:Throws[System.__Canon](System.Action):System.__Canon (Tier1)
-16 (-17.39 % of base) : 115744.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (FullOpts)
-14 (-16.67 % of base) : 111254.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
-18 (-16.67 % of base) : 94116.dasm - Xunit.Assert:Throws[System.__Canon](System.Func`1[System.Object]):System.__Canon (FullOpts)
-18 (-16.67 % of base) : 306779.dasm - Xunit.Assert:Throws[System.__Canon](System.Func`1[System.Object]):System.__Canon (Tier1)
-10 (-15.62 % of base) : 167424.dasm - Program+<>c__5`1[System.__Canon]:<GetCustomAttributes>b__5_0(Program+CustomAttributeData):System.__Canon:this (FullOpts)
-16 (-14.81 % of base) : 113059.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (FullOpts)
libraries.crossgen2.linux.arm.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 36762668 (overridden on cmd)
Total bytes of diff: 36745214 (overridden on cmd)
Total bytes of delta: -17454 (-0.05 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
4 : 158593.dasm (1.10 % of base)
2 : 126589.dasm (0.88 % of base)
2 : 126774.dasm (0.46 % of base)
2 : 62872.dasm (0.90 % of base)
Top file improvements (bytes):
-224 : 144379.dasm (-15.20 % of base)
-210 : 144378.dasm (-15.11 % of base)
-196 : 144376.dasm (-15.01 % of base)
-182 : 144374.dasm (-14.89 % of base)
-168 : 144372.dasm (-14.76 % of base)
-164 : 126702.dasm (-9.27 % of base)
-164 : 160801.dasm (-15.05 % of base)
-154 : 144370.dasm (-14.61 % of base)
-140 : 144368.dasm (-14.43 % of base)
-126 : 144366.dasm (-14.22 % of base)
-124 : 10817.dasm (-12.58 % of base)
-124 : 10816.dasm (-12.70 % of base)
-120 : 186476.dasm (-2.10 % of base)
-112 : 144364.dasm (-13.97 % of base)
-106 : 180091.dasm (-17.55 % of base)
-106 : 180095.dasm (-16.88 % of base)
-100 : 11705.dasm (-12.44 % of base)
-100 : 10966.dasm (-12.44 % of base)
-98 : 144362.dasm (-13.65 % of base)
-88 : 10247.dasm (-12.15 % of base)
85 total files with Code Size differences (81 improved, 4 regressed), 1 unchanged.
Top method regressions (bytes):
4 (1.10 % of base) : 158593.dasm - Microsoft.Internal.Collections.WeakReferenceCollection`1[System.__Canon]:AliveItemsToList():System.Collections.Generic.List`1[System.__Canon]:this (FullOpts)
2 (0.90 % of base) : 62872.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+<GetMembers>d__187`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
2 (0.88 % of base) : 126589.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PENamedTypeSymbol+VB$StateMachine_156_GetMembers`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
2 (0.46 % of base) : 126774.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxRewriter:VisitList[System.__Canon](Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:this (FullOpts)
Top method improvements (bytes):
-224 (-15.20 % of base) : 144379.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)
-210 (-15.11 % of base) : 144378.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)
-196 (-15.01 % of base) : 144376.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)
-182 (-14.89 % of base) : 144374.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)
-168 (-14.76 % of base) : 144372.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)
-164 (-9.27 % of base) : 126702.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
-164 (-15.05 % of base) : 160801.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
-154 (-14.61 % of base) : 144370.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)
-140 (-14.43 % of base) : 144368.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)
-126 (-14.22 % of base) : 144366.dasm - CommandLine.ParserResultExtensions:MapResult[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.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
-124 (-12.70 % of base) : 10816.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2520[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
-124 (-12.58 % of base) : 10817.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2543-1[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
-120 (-2.10 % of base) : 186476.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
-112 (-13.97 % of base) : 144364.dasm - CommandLine.ParserResultExtensions:MapResult[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.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
-106 (-17.55 % of base) : 180091.dasm - System.Linq.Expressions.Interpreter.ActionCallInstruction`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
-106 (-16.88 % of base) : 180095.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)
-100 (-12.44 % of base) : 11705.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)
-100 (-12.44 % of base) : 10966.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)
-98 (-13.65 % of base) : 144362.dasm - CommandLine.ParserResultExtensions:MapResult[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.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
-88 (-12.15 % of base) : 10247.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)
Top method regressions (percentages):
4 (1.10 % of base) : 158593.dasm - Microsoft.Internal.Collections.WeakReferenceCollection`1[System.__Canon]:AliveItemsToList():System.Collections.Generic.List`1[System.__Canon]:this (FullOpts)
2 (0.90 % of base) : 62872.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+<GetMembers>d__187`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
2 (0.88 % of base) : 126589.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PENamedTypeSymbol+VB$StateMachine_156_GetMembers`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
2 (0.46 % of base) : 126774.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxRewriter:VisitList[System.__Canon](Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:this (FullOpts)
Top method improvements (percentages):
-32 (-43.24 % of base) : 140587.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)
-32 (-43.24 % of base) : 154506.dasm - System.Linq.ParallelQuery`1+<>c__1`1[System.__Canon,System.__Canon]:<Cast>b__1_0(System.__Canon):System.__Canon:this (FullOpts)
-32 (-35.56 % of base) : 184946.dasm - Microsoft.Extensions.Primitives.ChangeToken+ChangeTokenRegistration`1+<>c[System.__Canon]:<RegisterChangeTokenCallback>b__7_0(System.Object):this (FullOpts)
-32 (-35.56 % of base) : 182137.dasm - System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]:<StartAsyncOperation>b__11_1(System.Object):this (FullOpts)
-32 (-35.56 % of base) : 184800.dasm - System.Threading.Channels.AsyncOperation`1+<>c[System.__Canon]:<SignalCompletion>b__35_0(System.Object):this (FullOpts)
-32 (-35.56 % of base) : 167625.dasm - System.Threading.Tasks.Dataflow.BatchBlock`1+BatchBlockTargetCore+<>c[System.__Canon]:<ProcessAsyncIfNecessary_Slow>b__30_0(System.Object):this (FullOpts)
-32 (-35.56 % of base) : 167475.dasm - System.Threading.Tasks.Dataflow.BatchedJoinBlock`3+<>c[System.__Canon,System.__Canon,System.__Canon]:<.ctor>b__7_0(System.Threading.Tasks.Dataflow.ISourceBlock`1[System.Tuple`3[System.Collections.Generic.IList`1[System.__Canon],System.Collections.Generic.IList`1[System.__Canon],System.Collections.Generic.IList`1[System.__Canon]]]):this (FullOpts)
-32 (-35.56 % of base) : 167627.dasm - System.Threading.Tasks.Dataflow.BroadcastBlock`1+<>c[System.__Canon]:<ConsumeAsyncIfNecessary>b__18_0(System.Object):this (FullOpts)
-32 (-35.56 % of base) : 167686.dasm - System.Threading.Tasks.Dataflow.BroadcastBlock`1+BroadcastingSourceCore`1+<>c[System.__Canon,System.__Canon]:<CompleteBlockIfPossible_Slow>b__32_0(System.Object):this (FullOpts)
-32 (-35.56 % of base) : 167652.dasm - System.Threading.Tasks.Dataflow.BroadcastBlock`1+BroadcastingSourceCore`1+<>c[System.__Canon,System.__Canon]:<OfferAsyncIfNecessary>b__29_0(System.Object):this (FullOpts)
-32 (-35.56 % of base) : 167677.dasm - System.Threading.Tasks.Dataflow.BufferBlock`1+<>c[System.__Canon]:<ConsumeAsyncIfNecessary>b__23_0(System.Object):this (FullOpts)
-32 (-35.56 % of base) : 167527.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+SendAsyncSource`1+<>c[System.__Canon]:<OfferToTargetAsync>b__16_0(System.Object):this (FullOpts)
-32 (-35.56 % of base) : 167680.dasm - System.Threading.Tasks.Dataflow.Internal.SourceCore`1+<>c[System.__Canon]:<CompleteBlockIfPossible_Slow>b__49_0(System.Object):this (FullOpts)
-32 (-35.56 % of base) : 167638.dasm - System.Threading.Tasks.Dataflow.Internal.SourceCore`1+<>c[System.__Canon]:<OfferAsyncIfNecessary_Slow>b__44_0(System.Object):this (FullOpts)
-32 (-35.56 % of base) : 167561.dasm - System.Threading.Tasks.Dataflow.Internal.SpscTargetCore`1+<>c[System.__Canon]:<ScheduleConsumerIfNecessary>b__13_0(System.Object):this (FullOpts)
-32 (-35.56 % of base) : 167683.dasm - System.Threading.Tasks.Dataflow.Internal.TargetCore`1+<>c[System.__Canon]:<CompleteBlockIfPossible_Slow>b__42_0(System.Object):this (FullOpts)
-32 (-35.56 % of base) : 167645.dasm - System.Threading.Tasks.Dataflow.Internal.TargetCore`1+<>c[System.__Canon]:<ProcessAsyncIfNecessary_Slow>b__34_0(System.Object):this (FullOpts)
-32 (-34.78 % of base) : 7889.dasm - Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:CompareTo(System.Object):int:this (FullOpts)
-32 (-34.78 % of base) : 167363.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+ReceiveTarget`1+<>c[System.__Canon]:<.cctor>b__26_0(System.Object):this (FullOpts)
-32 (-34.78 % of base) : 167710.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+SourceObservable`1+ObserversState+<>c[System.__Canon]:<.ctor>b__6_2(System.Threading.Tasks.Task,System.Object):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: 36001566 (overridden on cmd)
Total bytes of diff: 35991486 (overridden on cmd)
Total bytes of delta: -10080 (-0.03 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
46 : 112623.dasm (2.41 % of base)
12 : 219894.dasm (1.12 % of base)
10 : 220210.dasm (1.44 % of base)
8 : 270975.dasm (1.85 % of base)
6 : 220177.dasm (0.44 % of base)
6 : 268608.dasm (1.10 % of base)
6 : 220180.dasm (0.62 % of base)
6 : 181296.dasm (4.17 % of base)
4 : 253829.dasm (4.55 % of base)
4 : 180791.dasm (1.38 % of base)
4 : 91427.dasm (1.22 % of base)
2 : 219665.dasm (0.33 % of base)
2 : 198852.dasm (0.78 % of base)
2 : 145798.dasm (0.25 % of base)
2 : 276537.dasm (0.16 % of base)
Top file improvements (bytes):
-400 : 170397.dasm (-23.92 % of base)
-164 : 194348.dasm (-12.50 % of base)
-164 : 97462.dasm (-12.97 % of base)
-124 : 203675.dasm (-20.46 % of base)
-108 : 146939.dasm (-36.73 % of base)
-102 : 146294.dasm (-7.70 % of base)
-96 : 15737.dasm (-15.24 % of base)
-96 : 15744.dasm (-14.95 % of base)
-82 : 211493.dasm (-2.05 % of base)
-64 : 29154.dasm (-8.18 % of base)
-60 : 15910.dasm (-12.30 % of base)
-60 : 15901.dasm (-12.35 % of base)
-50 : 146860.dasm (-34.25 % of base)
-48 : 172233.dasm (-13.48 % of base)
-46 : 145824.dasm (-7.85 % of base)
-44 : 219158.dasm (-12.87 % of base)
-44 : 219169.dasm (-12.87 % of base)
-42 : 146861.dasm (-7.75 % of base)
-40 : 264695.dasm (-0.93 % of base)
-40 : 91130.dasm (-7.97 % of base)
72 total files with Code Size differences (57 improved, 15 regressed), 20 unchanged.
Top method regressions (bytes):
46 (2.41 % of base) : 112623.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanXmlStringUnQuoted():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
12 (1.12 % of base) : 219894.dasm - System.Collections.Generic.SortedList`2[System.__Canon,System.Nullable`1[int]]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
10 (1.44 % of base) : 220210.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) : 270975.dasm - Microsoft.Build.Logging.LoggerDescription:CreateForwardingLogger():Microsoft.Build.Framework.IForwardingLogger:this (FullOpts)
6 (0.62 % of base) : 220180.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:IntersectWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (FullOpts)
6 (0.44 % of base) : 220177.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (FullOpts)
6 (1.10 % of base) : 268608.dasm - System.Net.Http.Http3RequestStream:HandleReadResponseContentException(System.Exception,System.Threading.CancellationToken):this (FullOpts)
6 (4.17 % of base) : 181296.dasm - System.Net.Security.SslStream:MakeEx(System.Security.Cryptography.X509Certificates.X509Certificate):System.Security.Cryptography.X509Certificates.X509Certificate2 (FullOpts)
4 (1.22 % of base) : 91427.dasm - System.Data.ColumnTypeConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
4 (4.55 % of base) : 253829.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
4 (1.38 % of base) : 180791.dasm - System.Net.NegotiateAuthenticationPal:CheckHasSystemNetSecurityNative():ubyte (FullOpts)
2 (0.78 % of base) : 198852.dasm - Internal.TypeSystem.TypeDesc:get_TypeHasCharacteristicsRequiredToBeTypeEquivalent():ubyte:this (FullOpts)
2 (0.16 % of base) : 276537.dasm - Microsoft.Build.Execution.BuildManager+<>c__DisplayClass100_0:<IssueBuildRequestForBuildSubmission>g__IssueBuildSubmissionToSchedulerImpl|1(Microsoft.Build.Execution.BuildSubmission,ubyte):this (FullOpts)
2 (0.33 % of base) : 219665.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) : 145798.dasm - System.Xml.Serialization.TempAssembly:LoadAssemblyByPath(System.Type,System.String):System.Reflection.Assembly (FullOpts)
Top method improvements (bytes):
-400 (-23.92 % of base) : 170397.dasm - System.CodeDom.Compiler.CodeGenerator:GenerateExpression(System.CodeDom.CodeExpression):this (FullOpts)
-164 (-12.50 % of base) : 194348.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
-164 (-12.97 % of base) : 97462.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
-124 (-20.46 % of base) : 203675.dasm - System.Runtime.Serialization.Formatters.Binary.PrimitiveArray:.ctor(int,System.Array):this (FullOpts)
-108 (-36.73 % of base) : 146939.dasm - System.Xml.Serialization.XmlSchemas:ItemName(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
-102 (-7.70 % of base) : 146294.dasm - System.Xml.Serialization.SchemaObjectWriter:Write54_XmlSchemaSequence(System.Xml.Schema.XmlSchemaSequence):this (FullOpts)
-96 (-15.24 % of base) : 15737.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2520[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
-96 (-14.95 % of base) : 15744.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) : 211493.dasm - Newtonsoft.Json.JsonTextReader+<DoReadAsBytesAsync>d__42:MoveNext():this (FullOpts)
-64 (-8.18 % of base) : 29154.dasm - System.Runtime.InteropServices.Marshalling.ComVariant:As[System.__Canon]():System.__Canon:this (FullOpts)
-60 (-12.30 % of base) : 15910.dasm - Microsoft.FSharp.Core.LanguagePrimitives+GenericOneDynamicImplTable`1[System.__Canon]:.cctor() (FullOpts)
-60 (-12.35 % of base) : 15901.dasm - Microsoft.FSharp.Core.LanguagePrimitives+GenericZeroDynamicImplTable`1[System.__Canon]:.cctor() (FullOpts)
-50 (-34.25 % of base) : 146860.dasm - System.Xml.Serialization.XmlSchemaImporter:IsMixed(System.Xml.Schema.XmlSchemaType):ubyte (FullOpts)
-48 (-13.48 % of base) : 172233.dasm - System.Security.Cryptography.Xml.XmlDsigBase64Transform:LoadInput(System.Object):this (FullOpts)
-46 (-7.85 % of base) : 145824.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) : 219158.dasm - System.Reflection.Context.Custom.CustomConstructorInfo:GetCustomAttributes(ubyte):System.Object[]:this (FullOpts)
-44 (-12.87 % of base) : 219169.dasm - System.Reflection.Context.Custom.CustomParameterInfo:GetCustomAttributes(ubyte):System.Object[]:this (FullOpts)
-42 (-7.75 % of base) : 146861.dasm - System.Xml.Serialization.XmlSchemaImporter:GetTypeItems(System.Xml.Schema.XmlSchemaType):System.Xml.Serialization.XmlSchemaImporter+TypeItems:this (FullOpts)
-40 (-7.97 % of base) : 91130.dasm - System.Data.XDRSchema:HandleTypeNode(System.Xml.XmlElement,System.Data.DataTable,System.Collections.ArrayList):this (FullOpts)
-40 (-0.93 % of base) : 264695.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
Top method regressions (percentages):
4 (4.55 % of base) : 253829.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
6 (4.17 % of base) : 181296.dasm - System.Net.Security.SslStream:MakeEx(System.Security.Cryptography.X509Certificates.X509Certificate):System.Security.Cryptography.X509Certificates.X509Certificate2 (FullOpts)
46 (2.41 % of base) : 112623.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanXmlStringUnQuoted():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
8 (1.85 % of base) : 270975.dasm - Microsoft.Build.Logging.LoggerDescription:CreateForwardingLogger():Microsoft.Build.Framework.IForwardingLogger:this (FullOpts)
10 (1.44 % of base) : 220210.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) : 180791.dasm - System.Net.NegotiateAuthenticationPal:CheckHasSystemNetSecurityNative():ubyte (FullOpts)
4 (1.22 % of base) : 91427.dasm - System.Data.ColumnTypeConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
12 (1.12 % of base) : 219894.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) : 268608.dasm - System.Net.Http.Http3RequestStream:HandleReadResponseContentException(System.Exception,System.Threading.CancellationToken):this (FullOpts)
2 (0.78 % of base) : 198852.dasm - Internal.TypeSystem.TypeDesc:get_TypeHasCharacteristicsRequiredToBeTypeEquivalent():ubyte:this (FullOpts)
6 (0.62 % of base) : 220180.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:IntersectWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (FullOpts)
6 (0.44 % of base) : 220177.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (FullOpts)
2 (0.33 % of base) : 219665.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) : 145798.dasm - System.Xml.Serialization.TempAssembly:LoadAssemblyByPath(System.Type,System.String):System.Reflection.Assembly (FullOpts)
2 (0.16 % of base) : 276537.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) : 231703.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)
-22 (-47.83 % of base) : 15453.dasm - Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
-22 (-47.83 % of base) : 262078.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
-30 (-42.86 % of base) : 129324.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) : 233461.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) : 235149.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) : 234390.dasm - System.Collections.Immutable.ImmutableList`1+Builder[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
-26 (-37.14 % of base) : 29481.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) : 146939.dasm - System.Xml.Serialization.XmlSchemas:ItemName(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
-32 (-36.36 % of base) : 217696.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:CreateInstance[System.__Canon](System.IServiceProvider,System.Object[]):System.__Canon (FullOpts)
-32 (-36.36 % of base) : 208221.dasm - Newtonsoft.Json.JsonConvert:DeserializeObject[System.__Canon](System.String,Newtonsoft.Json.JsonSerializerSettings):System.__Canon (FullOpts)
-32 (-36.36 % of base) : 210902.dasm - Newtonsoft.Json.Linq.JToken:ToObject[System.__Canon](Newtonsoft.Json.JsonSerializer):System.__Canon:this (FullOpts)
-26 (-36.11 % of base) : 241483.dasm - Microsoft.Extensions.Hosting.Internal.ConfigureContainerAdapter`1[System.__Canon]:ConfigureContainer(Microsoft.Extensions.Hosting.HostBuilderContext,System.Object):this (FullOpts)
-26 (-36.11 % of base) : 233275.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) : 264122.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) : 264131.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) : 144126.dasm - System.Xml.Xsl.Runtime.XmlQuerySequence`1[System.__Canon]:System.Collections.IList.IndexOf(System.Object):int:this (FullOpts)
-28 (-35.90 % of base) : 51571.dasm - Microsoft.Diagnostics.Tracing.AutomatedAnalysis.Process:Equals(System.Object):ubyte:this (FullOpts)
-30 (-35.71 % of base) : 144125.dasm - System.Xml.Xsl.Runtime.XmlQuerySequence`1[System.__Canon]:System.Collections.IList.Contains(System.Object):ubyte:this (FullOpts)
-28 (-35.00 % of base) : 93843.dasm - System.Data.UniqueConstraint:Equals(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: 203181408 (overridden on cmd)
Total bytes of diff: 203159682 (overridden on cmd)
Total bytes of delta: -21726 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
94 : 279454.dasm (9.33 % of base)
78 : 321834.dasm (2.77 % of base)
32 : 641230.dasm (3.10 % of base)
30 : 282218.dasm (1.03 % of base)
26 : 248375.dasm (14.94 % of base)
26 : 80442.dasm (0.56 % of base)
22 : 435377.dasm (3.67 % of base)
22 : 144008.dasm (4.20 % of base)
22 : 42338.dasm (0.50 % of base)
22 : 722139.dasm (2.61 % of base)
22 : 53409.dasm (2.56 % of base)
20 : 68989.dasm (3.73 % of base)
18 : 228633.dasm (2.05 % of base)
18 : 375525.dasm (2.09 % of base)
18 : 388695.dasm (2.09 % of base)
18 : 711850.dasm (8.57 % of base)
18 : 430695.dasm (2.09 % of base)
18 : 611851.dasm (2.08 % of base)
16 : 171196.dasm (0.37 % of base)
16 : 107840.dasm (4.02 % of base)
Top file improvements (bytes):
-286 : 177793.dasm (-8.99 % of base)
-258 : 530516.dasm (-6.24 % of base)
-224 : 91131.dasm (-13.25 % of base)
-218 : 432091.dasm (-12.84 % of base)
-216 : 432110.dasm (-13.20 % of base)
-204 : 429786.dasm (-10.86 % of base)
-184 : 432101.dasm (-14.42 % of base)
-174 : 60912.dasm (-10.93 % of base)
-164 : 68276.dasm (-4.80 % of base)
-162 : 172715.dasm (-4.78 % of base)
-148 : 161146.dasm (-4.65 % of base)
-140 : 432065.dasm (-7.99 % of base)
-114 : 692794.dasm (-7.94 % of base)
-94 : 500112.dasm (-7.83 % of base)
-92 : 432109.dasm (-10.09 % of base)
-90 : 432106.dasm (-7.51 % of base)
-82 : 488686.dasm (-15.89 % of base)
-80 : 431285.dasm (-6.49 % of base)
-70 : 179742.dasm (-3.07 % of base)
-68 : 82281.dasm (-3.61 % of base)
82 total files with Code Size differences (51 improved, 31 regressed), 20 unchanged.
Top method regressions (bytes):
94 (9.33 % of base) : 279454.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.SymbolLoader:HasImplicitReferenceConversion(Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType):ubyte (Tier1)
78 (2.77 % of base) : 321834.dasm - System.IO.Tests.BaseSymbolicLinks_FileSystem:ResolveLinkTarget_Succeeds(System.String,ubyte):this (Tier1)
32 (3.10 % of base) : 641230.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.SymbolLoader:HasImplicitReferenceConversion(Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType):ubyte (Tier1)
30 (1.03 % of base) : 282218.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitUnliftedBinaryOp(int,System.Type,System.Type):this (Tier1)
26 (0.56 % of base) : 80442.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:CalculateUseSiteDiagnostic(byref):ubyte:this (Tier1)
26 (14.94 % of base) : 248375.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
22 (2.61 % of base) : 722139.dasm - CoreXml.Test.XLinq.EventsHelper:Verify(int,System.Xml.Linq.XObject):this (Tier1)
22 (0.50 % of base) : 42338.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:CalculateUseSiteDiagnostic(byref):ubyte:this (Tier1)
22 (2.56 % of base) : 53409.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetMemberTypeArgumentsNoUseSiteDiagnostics(Microsoft.CodeAnalysis.CSharp.Symbol):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol] (Tier1)
22 (4.20 % of base) : 144008.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.67 % of base) : 435377.dasm - System.Xml.XPath.XNodeNavigator:GetNextNamespaceDeclarationGlobal(System.Xml.Linq.XAttribute):System.Xml.Linq.XAttribute (Tier1)
20 (3.73 % of base) : 68989.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)
18 (2.05 % of base) : 228633.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) : 375525.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) : 388695.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) : 430695.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) : 611851.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 (8.57 % of base) : 711850.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)
16 (4.02 % of base) : 107840.dasm - Microsoft.CodeAnalysis.CachedUseSiteInfo`1[System.__Canon]:ToUseSiteInfo(System.__Canon):Microsoft.CodeAnalysis.UseSiteInfo`1[System.__Canon]:this (Tier1)
16 (0.37 % of base) : 171196.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:CalculateUseSiteDiagnostic(byref):ubyte:this (Tier1)
Top method improvements (bytes):
-286 (-8.99 % of base) : 177793.dasm - Microsoft.CodeAnalysis.CSharp.RefSafetyAnalysis:GetValEscape(Microsoft.CodeAnalysis.CSharp.BoundExpression,uint):uint:this (Tier1)
-258 (-6.24 % of base) : 530516.dasm - System.Tests.TupleTests+TupleTestDriver`10[short,int,long,System.__Canon,ushort,float,double,System.DateTime,System.__Canon,System.TimeSpan]:.ctor(System.Object[]):this (Tier1)
-224 (-13.25 % of base) : 91131.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)
-218 (-12.84 % of base) : 432091.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) : 432110.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write28_XmlSchemaSimpleTypeRestriction(System.String,System.String,System.Xml.Schema.XmlSchemaSimpleTypeRestriction,ubyte,ubyte):this (Tier0-FullOpts)
-204 (-10.86 % of base) : 429786.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write63_XmlSchema(System.String,System.String,System.Xml.Schema.XmlSchema,ubyte,ubyte):this (Tier0-FullOpts)
-184 (-14.42 % of base) : 432101.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write57_Item(System.String,System.String,System.Xml.Schema.XmlSchemaComplexContentExtension,ubyte,ubyte):this (Tier0-FullOpts)
-174 (-10.93 % of base) : 60912.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)
-164 (-4.80 % of base) : 68276.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) : 172715.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
-148 (-4.65 % of base) : 161146.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) : 432065.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) : 692794.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)
-94 (-7.83 % of base) : 500112.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write54_XmlSchemaChoice(System.String,System.String,System.Xml.Schema.XmlSchemaChoice,ubyte,ubyte):this (Tier0-FullOpts)
-92 (-10.09 % of base) : 432109.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) : 432106.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write53_XmlSchemaSequence(System.String,System.String,System.Xml.Schema.XmlSchemaSequence,ubyte,ubyte):this (Tier0-FullOpts)
-82 (-15.89 % of base) : 488686.dasm - System.Tuple`2[System.__Canon,System.__Canon]:Equals(System.Object,System.Collections.IEqualityComparer):ubyte:this (Tier1)
-80 (-6.49 % of base) : 431285.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterAliasedTestType:Write2_AliasedTestType(System.String,System.String,AliasedTestType,ubyte,ubyte):this (Tier0-FullOpts)
-70 (-3.07 % of base) : 179742.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)
-68 (-3.61 % of base) : 82281.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:ClassifyImplicitBuiltInConversionFromExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,byref):Microsoft.CodeAnalysis.CSharp.Conversion:this (Tier1)
Top method regressions (percentages):
26 (14.94 % of base) : 248375.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
94 (9.33 % of base) : 279454.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.SymbolLoader:HasImplicitReferenceConversion(Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType):ubyte (Tier1)
18 (8.57 % of base) : 711850.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)
12 (8.11 % of base) : 108601.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) : 148959.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) : 162954.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) : 169222.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) : 68991.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)
12 (8.11 % of base) : 208603.dasm - System.Collections.Immutable.ImmutableSortedSet`1[System.__Canon]:TryCastToImmutableSortedSet(System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (Tier1)
6 (5.17 % of base) : 456176.dasm - OLEDB.Test.ModuleCore.CTestCase:get_TestModule():OLEDB.Test.ModuleCore.CTestModule:this (Tier1)
16 (4.30 % of base) : 434066.dasm - System.Xml.XmlLoader:Load(System.Xml.XmlDocument,System.Xml.XmlReader,ubyte):this (Tier1)
22 (4.20 % of base) : 144008.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.02 % of base) : 107840.dasm - Microsoft.CodeAnalysis.CachedUseSiteInfo`1[System.__Canon]:ToUseSiteInfo(System.__Canon):Microsoft.CodeAnalysis.UseSiteInfo`1[System.__Canon]:this (Tier1)
20 (3.73 % of base) : 68989.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)
22 (3.67 % of base) : 435377.dasm - System.Xml.XPath.XNodeNavigator:GetNextNamespaceDeclarationGlobal(System.Xml.Linq.XAttribute):System.Xml.Linq.XAttribute (Tier1)
32 (3.10 % of base) : 641230.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.SymbolLoader:HasImplicitReferenceConversion(Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType):ubyte (Tier1)
8 (3.03 % of base) : 395485.dasm - System.Threading.CancellationTokenSource:Invoke(System.Delegate,System.Object,System.Threading.CancellationTokenSource) (Tier1)
10 (2.91 % of base) : 208602.dasm - System.Collections.Immutable.ImmutableSortedSet`1[System.__Canon]:Union(System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableSortedSet`1[System.__Canon]:this (Tier1)
6 (2.86 % of base) : 449073.dasm - System.Xml.Schema.XsdBuilder:BuildIdentityConstraint_Refer(System.Xml.Schema.XsdBuilder,System.String) (Tier1)
78 (2.77 % of base) : 321834.dasm - System.IO.Tests.BaseSymbolicLinks_FileSystem:ResolveLinkTarget_Succeeds(System.String,ubyte):this (Tier1)
Top method improvements (percentages):
-22 (-47.83 % of base) : 622994.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
-22 (-47.83 % of base) : 594528.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
-28 (-41.18 % of base) : 332333.dasm - System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]:<StartAsyncOperation>b__11_1(System.Object):this (Tier1)
-32 (-41.03 % of base) : 1257.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-20 (-40.00 % of base) : 55076.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (Tier1)
-28 (-40.00 % of base) : 130270.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
-40 (-39.22 % of base) : 432708.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) : 123006.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:CreateInstance[System.__Canon](System.IServiceProvider,System.Object[]):System.__Canon (Tier1)
-32 (-36.36 % of base) : 619593.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
-32 (-36.36 % of base) : 101248.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.ParameterInfo,ubyte):System.__Canon (Tier1)
-30 (-34.88 % of base) : 632391.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) : 572482.dasm - Moq.Mock`1[System.__Canon]:get_Object():System.__Canon:this (Tier1)
-20 (-31.25 % of base) : 133944.dasm - Microsoft.Extensions.DependencyInjection.ServiceDescriptor:get_ImplementationFactory():System.Func`2[System.IServiceProvider,System.Object]:this (Tier1)
-24 (-30.77 % of base) : 59739.dasm - Xunit.Assert:IsAssignableFrom[System.__Canon](System.Object):System.__Canon (Tier1)
-24 (-30.77 % of base) : 122165.dasm - Xunit.Assert:IsType[System.__Canon](System.Object):System.__Canon (Tier1)
-22 (-29.73 % of base) : 147452.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) : 108451.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) : 122335.dasm - Microsoft.Extensions.DependencyInjection.Specification.DependencyInjectionSpecificationTests:CreateInstance[System.__Canon](Microsoft.Extensions.DependencyInjection.Specification.DependencyInjectionSpecificationTests+CreateInstanceFunc,System.IServiceProvider,System.Object[]):System.__Canon (Tier1)
-20 (-26.32 % of base) : 55114.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-20 (-26.32 % of base) : 611058.dasm - System.Text.Json.Serialization.Converters.StackOfTConverter`2[System.__Canon,int]:Add(byref,byref):this (Tier1)
librariestestsnotieredcompilation.run.linux.arm.Release.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 75759494 (overridden on cmd)
Total bytes of diff: 75747076 (overridden on cmd)
Total bytes of delta: -12418 (-0.02 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
152 : 208521.dasm (35.51 % of base)
152 : 204293.dasm (32.62 % of base)
152 : 211941.dasm (35.51 % of base)
80 : 181588.dasm (4.63 % of base)
30 : 95863.dasm (88.24 % of base)
26 : 93867.dasm (43.33 % of base)
26 : 94381.dasm (43.33 % of base)
22 : 69787.dasm (0.97 % of base)
12 : 69394.dasm (0.98 % of base)
12 : 77110.dasm (1.15 % of base)
10 : 3976.dasm (1.44 % of base)
8 : 67853.dasm (2.19 % of base)
8 : 74869.dasm (0.86 % of base)
6 : 69549.dasm (0.99 % of base)
6 : 155590.dasm (4.17 % of base)
6 : 75483.dasm (0.44 % of base)
6 : 75537.dasm (0.62 % of base)
4 : 155395.dasm (1.37 % of base)
4 : 96933.dasm (4.55 % of base)
4 : 37952.dasm (1.75 % of base)
Top file improvements (bytes):
-400 : 62175.dasm (-23.92 % of base)
-266 : 305580.dasm (-5.03 % of base)
-234 : 208816.dasm (-5.18 % of base)
-220 : 167346.dasm (-13.41 % of base)
-218 : 167340.dasm (-12.84 % of base)
-202 : 166228.dasm (-10.73 % of base)
-178 : 14391.dasm (-16.79 % of base)
-158 : 167342.dasm (-12.64 % of base)
-138 : 212427.dasm (-11.46 % of base)
-122 : 212329.dasm (-9.47 % of base)
-120 : 167338.dasm (-6.96 % of base)
-102 : 166911.dasm (-8.24 % of base)
-98 : 196315.dasm (-5.82 % of base)
-98 : 194946.dasm (-5.82 % of base)
-94 : 199275.dasm (-7.83 % of base)
-94 : 167343.dasm (-7.83 % of base)
-92 : 167345.dasm (-10.04 % of base)
-64 : 18508.dasm (-9.38 % of base)
-56 : 23350.dasm (-2.90 % of base)
-56 : 153430.dasm (-9.79 % of base)
74 total files with Code Size differences (54 improved, 20 regressed), 15 unchanged.
Top method regressions (bytes):
152 (35.51 % of base) : 208521.dasm - System.Tests.Int32Tests_GenericMath:CreateCheckedFromIntPtrTest() (FullOpts)
152 (32.62 % of base) : 204293.dasm - System.Tests.Int64Tests_GenericMath:CreateCheckedFromUIntPtrTest() (FullOpts)
152 (35.51 % of base) : 211941.dasm - System.Tests.UInt32Tests_GenericMath:CreateCheckedFromUIntPtrTest() (FullOpts)
80 (4.63 % of base) : 181588.dasm - System.Reflection.Tests.GetCustomAttributes_Compat:GetCustomAttributes_thisAsm():this (FullOpts)
30 (88.24 % of base) : 95863.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0:<Insert>b__2():this (FullOpts)
26 (43.33 % of base) : 93867.dasm - System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
26 (43.33 % of base) : 94381.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
22 (0.97 % of base) : 69787.dasm - System.Collections.Immutable.Tests.ImmutableSortedDictionaryTest:ToUnorderedTest():this (FullOpts)
12 (1.15 % of base) : 77110.dasm - System.Collections.Generic.SortedList`2[System.__Canon,System.__Canon]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
12 (0.98 % of base) : 69394.dasm - System.Collections.Immutable.Tests.ImmutableQueueTest:EnqueueDequeueTestHelper[System.__Canon](System.__Canon[]):this (FullOpts)
10 (1.44 % of base) : 3976.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 (2.19 % of base) : 67853.dasm - System.Collections.Frozen.FrozenSetInternalBase`2[System.__Canon,System.Collections.Frozen.LengthBucketsFrozenSet+GSW]:ComparersAreCompatible(System.Collections.Generic.IReadOnlySet`1[System.__Canon]):ubyte:this (FullOpts)
8 (0.86 % of base) : 74869.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.99 % of base) : 69549.dasm - System.Collections.Generic.SortedDictionary`2[int,System.__Canon]:.ctor(System.Collections.Generic.IDictionary`2[int,System.__Canon],System.Collections.Generic.IComparer`1[int]):this (FullOpts)
6 (0.62 % of base) : 75537.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:IntersectWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (FullOpts)
6 (0.44 % of base) : 75483.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (FullOpts)
6 (4.17 % of base) : 155590.dasm - System.Net.Security.SslStream:MakeEx(System.Security.Cryptography.X509Certificates.X509Certificate):System.Security.Cryptography.X509Certificates.X509Certificate2 (FullOpts)
4 (1.75 % of base) : 37952.dasm - FluentAssertions.Primitives.StringAssertions`1[System.__Canon]:Be(System.String,System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
4 (4.55 % of base) : 96933.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
4 (1.37 % of base) : 155395.dasm - System.Net.NegotiateAuthenticationPal:CheckHasSystemNetSecurityNative():ubyte (FullOpts)
Top method improvements (bytes):
-400 (-23.92 % of base) : 62175.dasm - System.CodeDom.Compiler.CodeGenerator:GenerateExpression(System.CodeDom.CodeExpression):this (FullOpts)
-266 (-5.03 % of base) : 305580.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) : 208816.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) : 167346.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) : 167340.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) : 166228.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) : 14391.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) : 167342.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) : 212427.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) : 212329.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) : 167338.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) : 166911.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterAliasedTestType:Write2_AliasedTestType(System.String,System.String,AliasedTestType,ubyte,ubyte):this (FullOpts)
-98 (-5.82 % of base) : 196315.dasm - DataContractJsonSerializerTests:DCJS_SuspensionManager() (FullOpts)
-98 (-5.82 % of base) : 194946.dasm - DataContractJsonSerializerTests:DCJS_SuspensionManager() (FullOpts)
-94 (-7.83 % of base) : 167343.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) : 199275.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) : 167345.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) : 18508.dasm - System.Runtime.InteropServices.Marshalling.ComVariant:As[System.__Canon]():System.__Canon:this (FullOpts)
-56 (-2.90 % of base) : 23350.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 (-9.79 % of base) : 153430.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)
Top method regressions (percentages):
30 (88.24 % of base) : 95863.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0:<Insert>b__2():this (FullOpts)
26 (43.33 % of base) : 93867.dasm - System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
26 (43.33 % of base) : 94381.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
152 (35.51 % of base) : 208521.dasm - System.Tests.Int32Tests_GenericMath:CreateCheckedFromIntPtrTest() (FullOpts)
152 (35.51 % of base) : 211941.dasm - System.Tests.UInt32Tests_GenericMath:CreateCheckedFromUIntPtrTest() (FullOpts)
152 (32.62 % of base) : 204293.dasm - System.Tests.Int64Tests_GenericMath:CreateCheckedFromUIntPtrTest() (FullOpts)
80 (4.63 % of base) : 181588.dasm - System.Reflection.Tests.GetCustomAttributes_Compat:GetCustomAttributes_thisAsm():this (FullOpts)
4 (4.55 % of base) : 96933.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
6 (4.17 % of base) : 155590.dasm - System.Net.Security.SslStream:MakeEx(System.Security.Cryptography.X509Certificates.X509Certificate):System.Security.Cryptography.X509Certificates.X509Certificate2 (FullOpts)
8 (2.19 % of base) : 67853.dasm - System.Collections.Frozen.FrozenSetInternalBase`2[System.__Canon,System.Collections.Frozen.LengthBucketsFrozenSet+GSW]:ComparersAreCompatible(System.Collections.Generic.IReadOnlySet`1[System.__Canon]):ubyte:this (FullOpts)
4 (1.75 % of base) : 37952.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) : 3976.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) : 155395.dasm - System.Net.NegotiateAuthenticationPal:CheckHasSystemNetSecurityNative():ubyte (FullOpts)
12 (1.15 % of base) : 77110.dasm - System.Collections.Generic.SortedList`2[System.__Canon,System.__Canon]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
6 (0.99 % of base) : 69549.dasm - System.Collections.Generic.SortedDictionary`2[int,System.__Canon]:.ctor(System.Collections.Generic.IDictionary`2[int,System.__Canon],System.Collections.Generic.IComparer`1[int]):this (FullOpts)
12 (0.98 % of base) : 69394.dasm - System.Collections.Immutable.Tests.ImmutableQueueTest:EnqueueDequeueTestHelper[System.__Canon](System.__Canon[]):this (FullOpts)
22 (0.97 % of base) : 69787.dasm - System.Collections.Immutable.Tests.ImmutableSortedDictionaryTest:ToUnorderedTest():this (FullOpts)
8 (0.86 % of base) : 74869.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) : 75537.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:IntersectWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (FullOpts)
6 (0.44 % of base) : 75483.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (FullOpts)
Top method improvements (percentages):
-28 (-51.85 % of base) : 87782.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) : 133670.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) : 42795.dasm - Microsoft.CodeAnalysis.Options.Option`1[System.__Canon]:Microsoft.CodeAnalysis.Options.IOption.get_DefaultValue():System.Object:this (FullOpts)
-28 (-50.00 % of base) : 48428.dasm - Microsoft.CodeAnalysis.Options.Option`1[System.__Canon]:Microsoft.CodeAnalysis.Options.IOption.get_DefaultValue():System.Object:this (FullOpts)
-28 (-50.00 % of base) : 42793.dasm - Microsoft.CodeAnalysis.Options.Option2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
-28 (-50.00 % of base) : 48423.dasm - Microsoft.CodeAnalysis.Options.Option2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
-28 (-50.00 % of base) : 48425.dasm - Microsoft.CodeAnalysis.Options.PerLanguageOption2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
-28 (-50.00 % of base) : 42790.dasm - Microsoft.CodeAnalysis.Options.PerLanguageOption2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
-22 (-47.83 % of base) : 35038.dasm - LamarCodeGeneration.Util.TypeExtensions:As[System.__Canon](System.Object):System.__Canon (FullOpts)
-22 (-47.83 % of base) : 142194.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
-20 (-43.48 % of base) : 30566.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) : 194961.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) : 194963.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) : 70217.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,int]:System.Collections.IDictionary.Remove(System.Object):this (FullOpts)
-30 (-41.67 % of base) : 70879.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,int]:System.Collections.IDictionary.Remove(System.Object):this (FullOpts)
-28 (-41.18 % of base) : 98589.dasm - System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]:<StartAsyncOperation>b__11_1(System.Object):this (FullOpts)
-40 (-39.22 % of base) : 165381.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) : 40877.dasm - Microsoft.Extensions.Logging.Testing.TestLogger+<>c__DisplayClass15_0`1[System.__Canon]:<Log>b__0(System.Object,System.Exception):System.String:this (FullOpts)
-26 (-37.14 % of base) : 186884.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) : 235617.dasm - System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1+<>c__DisplayClass10_0[System.__Canon]:<SetSetter>b__0(System.Object,System.Object):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: 10061560 (overridden on cmd)
Total bytes of diff: 10059362 (overridden on cmd)
Total bytes of delta: -2198 (-0.02 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
10 : 37058.dasm (2.60 % of base)
2 : 30098.dasm (0.24 % of base)
Top file improvements (bytes):
-62 : 36979.dasm (-22.79 % of base)
-52 : 36596.dasm (-3.02 % of base)
-44 : 36626.dasm (-20.37 % of base)
-42 : 8773.dasm (-1.10 % of base)
-40 : 34946.dasm (-8.58 % of base)
-38 : 36621.dasm (-23.46 % of base)
-36 : 32555.dasm (-5.41 % of base)
-36 : 9592.dasm (-27.69 % of base)
-36 : 8461.dasm (-6.36 % of base)
-32 : 435.dasm (-41.03 % of base)
-30 : 36996.dasm (-28.30 % of base)
-30 : 7938.dasm (-2.07 % of base)
-30 : 773.dasm (-20.55 % of base)
-30 : 5803.dasm (-19.23 % of base)
-28 : 5571.dasm (-27.45 % of base)
-28 : 12194.dasm (-23.73 % of base)
-28 : 37591.dasm (-15.56 % of base)
-28 : 10727.dasm (-24.56 % of base)
-28 : 21025.dasm (-5.36 % of base)
-28 : 37680.dasm (-51.85 % of base)
59 total files with Code Size differences (57 improved, 2 regressed), 4 unchanged.
Top method regressions (bytes):
10 (2.60 % of base) : 37058.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]:<.cctor>b__4_0(System.Object):this (FullOpts)
2 (0.24 % of base) : 30098.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) : 36979.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) : 36596.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) : 36626.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) : 8773.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) : 34946.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) : 36621.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) : 8461.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 (-27.69 % of base) : 9592.dasm - FSharp.Compiler.TypedTreeOps:targetOfSuccessDecisionTree(FSharp.Compiler.TypedTree+DecisionTree):Microsoft.FSharp.Core.FSharpOption`1[int] (FullOpts)
-36 (-5.41 % of base) : 32555.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) : 435.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) : 7938.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) : 36996.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`1[System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-30 (-19.23 % of base) : 5803.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)
-28 (-27.45 % of base) : 5571.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) : 10727.dasm - FSharp.Compiler.TypedTreeBasics:ccuOfTyconRef(FSharp.Compiler.TypedTree+EntityRef):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk] (FullOpts)
-28 (-23.73 % of base) : 12194.dasm - FSharp.Compiler.TypedTreeOps:remapAttribKind(FSharp.Compiler.TypedTreeOps+Remap,FSharp.Compiler.TypedTree+AttribKind):FSharp.Compiler.TypedTree+AttribKind (FullOpts)
-28 (-5.36 % of base) : 21025.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) : 37591.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)
-28 (-51.85 % of base) : 37680.dasm - System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]:<GetCustomAttributes>b__7_1(System.Object):System.__Canon:this (FullOpts)
Top method regressions (percentages):
10 (2.60 % of base) : 37058.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]:<.cctor>b__4_0(System.Object):this (FullOpts)
2 (0.24 % of base) : 30098.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) : 37680.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) : 435.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) : 34830.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
-30 (-28.30 % of base) : 36996.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`1[System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-36 (-27.69 % of base) : 9592.dasm - FSharp.Compiler.TypedTreeOps:targetOfSuccessDecisionTree(FSharp.Compiler.TypedTree+DecisionTree):Microsoft.FSharp.Core.FSharpOption`1[int] (FullOpts)
-28 (-27.45 % of base) : 5571.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) : 10727.dasm - FSharp.Compiler.TypedTreeBasics:ccuOfTyconRef(FSharp.Compiler.TypedTree+EntityRef):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk] (FullOpts)
-28 (-23.73 % of base) : 12194.dasm - FSharp.Compiler.TypedTreeOps:remapAttribKind(FSharp.Compiler.TypedTreeOps+Remap,FSharp.Compiler.TypedTree+AttribKind):FSharp.Compiler.TypedTree+AttribKind (FullOpts)
-18 (-23.68 % of base) : 23478.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
-38 (-23.46 % of base) : 36621.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) : 36979.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) : 21749.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) : 36626.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) : 5803.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)
-22 (-17.46 % of base) : 37070.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) : 21453.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
-26 (-16.25 % of base) : 36591.dasm - System.Management.Automation.LanguagePrimitives:ConvertTo[System.__Canon](System.Object):System.__Canon (FullOpts)
-14 (-15.91 % of base) : 27153.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (FullOpts)
windows x86
Diffs are based on 2,165,237 contexts (840,452 MinOpts, 1,324,785 FullOpts).
MISSED contexts: base: 6,850 (0.30%), diff: 133,891 (5.82%)
Overall (-87,464 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.windows.x86.checked.mch |
5,899,149 |
-1,172 |
| benchmarks.run_pgo.windows.x86.checked.mch |
27,897,496 |
-15,794 |
| benchmarks.run_tiered.windows.x86.checked.mch |
8,450,919 |
-701 |
| coreclr_tests.run.windows.x86.checked.mch |
290,776,268 |
-2,850 |
| libraries.crossgen2.windows.x86.checked.mch |
31,675,662 |
-29,627 |
| libraries.pmi.windows.x86.checked.mch |
35,754,269 |
-8,140 |
| libraries_tests.run.windows.x86.Release.mch |
157,343,197 |
-13,861 |
| librariestestsnotieredcompilation.run.windows.x86.Release.mch |
88,778,315 |
-13,100 |
| realworld.run.windows.x86.checked.mch |
7,830,537 |
-2,219 |
FullOpts (-87,464 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.windows.x86.checked.mch |
5,898,870 |
-1,172 |
| benchmarks.run_pgo.windows.x86.checked.mch |
21,284,617 |
-15,794 |
| benchmarks.run_tiered.windows.x86.checked.mch |
4,183,480 |
-701 |
| coreclr_tests.run.windows.x86.checked.mch |
89,081,963 |
-2,850 |
| libraries.crossgen2.windows.x86.checked.mch |
31,674,605 |
-29,627 |
| libraries.pmi.windows.x86.checked.mch |
35,658,955 |
-8,140 |
| libraries_tests.run.windows.x86.Release.mch |
59,186,766 |
-13,861 |
| librariestestsnotieredcompilation.run.windows.x86.Release.mch |
80,108,607 |
-13,100 |
| realworld.run.windows.x86.checked.mch |
7,534,837 |
-2,219 |
Example diffs
benchmarks.run.windows.x86.checked.mch
-14 (-41.18%) : 4911.dasm - System.Collections.TryGetValueFalse`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.TryGetValueFalse`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.TryGetValueFalse`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_M53474_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_M53474_IG02: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[edx]
- mov eax, edx
- ; gcrRegs +[eax]
- test eax, eax
- je SHORT G_M53474_IG05
- ;; size=6 bbWeight=1 PerfScore 1.50
-G_M53474_IG03: ; bbWeight=0.25, gcrefRegs=00000045 {eax edx esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=3 bbWeight=1 PerfScore 1.25
+G_M53474_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_M53474_IG05
- ;; size=14 bbWeight=0.25 PerfScore 3.00
-G_M53474_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_M53474_IG05: ; bbWeight=1, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ; gcr arg pop 0
+ ;; size=15 bbWeight=1 PerfScore 9.00
+G_M53474_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=cb9b2f1d) for method System.Collections.TryGetValueFalse`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=cb9b2f1d) for method System.Collections.TryGetValueFalse`2+<>c[System.__Canon,System.__Canon]:<Setup>b__10_1(System.__Canon):System.__Canon:this (FullOpts)
; ============================================================
-16 (-39.02%) : 7088.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%) : 11035.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%) : 14646.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():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 hoist "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 (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 (FullOpts)
; ============================================================
+6 (+9.68%) : 24239.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 hoist "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)
; ============================================================
+6 (+9.68%) : 23768.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 hoist "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)
; ============================================================
benchmarks.run_pgo.windows.x86.checked.mch
-19 (-32.76%) : 5627.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%) : 26317.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%) : 17545.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%) : 48167.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():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 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -21,46 +19,44 @@ G_M56449_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_M56449_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
xor esi, esi
mov edi, dword ptr [D1FFAB1EH]
test edi, edi
- jle SHORT G_M56449_IG07
- ;; size=12 bbWeight=1 PerfScore 3.50
-G_M56449_IG03: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov edx, gword ptr [D1FFAB1EH] ; static handle
+ jle SHORT G_M56449_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_M56449_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_M56449_IG06
- ;; size=12 bbWeight=4 PerfScore 14.00
-G_M56449_IG04: ; bbWeight=1, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz
mov ecx, 0xD1FFAB1E ; <unknown class>
- cmp dword ptr [eax], ecx
- je SHORT G_M56449_IG06
- ;; size=9 bbWeight=1 PerfScore 4.25
-G_M56449_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_M56449_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_M56449_IG03
- ;; size=15 bbWeight=4 PerfScore 11.00
-G_M56449_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=27 bbWeight=4 PerfScore 17.00
+G_M56449_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=290d237e) for method PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier0-FullOpts)
+; Total bytes of code 68, prolog size 6, PerfScore 31.25, instruction count 26, allocated bytes for code 68 (MethodHash=290d237e) for method PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier0-FullOpts)
; ============================================================
+6 (+9.68%) : 113179.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 hoist "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)
; ============================================================
+7 (+11.11%) : 117248.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 hoist "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=31 bbWeight=1 PerfScore 9.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=6 bbWeight=0.50 PerfScore 1.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=28 bbWeight=4 PerfScore 25.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 63, prolog size 5, PerfScore 40.00, instruction count 25, allocated bytes for code 63 (MethodHash=dc5f61ec) for method PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier0-FullOpts)
+; Total bytes of code 70, prolog size 6, PerfScore 41.25, instruction count 26, allocated bytes for code 70 (MethodHash=dc5f61ec) for method PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier0-FullOpts)
; ============================================================
benchmarks.run_tiered.windows.x86.checked.mch
-16 (-39.02%) : 19186.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%) : 22054.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%) : 4041.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%) : 47479.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 hoist "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%) : 28872.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 hoist "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)
; ============================================================
+7 (+11.11%) : 46973.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 hoist "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=31 bbWeight=1 PerfScore 9.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=6 bbWeight=0.50 PerfScore 1.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=28 bbWeight=4 PerfScore 25.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 63, prolog size 5, PerfScore 40.00, instruction count 25, allocated bytes for code 63 (MethodHash=984afc7f) for method PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier0-FullOpts)
+; Total bytes of code 70, prolog size 6, PerfScore 41.25, instruction count 26, allocated bytes for code 70 (MethodHash=984afc7f) for method PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier0-FullOpts)
; ============================================================
coreclr_tests.run.windows.x86.checked.mch
-19 (-32.76%) : 1245.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%) : 463885.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%) : 462688.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)
; ============================================================
+21 (+3.24%) : 519578.dasm - AA`6[byte,ubyte,uint,uint,long,ubyte]:Static2(ulong,short,byref,byref):ushort
@@ -13,43 +13,42 @@
; V02 arg2 [V02,T08] ( 7, 42 ) byref -> [ebp-0x44] EH-live single-def
; V03 arg3 [V03,T13] ( 3, 24 ) byref -> [ebp+0x08] EH-live single-def
;* V04 loc0 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-;* V05 loc1 [V05,T25] ( 0, 0 ) ushort -> zero-ref EH-live single-def
-; V06 loc2 [V06,T23] ( 5, 17 ) double -> [ebp-0x2C] do-not-enreg[Z] EH-live
+;* V05 loc1 [V05,T23] ( 0, 0 ) ushort -> zero-ref EH-live single-def
+; V06 loc2 [V06,T21] ( 5, 17 ) double -> [ebp-0x2C] do-not-enreg[Z] EH-live
; V07 loc3 [V07,T17] ( 7, 7 ) ref -> ebx class-hnd single-def <<unknown class>>
;* V08 loc4 [V08 ] ( 0, 0 ) int -> zero-ref
; V09 loc5 [V09,T14] ( 3, 24 ) byte -> eax
; V10 tmp0 [V10 ] ( 9, 9 ) struct (20) [ebp-0x40] do-not-enreg[XSF] must-init addr-exposed "NewObjArrayArgs"
-; V11 tmp1 [V11,T18] ( 2, 4 ) ref -> edx class-hnd exact single-def "NewObj constructor temp" <AA`6[byte,ubyte,uint,uint,long,ubyte]>
-; V12 tmp2 [V12,T22] ( 2, 4 ) int -> ecx "fgMakeTemp is creating a new local variable"
-; V13 tmp3 [V13,T19] ( 2, 4 ) ref -> eax class-hnd "spilling QMark2" <<unknown class>>
-; V14 tmp4 [V14,T00] ( 3,192 ) ref -> ebx class-hnd exact "Single-def Box Helper" <<unknown class>>
-; V15 tmp5 [V15,T01] ( 3,192 ) ref -> ebx "inline UNBOX clone1"
-; V16 tmp6 [V16,T02] ( 3,192 ) ref -> ebx class-hnd exact "Single-def Box Helper" <System.Char>
-; V17 tmp7 [V17,T03] ( 3,192 ) ref -> ebx "inline UNBOX clone1"
-; V18 tmp8 [V18,T06] ( 3, 48 ) int -> ecx "dup spill"
-; V19 tmp9 [V19,T10] ( 2, 32 ) int -> ebx "impSpillLclRefs"
-; V20 tmp10 [V20,T11] ( 2, 32 ) int -> eax "dup spill"
-;* V21 tmp11 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <AA`6[byte,ubyte,uint,uint,long,ubyte]>
-;* V22 tmp12 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <AA`6[byte,ubyte,uint,uint,long,ubyte]>
+; V11 tmp1 [V11,T20] ( 2, 4 ) ref -> [ebp-0x48] class-hnd exact spill-single-def "NewObj constructor temp" <AA`6[byte,ubyte,uint,uint,long,ubyte]>
+; V12 tmp2 [V12,T00] ( 3,192 ) ref -> ebx class-hnd exact "Single-def Box Helper" <<unknown class>>
+; V13 tmp3 [V13,T01] ( 3,192 ) ref -> ebx "inline UNBOX clone1"
+; V14 tmp4 [V14,T02] ( 3,192 ) ref -> ebx class-hnd exact "Single-def Box Helper" <System.Char>
+; V15 tmp5 [V15,T03] ( 3,192 ) ref -> ebx "inline UNBOX clone1"
+; V16 tmp6 [V16,T06] ( 3, 48 ) int -> ecx "dup spill"
+; V17 tmp7 [V17,T10] ( 2, 32 ) int -> ebx "impSpillLclRefs"
+; V18 tmp8 [V18,T11] ( 2, 32 ) int -> eax "dup spill"
+;* V19 tmp9 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <AA`6[byte,ubyte,uint,uint,long,ubyte]>
+;* V20 tmp10 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <AA`6[byte,ubyte,uint,uint,long,ubyte]>
+;* V21 tmp11 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
+;* V22 tmp12 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
;* V23 tmp13 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
;* V24 tmp14 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
-;* V25 tmp15 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
-;* V26 tmp16 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
-; V27 tmp17 [V27,T24] ( 4, 0 ) ref -> eax class-hnd exact single-def "dup spill" <ushort[]>
-;* V28 tmp18 [V28 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-;* V29 tmp19 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
-; V30 tmp20 [V30,T12] ( 4, 26 ) ref -> eax class-hnd exact "Inline stloc first use temp" <System.String>
-;* V31 tmp21 [V31 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
-;* V32 tmp22 [V32,T16] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
-; V33 tmp23 [V33,T20] ( 3, 6 ) int -> edx "MD array shared temp"
-; V34 tmp24 [V34,T21] ( 3, 6 ) int -> ecx "MD array shared temp"
-; V35 EHSlots [V35 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"
-; V36 cse0 [V36,T09] ( 4, 32 ) int -> ecx "CSE - moderate"
-; V37 rat0 [V37,T04] ( 3,192 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
-; V38 rat1 [V38,T07] ( 3, 48 ) int -> eax "ReplaceWithLclVar is creating a new local variable"
-; TEMP_01 int -> [ebp-0x48]
+; V25 tmp15 [V25,T22] ( 4, 0 ) ref -> eax class-hnd exact single-def "dup spill" <ushort[]>
+;* V26 tmp16 [V26 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
+;* V27 tmp17 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
+; V28 tmp18 [V28,T12] ( 4, 26 ) ref -> eax class-hnd exact "Inline stloc first use temp" <System.String>
+;* V29 tmp19 [V29 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
+;* V30 tmp20 [V30,T16] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+; V31 tmp21 [V31,T18] ( 3, 6 ) int -> ecx "MD array shared temp"
+; V32 tmp22 [V32,T19] ( 3, 6 ) int -> eax "MD array shared temp"
+; V33 EHSlots [V33 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"
+; V34 cse0 [V34,T09] ( 4, 32 ) int -> ecx "CSE - moderate"
+; V35 rat0 [V35,T04] ( 3,192 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
+; V36 rat1 [V36,T07] ( 3, 48 ) int -> eax "ReplaceWithLclVar is creating a new local variable"
+; TEMP_02 byref -> [ebp-0x4C]
+; TEMP_01 int -> [ebp-0x50]
;
-; Lcl frame size = 60
+; Lcl frame size = 68
G_M19405_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -57,11 +56,15 @@ G_M19405_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 60
+ sub esp, 68
vzeroupper
vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [ebp-0x40], ymm4
- vmovdqu xmmword ptr [ebp-0x20], xmm4
+ vmovdqu ymmword ptr [ebp-0x4C], ymm4
+ vmovdqu xmmword ptr [ebp-0x2C], xmm4
+ xor eax, eax
+ mov dword ptr [ebp-0x1C], eax
+ mov dword ptr [ebp-0x18], eax
+ mov dword ptr [ebp-0x14], eax
mov dword ptr [ebp-0x24], ecx
mov bword ptr [ebp-0x44], edx
; GC ptr vars +{V02}
@@ -69,7 +72,7 @@ G_M19405_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; byrRegs +[esi]
mov edi, bword ptr [ebp+0x08]
; byrRegs +[edi]
- ;; size=37 bbWeight=1 PerfScore 13.08
+ ;; size=48 bbWeight=1 PerfScore 16.33
G_M19405_IG02: ; bbWeight=1, gcVars=00000100 {V02}, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, gcvars, byref
mov dword ptr [ebp-0x40], 5
mov dword ptr [ebp-0x3C], 24
@@ -99,27 +102,35 @@ G_M19405_IG03: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=000000C0
mov ecx, 0xD1FFAB1E ; AA`6[byte,ubyte,uint,uint,long,ubyte]
call CORINFO_HELP_NEWSFAST
; gcrRegs +[eax]
- mov edx, eax
+ mov gword ptr [ebp-0x48], eax
+ ; GC ptr vars +{V11}
+ mov ecx, 26
+ sub ecx, dword ptr [ebx+0x10]
+ cmp ecx, dword ptr [ebx+0x08]
+ jae G_M19405_IG17
+ imul ecx, dword ptr [ebx+0x0C]
+ mov eax, 65
+ ; gcrRegs -[eax]
+ sub eax, dword ptr [ebx+0x14]
+ cmp eax, dword ptr [ebx+0x0C]
+ jae G_M19405_IG17
+ add ecx, eax
+ lea edx, bword ptr [ebx+4*ecx+0x18]
+ ; byrRegs +[edx]
+ mov bword ptr [ebp-0x4C], edx
+ mov edx, gword ptr [ebp-0x48]
; gcrRegs +[edx]
+ ; byrRegs -[edx]
mov ecx, 0xD1FFAB1E ; <unknown class>
+ ; GC ptr vars -{V11}
call CORINFO_HELP_CHKCASTARRAY
- ; gcrRegs -[edx]
- mov edx, 26
- sub edx, dword ptr [ebx+0x10]
- cmp edx, dword ptr [ebx+0x08]
- jae G_M19405_IG17
- imul edx, dword ptr [ebx+0x0C]
- mov ecx, 65
- sub ecx, dword ptr [ebx+0x14]
- cmp ecx, dword ptr [ebx+0x0C]
- jae G_M19405_IG17
- add edx, ecx
- lea edx, bword ptr [ebx+4*edx+0x18]
+ ; gcrRegs -[edx ebx] +[eax]
+ mov edx, bword ptr [ebp-0x4C]
; byrRegs +[edx]
call CORINFO_HELP_ASSIGN_REF_EAX
- ; gcrRegs -[eax ebx]
+ ; gcrRegs -[eax]
; byrRegs -[edx]
- ;; size=71 bbWeight=1 PerfScore 24.50
+ ;; size=81 bbWeight=1 PerfScore 28.25
G_M19405_IG04: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
vmovsd xmm0, qword ptr [ebp-0x2C]
vmulsd xmm0, xmm0, qword ptr [@RWD08]
@@ -269,10 +280,10 @@ G_M19405_IG19: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=000000C0 {e
mov eax, ecx
xor edx, edx
div edx:eax, dword ptr [esi]
- mov dword ptr [ebp-0x48], eax
+ mov dword ptr [ebp-0x50], eax
mov eax, ebx
xor edx, edx
- div edx:eax, dword ptr [ebp-0x48]
+ div edx:eax, dword ptr [ebp-0x50]
mov dword ptr [esi], eax
movsx eax, word ptr [ebp-0x24]
mov edx, eax
@@ -320,7 +331,7 @@ RWD08 dq 403B000000000000h ; 27
RWD16 dq 403E000000000000h ; 30
-; Total bytes of code 649, prolog size 37, PerfScore 2113.83, instruction count 174, allocated bytes for code 649 (MethodHash=5e5eb432) for method AA`6[byte,ubyte,uint,uint,long,ubyte]:Static2(ulong,short,byref,byref):ushort[] (FullOpts)
+; Total bytes of code 670, prolog size 48, PerfScore 2120.83, instruction count 181, allocated bytes for code 670 (MethodHash=5e5eb432) for method AA`6[byte,ubyte,uint,uint,long,ubyte]:Static2(ulong,short,byref,byref):ushort[] (FullOpts)
; ============================================================
*************** EH table for AA`6[byte,ubyte,uint,uint,long,ubyte]:Static2(ulong,short,byref,byref):ushort[]
+13 (+4.51%) : 244910.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)
; ============================================================
+34 (+566.67%) : 474044.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
-30 (-52.63%) : 175319.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%) : 203120.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)
; ============================================================
-45 (-50.00%) : 201685.dasm - System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1+<>cDisplayClass15_0[System.Canon]:b__0(System.Object,System.Object):ubyte:this (FullOpts)
@@ -3,94 +3,57 @@
; 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] ( 4, 3.25) ref -> esi this class-hnd single-def <System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1+<>c__DisplayClass15_0[System.__Canon]>
-; V01 arg1 [V01,T03] ( 3, 3 ) ref -> edi class-hnd single-def <System.Object>
-; V02 arg2 [V02,T05] ( 2, 1.12) ref -> ebx class-hnd single-def <System.Object>
-; V03 tmp0 [V03,T01] ( 3, 6 ) ref -> [ebp-0x10] class-hnd spill-single-def "bubbling QMark2" <<unknown class>>
-; V04 tmp1 [V04,T04] ( 3, 1.25) int -> eax "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> [ebp-0x14] class-hnd "spilling QMark2" <System.__Canon>
-; TEMP_01 int -> [ebp-0x18]
+; V00 this [V00,T00] ( 4, 4 ) ref -> esi this class-hnd single-def <System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1+<>c__DisplayClass15_0[System.__Canon]>
+; V01 arg1 [V01,T02] ( 3, 3 ) ref -> edi class-hnd single-def <System.Object>
+; V02 arg2 [V02,T04] ( 1, 1 ) ref -> [esp+0x10] class-hnd single-def <System.Object>
+; V03 tmp0 [V03,T03] ( 2, 4 ) int -> ecx "argument with side effect"
+; V04 tmp1 [V04,T01] ( 3, 6 ) ref -> ebx single-def "argument with side effect"
;
-; Lcl frame size = 12
+; Lcl frame size = 0
G_M43137_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- push ebp
- mov ebp, esp
push edi
push esi
push ebx
- sub esp, 12
mov esi, ecx
- ; gcrRegs +[esi]
mov edi, edx
; gcrRegs +[edi]
- mov ebx, gword ptr [ebp+0x08]
+ ;; size=7 bbWeight=1 PerfScore 3.50
+G_M43137_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs +[esi]
+ mov ebx, gword ptr [esi+0x04]
; gcrRegs +[ebx]
- ;; size=16 bbWeight=1 PerfScore 6.00
-G_M43137_IG02: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov eax, gword ptr [esi+0x04]
- ; gcrRegs +[eax]
- mov gword ptr [ebp-0x10], eax
- ; GC ptr vars +{V03}
- mov edx, ebx
- ; gcrRegs +[edx]
- test edx, edx
- je SHORT G_M43137_IG05
- ;; size=12 bbWeight=1 PerfScore 4.50
-G_M43137_IG03: ; bbWeight=0.25, gcVars=00000002 {V03}, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax]
- mov gword ptr [ebp-0x14], edx
- ; GC ptr vars +{V05}
- mov ecx, dword ptr [edx]
- mov dword ptr [ebp-0x18], ecx
mov ecx, dword ptr [esi]
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
- ; gcrRegs -[edx]
- mov ecx, dword ptr [ebp-0x18]
- cmp ecx, eax
- mov edx, gword ptr [ebp-0x14]
- ; gcrRegs +[edx]
- je SHORT G_M43137_IG05
- ;; size=26 bbWeight=0.25 PerfScore 3.06
-G_M43137_IG04: ; bbWeight=0.12, gcVars=00000002 {V03}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[edx]
- ; GC ptr vars -{V05}
+ ; gcr arg pop 0
mov ecx, eax
- mov edx, ebx
+ mov edx, gword ptr [esp+0x10]
; gcrRegs +[edx]
call [CORINFO_HELP_CHKCASTANY]
- ; gcrRegs -[edx ebx] +[eax]
- mov ebx, eax
- ; gcrRegs +[ebx]
- mov edx, ebx
- ; gcrRegs +[edx]
- ;; size=14 bbWeight=0.12 PerfScore 0.50
-G_M43137_IG05: ; bbWeight=1, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax ebx]
- push edx
+ ; gcrRegs -[edx] +[eax]
+ ; gcr arg pop 0
+ push eax
+ ; gcr arg push 0
mov edx, edi
- mov eax, gword ptr [ebp-0x10]
- ; gcrRegs +[eax]
- mov ecx, gword ptr [eax+0x04]
+ ; gcrRegs +[edx]
+ mov ecx, gword ptr [ebx+0x04]
; gcrRegs +[ecx]
- ; GC ptr vars -{V03}
- call [eax+0x0C]<unknown method>
- ; gcrRegs -[eax ecx edx edi]
- ;; size=12 bbWeight=1 PerfScore 7.25
-G_M43137_IG06: ; bbWeight=1, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+ call [ebx+0x0C]<unknown method>
+ ; gcrRegs -[eax ecx edx ebx edi]
+ ; gcr arg pop 1
+ ;; size=32 bbWeight=1 PerfScore 17.50
+G_M43137_IG03: ; bbWeight=1, epilog, nogc, extend
pop ebx
pop esi
pop edi
- pop ebp
ret 4
- ;; size=10 bbWeight=1 PerfScore 4.50
+ ;; size=6 bbWeight=1 PerfScore 3.50
-; Total bytes of code 90, prolog size 9, PerfScore 25.81, instruction count 39, allocated bytes for code 90 (MethodHash=916d577e) for method System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1+<>c__DisplayClass15_0[System.__Canon]:<SetShouldSerialize>b__0(System.Object,System.Object):ubyte:this (FullOpts)
+; Total bytes of code 45, prolog size 3, PerfScore 24.50, instruction count 19, allocated bytes for code 45 (MethodHash=916d577e) for method System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1+<>c__DisplayClass15_0[System.__Canon]:<SetShouldSerialize>b__0(System.Object,System.Object):ubyte:this (FullOpts)
; ============================================================
+0 (0.00%) : 217375.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%) : 215784.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%) : 58130.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%) : 235795.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%) : 292885.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%) : 28736.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%) : 152891.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%) : 68751.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%) : 208848.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
-41 (-42.27%) : 384154.dasm - System.Xml.Serialization.ReflectionXmlSerializationReaderHelper+<>cDisplayClass1_0`2[System.Canon,System.Canon]:b0(System.Object,System.Object):this (Tier1)
@@ -2,103 +2,64 @@
; Emitting BLENDED_CODE for X86 with AVX512 - Windows
; Tier1 code
; optimized code
-; ebp based frame
+; esp based frame
; partially interruptible
; 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 (Tier1)
+; 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 (Tier1)
; ============================================================
-16 (-39.02%) : 540082.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (Tier1)
@@ -8,11 +8,9 @@
; with Dynamic PGO: edge weights are valid, and fgCalledCount is 829
; 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)
; ============================================================
-16 (-39.02%) : 554472.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (Tier1)
@@ -8,11 +8,9 @@
; with Dynamic PGO: edge weights are valid, and fgCalledCount is 64088
; 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)
; ============================================================
+15 (+6.20%) : 163316.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedSystem.__Canon:System.__Canon:this (Tier1)
@@ -11,27 +11,27 @@
;
; V00 this [V00,T00] ( 9, 5.41) ref -> esi this class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode>
; V01 arg1 [V01,T01] ( 5, 4.50) byref -> edi single-def
-; V02 arg2 [V02,T09] ( 4, 1.50) int -> ebx single-def
-; V03 TypeCtx [V03,T11] ( 2, 1.38) int -> [ebp+0x08] single-def
-; V04 loc0 [V04,T04] ( 4, 3.75) ref -> [ebp-0x14] class-hnd <System.__Canon>
+; V02 arg2 [V02,T08] ( 4, 1.50) int -> [ebp+0x0C] single-def
+; V03 TypeCtx [V03,T07] ( 2, 1.75) int -> [ebp+0x08] single-def
+; V04 loc0 [V04,T03] ( 4, 3.75) 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,T03] ( 5, 5.33) ref -> ecx class-hnd single-def "spilling ret_expr" <Microsoft.CodeAnalysis.GreenNode>
+; V07 loc3 [V07,T02] ( 5, 5.33) 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.88) int -> ecx "fgMakeTemp is creating a new local variable"
-; V11 tmp4 [V11,T02] ( 5, 5.62) ref -> edx class-hnd "spilling QMark2" <System.__Canon>
-;* V12 tmp5 [V12 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V13 tmp6 [V13,T05] ( 7, 3.41) 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,T10] ( 4, 1.50) 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.69) 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, 3.38) 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, 3 ) 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.41) 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.50) 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.50) 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, 3.38) 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,59 +39,68 @@ 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_IG12
- ;; size=9 bbWeight=1 PerfScore 4.25
-G_M56915_IG03: ; bbWeight=0.75, gcVars=00000010 {V04}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref
+ jne G_M56915_IG12
+ ;; size=13 bbWeight=1 PerfScore 4.25
+G_M56915_IG03: ; bbWeight=0.75, 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_IG19
+ je G_M56915_IG15
;; size=15 bbWeight=0.75 PerfScore 4.50
G_M56915_IG04: ; bbWeight=0.41, 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.41 PerfScore 2.99
+ ;; size=13 bbWeight=0.41 PerfScore 3.40
G_M56915_IG05: ; bbWeight=0.75, 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_IG17
+ je SHORT G_M56915_IG10
cmp dword ptr [esi], 0xD1FFAB1E
- je SHORT G_M56915_IG15
+ je G_M56915_IG14
;; size=22 bbWeight=0.75 PerfScore 5.44
-G_M56915_IG06: ; bbWeight=0.41, gcVars=00000020 {V13}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref
+G_M56915_IG06: ; bbWeight=0.41, gcVars=00000010 {V11}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref
; gcrRegs -[eax edx]
; GC ptr vars -{V04}
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.41 PerfScore 3.20
+ ;; size=26 bbWeight=0.41 PerfScore 5.16
G_M56915_IG07: ; bbWeight=0.75, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
mov eax, gword ptr [ebp-0x18]
; gcrRegs +[eax]
@@ -110,39 +119,57 @@ G_M56915_IG08: ; bbWeight=0.41, 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.41 PerfScore 3.92
-G_M56915_IG09: ; bbWeight=0.75, gcrefRegs=00000001 {eax}, byrefRegs=00000080 {edi}, byref, isz
+G_M56915_IG09: ; bbWeight=0.75, 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_IG16
- ;; size=6 bbWeight=0.75 PerfScore 1.12
-G_M56915_IG10: ; bbWeight=0.38, 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_IG16
- ;; size=12 bbWeight=0.38 PerfScore 3.38
-G_M56915_IG11: ; bbWeight=0.19, gcrefRegs=00000001 {eax}, byrefRegs=00000080 {edi}, byref, isz
+ call CORINFO_HELP_CHKCASTANY
; gcrRegs -[edx]
- jmp SHORT G_M56915_IG14
- ;; size=2 bbWeight=0.19 PerfScore 0.38
-G_M56915_IG12: ; 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.75 PerfScore 8.44
+G_M56915_IG10: ; 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_IG11: ; 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_IG12: ; 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_IG17
+ jmp SHORT G_M56915_IG10
;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M56915_IG13: ; bbWeight=0.34, gcVars=00000020 {V13}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz
+G_M56915_IG13: ; bbWeight=0.34, gcVars=00000010 {V11}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz
; gcrRegs -[edx] +[esi]
; byrRegs +[edi]
- ; GC ptr vars -{V04} +{V13}
+ ; GC ptr vars -{V03} +{V11}
mov ecx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Syntax.IdentifierNameSyntax
call CORINFO_HELP_NEWSFAST
; gcrRegs +[eax]
@@ -151,7 +178,7 @@ G_M56915_IG13: ; bbWeight=0.34, 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]
@@ -162,65 +189,27 @@ G_M56915_IG13: ; bbWeight=0.34, gcVars=00000020 {V13}, gcrefRegs=00000040
; byrRegs -[edx]
jmp SHORT G_M56915_IG09
;; size=34 bbWeight=0.34 PerfScore 2.78
-G_M56915_IG14: ; bbWeight=0.19, gcrefRegs=00000001 {eax}, byrefRegs=00000080 {edi}, byref, isz
- mov edx, eax
- ; gcrRegs +[edx]
- call CORINFO_HELP_CHKCASTANY
- ; gcrRegs -[edx]
- mov edx, eax
- ; gcrRegs +[edx]
- jmp SHORT G_M56915_IG16
- ;; size=11 bbWeight=0.19 PerfScore 0.66
-G_M56915_IG15: ; bbWeight=0.34, gcVars=00000020 {V13}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz
- ; gcrRegs -[eax edx] +[esi]
- ; GC ptr vars +{V13}
+G_M56915_IG14: ; bbWeight=0.34, gcVars=00000010 {V11}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz
+ ; gcrRegs -[eax] +[esi]
+ ; GC ptr vars +{V04 V11}
mov ecx, esi
; gcrRegs +[ecx]
- mov edx, ebx
+ mov edx, dword ptr [ebp+0x0C]
call [Microsoft.CodeAnalysis.SyntaxNode:GetChildPosition(int):int:this]
; gcrRegs -[ecx]
mov ebx, eax
jmp SHORT G_M56915_IG07
- ;; size=14 bbWeight=0.34 PerfScore 1.94
-G_M56915_IG16: ; bbWeight=0.75, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000080 {edi}, gcvars, byref
- ; gcrRegs -[esi] +[edx]
...
+6 (+6.90%) : 403831.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] ( 5, 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] ( 5, 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,42 +28,44 @@ 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
je SHORT G_M5100_IG05
;; size=11 bbWeight=1 PerfScore 3.75
-G_M5100_IG03: ; bbWeight=0.50, gcrefRegs=00000045 {eax edx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ecx]
- cmp dword ptr [eax], 0xD1FFAB1E
+G_M5100_IG03: ; bbWeight=0.50, gcrefRegs=00000046 {ecx edx esi}, byrefRegs=00000000 {}, byref, isz
+ cmp dword ptr [ecx], 0xD1FFAB1E
je SHORT G_M5100_IG05
;; size=8 bbWeight=0.50 PerfScore 2.00
G_M5100_IG04: ; bbWeight=0, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
+ ; gcrRegs -[ecx]
mov ecx, 0xD1FFAB1E ; OLEDB.Test.ModuleCore.CTestModule
call CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[edx] +[eax]
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M5100_IG05: ; bbWeight=1, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
- test eax, eax
+ mov ecx, eax
+ ; gcrRegs +[ecx]
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M5100_IG05: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax]
+ test ecx, ecx
je SHORT G_M5100_IG09
+ mov eax, esi
+ ; gcrRegs +[eax]
+ test eax, eax
+ je SHORT G_M5100_IG08
+ ;; size=10 bbWeight=1 PerfScore 2.75
+G_M5100_IG06: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[ecx]
+ cmp dword ptr [eax], 0xD1FFAB1E
+ je SHORT G_M5100_IG08
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M5100_IG07: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax]
mov edx, esi
; gcrRegs +[edx]
- mov eax, edx
- test eax, eax
- je SHORT G_M5100_IG08
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M5100_IG06: ; bbWeight=0.50, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[esi]
mov ecx, 0xD1FFAB1E ; OLEDB.Test.ModuleCore.CTestModule
- cmp dword ptr [eax], ecx
- je SHORT G_M5100_IG08
- ;; size=9 bbWeight=0.50 PerfScore 2.12
-G_M5100_IG07: ; 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
+ call CORINFO_HELP_CHKCASTCLASS
+ ; gcrRegs -[edx esi] +[eax]
+ ;; size=12 bbWeight=0 PerfScore 0.00
G_M5100_IG08: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
pop esi
pop ebp
@@ -90,6 +90,6 @@ G_M5100_IG10: ; bbWeight=0, epilog, nogc, extend
ret
;; size=3 bbWeight=0 PerfScore 0.00
-; Total bytes of code 87, prolog size 4, PerfScore 15.38, instruction count 34, allocated bytes for code 87 (MethodHash=2222ec13) for method OLEDB.Test.ModuleCore.CTestCase:get_TestModule():OLEDB.Test.ModuleCore.CTestModule:this (Tier1)
+; Total bytes of code 93, prolog size 4, PerfScore 14.75, instruction count 35, allocated bytes for code 93 (MethodHash=2222ec13) for method OLEDB.Test.ModuleCore.CTestCase:get_TestModule():OLEDB.Test.ModuleCore.CTestModule:this (Tier1)
; ============================================================
+16 (+11.03%) : 219609.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
@@ -9,23 +9,22 @@
; 3 inlinees with PGO data; 9 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 12, 5.93) ref -> esi class-hnd single-def <System.Type>
+; V00 arg0 [V00,T01] ( 11, 4.93) ref -> esi class-hnd single-def <System.Type>
; V01 tmp0 [V01,T09] ( 3, 0.62) 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,T04] ( 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,T07] ( 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,T05] ( 3, 2 ) int -> ebx
-; V08 tmp7 [V08,T06] ( 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,T01] ( 2, 4 ) byref -> edi single-def "Inlining Arg"
-;* V12 tmp11 [V12,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V13 tmp12 [V13,T08] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V14 tmp13 [V14 ] ( 0, 0 ) int -> zero-ref "field V06.m_asTAddr (fldOffset=0x0)" P-INDEP
-; V15 tmp14 [V15,T02] ( 3, 3 ) int -> edi "field V09.m_asTAddr (fldOffset=0x0)" P-INDEP
-; V16 cse0 [V16,T03] ( 3, 3 ) int -> ecx "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,T03] ( 2, 4 ) byref -> ebx single-def "Inlining Arg"
+;* V11 tmp10 [V11,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V12 tmp11 [V12 ] ( 0, 0 ) int -> zero-ref "field V05.m_asTAddr (fldOffset=0x0)" P-INDEP
+; V13 tmp12 [V13,T04] ( 3, 3 ) int -> ebx "field V08.m_asTAddr (fldOffset=0x0)" P-INDEP
+; V14 cse0 [V14,T05] ( 3, 3 ) int -> ecx "CSE - aggressive"
+; V15 rat0 [V15,T00] ( 5, 7.50) ref -> edi class-hnd "replacement local" <System.RuntimeType>
;
; Lcl frame size = 0
@@ -39,80 +38,101 @@ 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
- cmp dword ptr [esi], 0xD1FFAB1E
- jne SHORT G_M8853_IG13
- mov edi, dword ptr [esi+0x0C]
- mov ecx, edi
+ 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_IG16
+ mov ebx, dword ptr [edi+0x0C]
+ mov ecx, ebx
and ecx, 2
- jne SHORT G_M8853_IG12
+ jne SHORT G_M8853_IG15
test ecx, ecx
sete cl
movzx ecx, cl
call [<unknown method>]
- mov eax, dword ptr [edi]
+ mov eax, dword ptr [ebx]
and eax, 0xD1FFAB1E
xor ebx, ebx
cmp eax, 0xD1FFAB1E
sete bl
- ;; size=49 bbWeight=1 PerfScore 15.75
-G_M8853_IG03: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ;; size=45 bbWeight=1 PerfScore 13.00
+G_M8853_IG06: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
movzx edx, bl
;; size=3 bbWeight=1 PerfScore 0.25
-G_M8853_IG04: ; bbWeight=1.00, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M8853_IG07: ; bbWeight=1.00, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[edi]
test edx, edx
- je SHORT G_M8853_IG07
+ je SHORT G_M8853_IG10
;; size=4 bbWeight=1.00 PerfScore 1.25
-G_M8853_IG05: ; bbWeight=0.69, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M8853_IG08: ; bbWeight=0.69, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi]
mov eax, 0xD1FFAB1E
; gcrRegs +[eax]
;; size=5 bbWeight=0.69 PerfScore 0.17
-G_M8853_IG06: ; bbWeight=0.69, epilog, nogc, extend
+G_M8853_IG09: ; bbWeight=0.69, epilog, nogc, extend
pop ebx
pop esi
pop edi
pop ebp
ret
;; size=5 bbWeight=0.69 PerfScore 2.07
-G_M8853_IG07: ; bbWeight=0.31, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M8853_IG10: ; bbWeight=0.31, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax] +[esi]
cmp esi, 0xD1FFAB1E
- jne SHORT G_M8853_IG10
+ jne SHORT G_M8853_IG13
;; size=8 bbWeight=0.31 PerfScore 0.39
-G_M8853_IG08: ; bbWeight=0.18, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M8853_IG11: ; bbWeight=0.18, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi]
xor eax, eax
; gcrRegs +[eax]
;; size=2 bbWeight=0.18 PerfScore 0.04
-G_M8853_IG09: ; bbWeight=0.18, epilog, nogc, extend
+G_M8853_IG12: ; bbWeight=0.18, epilog, nogc, extend
pop ebx
pop esi
pop edi
pop ebp
ret
;; size=5 bbWeight=0.18 PerfScore 0.53
-G_M8853_IG10: ; bbWeight=0.31, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M8853_IG13: ; bbWeight=0.31, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax] +[esi]
cmp dword ptr [esi], 0xD1FFAB1E
- jne SHORT G_M8853_IG14
+ jne SHORT G_M8853_IG17
mov ecx, esi
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[ecx esi] +[eax]
;; size=16 bbWeight=0.31 PerfScore 2.24
-G_M8853_IG11: ; bbWeight=0.31, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M8853_IG14: ; bbWeight=0.31, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
pop ebx
pop esi
pop edi
pop ebp
ret
;; size=5 bbWeight=0.31 PerfScore 0.93
-G_M8853_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax] +[esi]
+G_M8853_IG15: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[eax] +[esi edi]
xor ebx, ebx
- jmp SHORT G_M8853_IG03
+ jmp SHORT G_M8853_IG06
;; size=4 bbWeight=0 PerfScore 0.00
-G_M8853_IG13: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M8853_IG16: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[edi]
mov ecx, esi
; gcrRegs +[ecx]
mov eax, dword ptr [esi]
@@ -122,18 +142,18 @@ G_M8853_IG13: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000
xor edx, edx
test al, 32
setne dl
- jmp SHORT G_M8853_IG04
+ jmp SHORT G_M8853_IG07
;; size=19 bbWeight=0 PerfScore 0.00
-G_M8853_IG14: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M8853_IG17: ; 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_IG11
+ jmp SHORT G_M8853_IG14
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 145, prolog size 6, PerfScore 28.12, instruction count 62, allocated bytes for code 145 (MethodHash=a7e7dd6a) for method System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
+; Total bytes of code 161, prolog size 6, PerfScore 32.19, instruction count 70, allocated bytes for code 161 (MethodHash=a7e7dd6a) for method System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
; ============================================================
librariestestsnotieredcompilation.run.windows.x86.Release.mch
-14 (-42.42%) : 91130.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%) : 63013.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%) : 139420.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%) : 96005.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%) : 98777.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%) : 98045.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%) : 34693.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%) : 34767.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%) : 35536.dasm - System.Management.Automation.PSDataCollection`1[System.Canon]:InsertItem(System.Guid,int,System.Canon):this (FullOpts)
@@ -8,28 +8,25 @@
; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 9, 7.25) ref -> esi this class-hnd single-def <System.Management.Automation.PSDataCollection`1[System.__Canon]>
-; V01 arg1 [V01,T16] ( 1, 0.50) struct (16) [ebp+0x0C] single-def <System.Guid>
+; V00 this [V00,T00] ( 9, 7.50) ref -> esi this class-hnd single-def <System.Management.Automation.PSDataCollection`1[System.__Canon]>
+; V01 arg1 [V01,T14] ( 1, 0.50) struct (16) [ebp+0x0C] single-def <System.Guid>
; V02 arg2 [V02,T03] ( 3, 3 ) int -> edi single-def
-; V03 arg3 [V03,T10] ( 4, 2.50) ref -> ebx class-hnd <System.__Canon>
+; V03 arg3 [V03,T09] ( 4, 2.50) ref -> ebx class-hnd <System.__Canon>
;* V04 tmp0 [V04 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
; V05 tmp1 [V05,T06] ( 3, 4 ) int -> eax "VirtualCall with runtime lookup"
-;* V06 tmp2 [V06 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V07 tmp3 [V07,T11] ( 3, 2.25) ref -> eax single-def "CASTCLASS eval op1"
-; V08 tmp4 [V08,T15] ( 3, 1.25) int -> ecx "fgMakeTemp is creating a new local variable"
-; V09 tmp5 [V09,T08] ( 5, 3.75) ref -> ebx class-hnd "spilling QMark2" <System.__Canon>
-; V10 tmp6 [V10,T01] ( 4, 6 ) ref -> [ebp-0x10] class-hnd exact spill-single-def "dup spill" <<unknown class>>
-;* V11 tmp7 [V11 ] ( 0, 0 ) ref -> zero-ref single-def
-; V12 tmp8 [V12,T05] ( 4, 4 ) ref -> eax class-hnd exact single-def "NewObj constructor temp" <System.Management.Automation.DataAddingEventArgs>
-; V13 tmp9 [V13,T14] ( 2, 2 ) int -> edx "argument with side effect"
-; V14 tmp10 [V14,T07] ( 2, 4 ) ref -> ecx single-def "argument with side effect"
-; V15 rat0 [V15,T12] ( 3, 2.20) int -> ecx "Spilling to split statement for tree"
-; V16 rat1 [V16,T13] ( 3, 2 ) int -> edx "runtime lookup"
-; V17 rat2 [V17,T09] ( 3, 2.80) int -> edx "fgMakeTemp is creating a new local variable"
-; V18 rat3 [V18,T04] ( 3, 4.40) int -> ecx "Spilling to split statement for tree"
-; V19 rat4 [V19,T02] ( 3, 5.60) int -> eax "fgMakeTemp is creating a new local variable"
+; V06 tmp2 [V06,T11] ( 3, 2 ) int -> edx "spilling helperCall"
+; V07 tmp3 [V07,T01] ( 4, 6 ) ref -> [ebp-0x14] class-hnd exact spill-single-def "dup spill" <<unknown class>>
+;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref single-def
+; V09 tmp5 [V09,T05] ( 4, 4 ) ref -> eax class-hnd exact single-def "NewObj constructor temp" <System.Management.Automation.DataAddingEventArgs>
+; V10 tmp6 [V10,T12] ( 2, 2 ) ref -> edx single-def "argument with side effect"
+; V11 tmp7 [V11,T13] ( 2, 2 ) int -> [ebp-0x10] spill-single-def "argument with side effect"
+; V12 tmp8 [V12,T07] ( 2, 4 ) ref -> ecx single-def "argument with side effect"
+; V13 rat0 [V13,T10] ( 3, 2.20) int -> ecx "Spilling to split statement for tree"
+; V14 rat1 [V14,T08] ( 3, 2.80) int -> edx "fgMakeTemp is creating a new local variable"
+; V15 rat2 [V15,T04] ( 3, 4.40) int -> ecx "Spilling to split statement for tree"
+; V16 rat3 [V16,T02] ( 3, 5.60) int -> eax "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 4
+; Lcl frame size = 8
G_M47181_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -37,23 +34,23 @@ G_M47181_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- push eax
+ sub esp, 8
vzeroupper
mov esi, ecx
; gcrRegs +[esi]
mov edi, edx
mov ebx, gword ptr [ebp+0x08]
; gcrRegs +[ebx]
- ;; size=17 bbWeight=1 PerfScore 7.75
+ ;; size=19 bbWeight=1 PerfScore 7.00
G_M47181_IG02: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
mov eax, gword ptr [esi+0x0C]
; gcrRegs +[eax]
- mov gword ptr [ebp-0x10], eax
- ; GC ptr vars +{V10}
+ mov gword ptr [ebp-0x14], eax
+ ; GC ptr vars +{V07}
test eax, eax
je SHORT G_M47181_IG04
;; size=10 bbWeight=1 PerfScore 4.25
-G_M47181_IG03: ; bbWeight=0.50, gcVars=00000002 {V10}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M47181_IG03: ; bbWeight=0.50, gcVars=00000002 {V07}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax]
mov ecx, 0xD1FFAB1E ; System.Management.Automation.DataAddingEventArgs
call CORINFO_HELP_NEWSFAST
@@ -67,16 +64,16 @@ G_M47181_IG03: ; bbWeight=0.50, gcVars=00000002 {V10}, gcrefRegs=00000048
push eax
mov edx, esi
; gcrRegs +[edx]
- mov eax, gword ptr [ebp-0x10]
+ mov eax, gword ptr [ebp-0x14]
mov ecx, gword ptr [eax+0x04]
; gcrRegs +[ecx]
- ; GC ptr vars -{V10}
+ ; GC ptr vars -{V07}
call [eax+0x0C]<unknown method>
; gcrRegs -[eax ecx edx]
;; size=40 bbWeight=0.50 PerfScore 7.50
G_M47181_IG04: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
cmp byte ptr [esi+0x36], 0
- je SHORT G_M47181_IG11
+ je SHORT G_M47181_IG09
;; size=6 bbWeight=1 PerfScore 4.00
G_M47181_IG05: ; bbWeight=0.50, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [esi]
@@ -94,50 +91,41 @@ G_M47181_IG07: ; bbWeight=0.10, gcrefRegs=00000048 {ebx esi}, byrefRegs=0
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov edx, eax
;; size=12 bbWeight=0.10 PerfScore 0.15
-G_M47181_IG08: ; bbWeight=0.50, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+G_M47181_IG08: ; bbWeight=0.50, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
+ mov ecx, dword ptr [esi]
+ mov ecx, dword ptr [ecx+0x24]
+ mov ecx, dword ptr [ecx]
+ mov eax, dword ptr [ecx]
+ mov dword ptr [ebp-0x10], eax
mov ecx, ebx
; gcrRegs +[ecx]
call [System.Management.Automation.PSDataCollection`1[System.__Canon]:GetSerializedObject(System.Object):System.Management.Automation.PSObject]
; gcrRegs -[ecx ebx] +[eax]
- mov ebx, eax
- ; gcrRegs +[ebx]
- test ebx, ebx
- je SHORT G_M47181_IG11
- ;; size=14 bbWeight=0.50 PerfScore 2.38
-G_M47181_IG09: ; bbWeight=0.25, gcrefRegs=00000049 {eax ebx 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 [ebx], ecx
- je SHORT G_M47181_IG11
- ;; size=13 bbWeight=0.25 PerfScore 3.00
-G_M47181_IG10: ; bbWeight=0.12, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[ebx]
mov edx, eax
; gcrRegs +[edx]
+ mov ecx, dword ptr [ebp-0x10]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[edx]
mov ebx, eax
; gcrRegs +[ebx]
- ;; size=9 bbWeight=0.12 PerfScore 0.19
-G_M47181_IG11: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=32 bbWeight=0.50 PerfScore 7.38
+G_M47181_IG09: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
mov ecx, dword ptr [esi]
mov edx, dword ptr [ecx+0x24]
mov edx, dword ptr [edx]
mov eax, dword ptr [edx+0x0C]
test eax, eax
- je SHORT G_M47181_IG13
+ je SHORT G_M47181_IG11
;; size=14 bbWeight=1 PerfScore 9.25
-G_M47181_IG12: ; bbWeight=0.80, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M47181_IG14
+G_M47181_IG10: ; bbWeight=0.80, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M47181_IG12
;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M47181_IG13: ; bbWeight=0.20, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
+G_M47181_IG11: ; bbWeight=0.20, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
mov edx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=10 bbWeight=0.20 PerfScore 0.25
-G_M47181_IG14: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
+G_M47181_IG12: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
mov ecx, gword ptr [esi+0x04]
; gcrRegs +[ecx]
push ebx
@@ -146,15 +134,15 @@ G_M47181_IG14: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
call [eax]
; gcrRegs -[ecx ebx]
;; size=11 bbWeight=1 PerfScore 6.50
-G_M47181_IG15: ; bbWeight=1, epilog, nogc, extend
- pop ecx
+G_M47181_IG13: ; bbWeight=1, epilog, nogc, extend
+ lea esp, [ebp-0x0C]
pop ebx
pop esi
pop edi
pop ebp
ret 20
- ;; size=8 bbWeight=1 PerfScore 4.50
+ ;; size=10 bbWeight=1 PerfScore 4.50
-; Total bytes of code 182, prolog size 10, PerfScore 56.74, instruction count 71, allocated bytes for code 182 (MethodHash=50ff47b2) for method System.Management.Automation.PSDataCollection`1[System.__Canon]:InsertItem(System.Guid,int,System.__Canon):this (FullOpts)
+; Total bytes of code 182, prolog size 12, PerfScore 57.80, instruction count 68, allocated bytes for code 182 (MethodHash=50ff47b2) for method System.Management.Automation.PSDataCollection`1[System.__Canon]:InsertItem(System.Guid,int,System.__Canon):this (FullOpts)
; ============================================================
+11 (+2.60%) : 8035.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%) : 34614.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 |
90 |
78 |
10 |
2 |
-1,238 |
+66 |
| benchmarks.run_pgo.windows.x86.checked.mch |
2,292 |
2,276 |
15 |
1 |
-15,883 |
+89 |
| benchmarks.run_tiered.windows.x86.checked.mch |
55 |
45 |
8 |
2 |
-765 |
+64 |
| coreclr_tests.run.windows.x86.checked.mch |
237 |
203 |
20 |
14 |
-3,160 |
+310 |
| libraries.crossgen2.windows.x86.checked.mch |
1,027 |
1,024 |
1 |
2 |
-29,630 |
+3 |
| libraries.pmi.windows.x86.checked.mch |
544 |
499 |
25 |
20 |
-8,361 |
+221 |
| libraries_tests.run.windows.x86.Release.mch |
1,000 |
931 |
48 |
21 |
-14,432 |
+571 |
| librariestestsnotieredcompilation.run.windows.x86.Release.mch |
761 |
711 |
31 |
19 |
-13,505 |
+405 |
| realworld.run.windows.x86.checked.mch |
142 |
132 |
2 |
8 |
-2,235 |
+16 |
|
6,148 |
5,899 |
160 |
89 |
-89,209 |
+1,745 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.windows.x86.checked.mch |
22,611 |
4 |
22,607 |
223 (0.91%) |
1,875 (7.66%) |
| benchmarks.run_pgo.windows.x86.checked.mch |
101,601 |
41,883 |
59,718 |
237 (0.20%) |
18,232 (15.21%) |
| benchmarks.run_tiered.windows.x86.checked.mch |
46,670 |
28,723 |
17,947 |
166 (0.35%) |
1,310 (2.73%) |
| coreclr_tests.run.windows.x86.checked.mch |
563,998 |
320,026 |
243,972 |
531 (0.09%) |
10,737 (1.87%) |
| libraries.crossgen2.windows.x86.checked.mch |
242,286 |
15 |
242,271 |
0 (0.00%) |
58 (0.02%) |
| libraries.pmi.windows.x86.checked.mch |
274,698 |
6 |
274,692 |
2,071 (0.68%) |
30,351 (9.95%) |
| libraries_tests.run.windows.x86.Release.mch |
595,566 |
427,921 |
167,645 |
1,208 (0.19%) |
36,720 (5.81%) |
| librariestestsnotieredcompilation.run.windows.x86.Release.mch |
286,777 |
21,871 |
264,906 |
2,024 (0.64%) |
29,651 (9.37%) |
| realworld.run.windows.x86.checked.mch |
31,030 |
3 |
31,027 |
390 (1.08%) |
4,957 (13.77%) |
|
2,165,237 |
840,452 |
1,324,785 |
6,850 (0.30%) |
133,891 (5.82%) |
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: 5899149 (overridden on cmd)
Total bytes of diff: 5897977 (overridden on cmd)
Total bytes of delta: -1172 (-0.02 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
15 : 10893.dasm (2.40 % of base)
12 : 5964.dasm (3.97 % of base)
6 : 15869.dasm (9.68 % of base)
6 : 23768.dasm (9.68 % of base)
6 : 24239.dasm (9.68 % of base)
6 : 11093.dasm (9.68 % of base)
6 : 14013.dasm (9.68 % of base)
6 : 14646.dasm (9.68 % of base)
2 : 10067.dasm (0.32 % of base)
1 : 2130.dasm (0.12 % of base)
Top file improvements (bytes):
-86 : 7250.dasm (-2.47 % of base)
-47 : 10816.dasm (-1.72 % of base)
-33 : 6332.dasm (-12.55 % of base)
-33 : 20090.dasm (-9.12 % of base)
-31 : 8880.dasm (-6.42 % of base)
-30 : 8909.dasm (-11.81 % of base)
-28 : 17638.dasm (-6.10 % of base)
-26 : 2769.dasm (-18.44 % of base)
-24 : 4060.dasm (-19.35 % of base)
-24 : 10236.dasm (-11.01 % of base)
-22 : 18887.dasm (-11.64 % of base)
-22 : 17848.dasm (-27.16 % of base)
-21 : 10082.dasm (-4.61 % of base)
-20 : 9150.dasm (-11.56 % of base)
-19 : 1725.dasm (-28.79 % of base)
-19 : 678.dasm (-32.76 % of base)
-19 : 15559.dasm (-20.65 % of base)
-19 : 16440.dasm (-20.65 % of base)
-18 : 10517.dasm (-8.14 % of base)
-18 : 11035.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) : 10893.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) : 5964.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]:<.cctor>b__4_0(System.Object):this (FullOpts)
6 (9.68 % of base) : 11093.dasm - PerfLabTests.CastingPerf:FooObjIsDescendant():this (FullOpts)
6 (9.68 % of base) : 24239.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (FullOpts)
6 (9.68 % of base) : 14013.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (FullOpts)
6 (9.68 % of base) : 14646.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (FullOpts)
6 (9.68 % of base) : 15869.dasm - PerfLabTests.CastingPerf:IntObj():this (FullOpts)
6 (9.68 % of base) : 23768.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (FullOpts)
2 (0.32 % of base) : 10067.dasm - System.Xml.Serialization.TempAssembly:LoadAssemblyByPath(System.Type,System.String):System.Reflection.Assembly (FullOpts)
1 (0.12 % of base) : 2130.dasm - ProtoBuf.Internal.TypeHelper`1[System.__Canon]:.cctor() (FullOpts)
Top method improvements (bytes):
-86 (-2.47 % of base) : 7250.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) : 10816.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) : 20090.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (FullOpts)
-33 (-12.55 % of base) : 6332.dasm - System.Net.Http.Headers.HttpHeaders:AddValueToStoreValue[System.__Canon](System.__Canon,byref) (FullOpts)
-31 (-6.42 % of base) : 8880.dasm - Newtonsoft.Json.Utilities.ReflectionUtils:GetAttributes(System.Object,System.Type,ubyte):System.Attribute[] (FullOpts)
-30 (-11.81 % of base) : 8909.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (FullOpts)
-28 (-6.10 % of base) : 17638.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithAnnotationsGreen[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxAnnotation]):System.__Canon (FullOpts)
-26 (-18.44 % of base) : 2769.dasm - Microsoft.Extensions.Options.OptionsMonitor`1[System.__Canon]:add__onChange(System.Action`2[System.__Canon,System.__Canon]):this (FullOpts)
-24 (-19.35 % of base) : 4060.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) : 10236.dasm - System.Xml.Serialization.XmlSerializationWriterILGen:GenerateElement(System.Xml.Serialization.XmlMapping):System.String:this (FullOpts)
-22 (-11.64 % of base) : 18887.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-22 (-27.16 % of base) : 17848.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
-21 (-4.61 % of base) : 10082.dasm - System.Xml.Serialization.ContextAwareTables`1[System.__Canon]:GetOrCreateValue(System.Type,System.Func`2[System.__Canon,System.__Canon]):System.__Canon:this (FullOpts)
-20 (-11.56 % of base) : 9150.dasm - System.Collections.Generic.List`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
-19 (-20.65 % of base) : 16440.dasm - Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions:GetRequiredService[System.__Canon](System.IServiceProvider):System.__Canon (FullOpts)
-19 (-20.65 % of base) : 15559.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) : 1725.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
-18 (-8.04 % of base) : 14581.dasm - System.Collections.Generic.Dictionary`2[int,System.__Canon]:System.Collections.IDictionary.set_Item(System.Object,System.Object):this (FullOpts)
-18 (-8.14 % of base) : 10517.dasm - System.Collections.Perf_Frozen`1[System.__Canon]:GetUniqueValues(int):System.__Canon[]:this (FullOpts)
Top method regressions (percentages):
6 (9.68 % of base) : 11093.dasm - PerfLabTests.CastingPerf:FooObjIsDescendant():this (FullOpts)
6 (9.68 % of base) : 24239.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (FullOpts)
6 (9.68 % of base) : 14013.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (FullOpts)
6 (9.68 % of base) : 14646.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (FullOpts)
6 (9.68 % of base) : 15869.dasm - PerfLabTests.CastingPerf:IntObj():this (FullOpts)
6 (9.68 % of base) : 23768.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (FullOpts)
12 (3.97 % of base) : 5964.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]:<.cctor>b__4_0(System.Object):this (FullOpts)
15 (2.40 % of base) : 10893.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) : 10067.dasm - System.Xml.Serialization.TempAssembly:LoadAssemblyByPath(System.Type,System.String):System.Reflection.Assembly (FullOpts)
1 (0.12 % of base) : 2130.dasm - ProtoBuf.Internal.TypeHelper`1[System.__Canon]:.cctor() (FullOpts)
Top method improvements (percentages):
-14 (-41.18 % of base) : 4911.dasm - System.Collections.TryGetValueFalse`2+<>c[System.__Canon,System.__Canon]:<Setup>b__10_1(System.__Canon):System.__Canon:this (FullOpts)
-16 (-39.02 % of base) : 7088.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
-18 (-38.30 % of base) : 11035.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) : 7847.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
-19 (-28.79 % of base) : 1725.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
-22 (-27.16 % of base) : 17848.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
-17 (-22.67 % of base) : 16846.dasm - Newtonsoft.Json.JsonConvert:DeserializeObject[System.__Canon](System.String,Newtonsoft.Json.JsonSerializerSettings):System.__Canon (FullOpts)
-17 (-21.79 % of base) : 3287.dasm - Sigil.NonGeneric.Emit:CreateDelegate[System.__Canon](byref,int):System.__Canon:this (FullOpts)
-12 (-21.43 % of base) : 17378.dasm - System.Xml.Base64Decoder:SetNextOutputBuffer(System.Array,int,int):this (FullOpts)
-19 (-20.65 % of base) : 16440.dasm - Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions:GetRequiredService[System.__Canon](System.IServiceProvider):System.__Canon (FullOpts)
-19 (-20.65 % of base) : 15559.dasm - Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions:GetService[System.__Canon](System.IServiceProvider):System.__Canon (FullOpts)
-24 (-19.35 % of base) : 4060.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)
-26 (-18.44 % of base) : 2769.dasm - Microsoft.Extensions.Options.OptionsMonitor`1[System.__Canon]:add__onChange(System.Action`2[System.__Canon,System.__Canon]):this (FullOpts)
-12 (-15.38 % of base) : 13570.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) : 8629.dasm - System.Text.Json.Serialization.Converters.ListOfTConverter`2[System.__Canon,System.__Canon]:Add(byref,byref):this (FullOpts)
-15 (-14.85 % of base) : 1625.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (FullOpts)
-10 (-14.71 % of base) : 15224.dasm - MicroBenchmarks.Serializers.Json_FromStream`1[System.__Canon]:DataContractJsonSerializer_():System.__Canon:this (FullOpts)
-10 (-14.71 % of base) : 3773.dasm - MicroBenchmarks.Serializers.Xml_FromStream`1[System.__Canon]:DataContractSerializer_():System.__Canon:this (FullOpts)
-10 (-14.71 % of base) : 13484.dasm - MicroBenchmarks.Serializers.Xml_FromStream`1[System.__Canon]:XmlSerializer_():System.__Canon: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: 27897496 (overridden on cmd)
Total bytes of diff: 27881702 (overridden on cmd)
Total bytes of delta: -15794 (-0.06 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
28 : 79555.dasm (1.84 % of base)
11 : 40507.dasm (1.75 % of base)
7 : 117248.dasm (11.11 % of base)
6 : 48167.dasm (9.68 % of base)
6 : 31622.dasm (9.68 % of base)
6 : 49449.dasm (9.68 % of base)
6 : 59734.dasm (9.68 % of base)
6 : 113179.dasm (9.68 % of base)
4 : 47624.dasm (1.27 % of base)
4 : 101197.dasm (1.27 % of base)
1 : 109082.dasm (0.31 % of base)
1 : 14378.dasm (0.31 % of base)
1 : 97100.dasm (0.31 % of base)
1 : 111879.dasm (0.31 % of base)
1 : 102908.dasm (0.31 % of base)
Top file improvements (bytes):
-128 : 82217.dasm (-4.46 % of base)
-89 : 15758.dasm (-2.47 % of base)
-48 : 85707.dasm (-5.21 % of base)
-47 : 40236.dasm (-1.69 % of base)
-46 : 2841.dasm (-17.23 % of base)
-38 : 79556.dasm (-2.97 % of base)
-33 : 78332.dasm (-8.87 % of base)
-28 : 72107.dasm (-6.10 % of base)
-26 : 17545.dasm (-18.44 % of base)
-25 : 109101.dasm (-4.66 % of base)
-25 : 43696.dasm (-4.66 % of base)
-23 : 106919.dasm (-4.36 % of base)
-19 : 119553.dasm (-3.18 % of base)
-19 : 59841.dasm (-3.18 % of base)
-19 : 85018.dasm (-3.08 % of base)
-19 : 94098.dasm (-3.18 % of base)
-19 : 5627.dasm (-32.76 % of base)
-19 : 95615.dasm (-3.09 % of base)
-18 : 100121.dasm (-3.01 % of base)
-18 : 70829.dasm (-3.27 % of base)
53 total files with Code Size differences (38 improved, 15 regressed), 1 unchanged.
Top method regressions (bytes):
28 (1.84 % of base) : 79555.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:DeriveUseSiteInfoFromType(byref,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int):ubyte:this (Tier1)
11 (1.75 % of base) : 40507.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)
7 (11.11 % of base) : 117248.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier0-FullOpts)
6 (9.68 % of base) : 31622.dasm - PerfLabTests.CastingPerf:FooObjIsDescendant():this (Tier0-FullOpts)
6 (9.68 % of base) : 48167.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier0-FullOpts)
6 (9.68 % of base) : 49449.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier0-FullOpts)
6 (9.68 % of base) : 59734.dasm - PerfLabTests.CastingPerf:IntObj():this (Tier0-FullOpts)
6 (9.68 % of base) : 113179.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier0-FullOpts)
4 (1.27 % of base) : 47624.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
4 (1.27 % of base) : 101197.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
1 (0.31 % of base) : 109082.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
1 (0.31 % of base) : 14378.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
1 (0.31 % of base) : 97100.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
1 (0.31 % of base) : 111879.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
1 (0.31 % of base) : 102908.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) : 82217.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) : 15758.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.21 % of base) : 85707.dasm - Microsoft.CodeAnalysis.CSharp.LocalBinderFactory:VisitLocalDeclarationStatement(Microsoft.CodeAnalysis.CSharp.Syntax.LocalDeclarationStatementSyntax):this (Tier0-FullOpts)
-47 (-1.69 % of base) : 40236.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 (-17.23 % of base) : 2841.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
-38 (-2.97 % of base) : 79556.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:DeriveUseSiteInfoFromType(byref,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):ubyte:this (Tier1)
-33 (-8.87 % of base) : 78332.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (Tier0-FullOpts)
-28 (-6.10 % of base) : 72107.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) : 17545.dasm - Microsoft.Extensions.Options.OptionsMonitor`1[System.__Canon]:add__onChange(System.Action`2[System.__Canon,System.__Canon]):this (Tier0-FullOpts)
-25 (-4.66 % of base) : 109101.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
-25 (-4.66 % of base) : 43696.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
-23 (-4.36 % of base) : 106919.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]:<.cctor>b__4_0(System.Object):this (Tier1)
-19 (-32.76 % of base) : 5627.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-19 (-3.18 % of base) : 119553.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
-19 (-3.18 % of base) : 59841.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
-19 (-3.08 % of base) : 85018.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
-19 (-3.18 % of base) : 94098.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
-19 (-3.09 % of base) : 95615.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
-18 (-11.46 % of base) : 85880.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-18 (-3.01 % of base) : 100121.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
Top method regressions (percentages):
7 (11.11 % of base) : 117248.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier0-FullOpts)
6 (9.68 % of base) : 31622.dasm - PerfLabTests.CastingPerf:FooObjIsDescendant():this (Tier0-FullOpts)
6 (9.68 % of base) : 48167.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier0-FullOpts)
6 (9.68 % of base) : 49449.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier0-FullOpts)
6 (9.68 % of base) : 59734.dasm - PerfLabTests.CastingPerf:IntObj():this (Tier0-FullOpts)
6 (9.68 % of base) : 113179.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier0-FullOpts)
28 (1.84 % of base) : 79555.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:DeriveUseSiteInfoFromType(byref,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int):ubyte:this (Tier1)
11 (1.75 % of base) : 40507.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)
4 (1.27 % of base) : 47624.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
4 (1.27 % of base) : 101197.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
1 (0.31 % of base) : 14378.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
1 (0.31 % of base) : 97100.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
1 (0.31 % of base) : 111879.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
1 (0.31 % of base) : 109082.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
1 (0.31 % of base) : 102908.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) : 5627.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-17 (-21.79 % of base) : 26317.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
-26 (-18.44 % of base) : 17545.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) : 2841.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
-15 (-15.15 % of base) : 19826.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (Tier1)
-12 (-12.77 % of base) : 48552.dasm - System.Xml.Linq.XDocument:GetFirstNode[System.__Canon]():System.__Canon:this (Tier0-FullOpts)
-18 (-11.46 % of base) : 85880.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-10 (-10.64 % of base) : 86793.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
-33 (-8.87 % of base) : 78332.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (Tier0-FullOpts)
-14 (-7.07 % of base) : 18435.dasm - ProtoBuf.ProtoReader+State:DeserializeRootImpl[System.__Canon](System.__Canon):System.__Canon:this (FullOpts)
-28 (-6.10 % of base) : 72107.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithAnnotationsGreen[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxAnnotation]):System.__Canon (Tier0-FullOpts)
-8 (-6.06 % of base) : 85504.dasm - Microsoft.CodeAnalysis.SyntaxNode:FirstAncestorOrSelf[System.__Canon](System.Func`2[System.__Canon,ubyte],ubyte):System.__Canon:this (Tier0-FullOpts)
-14 (-5.98 % of base) : 25138.dasm - System.Linq.Enumerable+<CastIterator>d__66`1[System.__Canon]:MoveNext():ubyte:this (Tier0-FullOpts)
-48 (-5.21 % of base) : 85707.dasm - Microsoft.CodeAnalysis.CSharp.LocalBinderFactory:VisitLocalDeclarationStatement(Microsoft.CodeAnalysis.CSharp.Syntax.LocalDeclarationStatementSyntax):this (Tier0-FullOpts)
-25 (-4.66 % of base) : 109101.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
-25 (-4.66 % of base) : 43696.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
-12 (-4.55 % of base) : 1300.dasm - System.Linq.EnumerableSorter`2[System.__Canon,int]:ComputeKeys(System.__Canon[],int):this (Tier0-FullOpts)
-128 (-4.46 % of base) : 82217.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
-23 (-4.36 % of base) : 106919.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]:<.cctor>b__4_0(System.Object):this (Tier1)
-14 (-4.17 % of base) : 72644.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
benchmarks.run_tiered.windows.x86.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 8450919 (overridden on cmd)
Total bytes of diff: 8450218 (overridden on cmd)
Total bytes of delta: -701 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
15 : 22946.dasm (2.40 % of base)
12 : 46234.dasm (3.97 % of base)
7 : 46973.dasm (11.11 % of base)
6 : 28872.dasm (9.68 % of base)
6 : 47479.dasm (9.68 % of base)
6 : 25489.dasm (9.68 % of base)
6 : 27482.dasm (9.68 % of base)
6 : 30975.dasm (9.68 % of base)
Top file improvements (bytes):
-86 : 7592.dasm (-2.47 % of base)
-47 : 25437.dasm (-1.72 % of base)
-33 : 39438.dasm (-9.12 % of base)
-31 : 18104.dasm (-6.42 % of base)
-30 : 18507.dasm (-11.81 % of base)
-28 : 34069.dasm (-6.10 % of base)
-21 : 21812.dasm (-4.34 % of base)
-20 : 18655.dasm (-11.56 % of base)
-19 : 4041.dasm (-32.76 % of base)
-19 : 23504.dasm (-28.79 % of base)
-18 : 1222.dasm (-8.45 % of base)
-18 : 22054.dasm (-38.30 % of base)
-18 : 42185.dasm (-11.46 % of base)
-17 : 17184.dasm (-3.33 % of base)
-17 : 12165.dasm (-21.79 % of base)
-16 : 19186.dasm (-39.02 % of base)
-16 : 19038.dasm (-13.33 % of base)
-15 : 18560.dasm (-2.04 % of base)
-15 : 6562.dasm (-14.85 % of base)
-14 : 14113.dasm (-4.58 % of base)
50 total files with Code Size differences (42 improved, 8 regressed), 2 unchanged.
Top method regressions (bytes):
15 (2.40 % of base) : 22946.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)
12 (3.97 % of base) : 46234.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]:<.cctor>b__4_0(System.Object):this (Tier1)
7 (11.11 % of base) : 46973.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier0-FullOpts)
6 (9.68 % of base) : 25489.dasm - PerfLabTests.CastingPerf:FooObjIsDescendant():this (Tier0-FullOpts)
6 (9.68 % of base) : 47479.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier0-FullOpts)
6 (9.68 % of base) : 27482.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier0-FullOpts)
6 (9.68 % of base) : 28872.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier0-FullOpts)
6 (9.68 % of base) : 30975.dasm - PerfLabTests.CastingPerf:IntObj():this (Tier0-FullOpts)
Top method improvements (bytes):
-86 (-2.47 % of base) : 7592.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) : 25437.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) : 39438.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (Tier0-FullOpts)
-31 (-6.42 % of base) : 18104.dasm - Newtonsoft.Json.Utilities.ReflectionUtils:GetAttributes(System.Object,System.Type,ubyte):System.Attribute[] (Tier1)
-30 (-11.81 % of base) : 18507.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (Tier1)
-28 (-6.10 % of base) : 34069.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithAnnotationsGreen[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxAnnotation]):System.__Canon (Tier0-FullOpts)
-21 (-4.34 % of base) : 21812.dasm - System.Xml.Serialization.ContextAwareTables`1[System.__Canon]:GetOrCreateValue(System.Type,System.Func`2[System.__Canon,System.__Canon]):System.__Canon:this (Tier1)
-20 (-11.56 % of base) : 18655.dasm - System.Collections.Generic.List`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (Tier1)
-19 (-32.76 % of base) : 4041.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-19 (-28.79 % of base) : 23504.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
-18 (-11.46 % of base) : 42185.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-18 (-8.45 % of base) : 1222.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
-18 (-38.30 % of base) : 22054.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
-17 (-3.33 % of base) : 17184.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) : 12165.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
-16 (-39.02 % of base) : 19186.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
-16 (-13.33 % of base) : 19038.dasm - System.Text.Json.Reflection.ReflectionExtensions:GetUniqueCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
-15 (-2.04 % of base) : 18560.dasm - Newtonsoft.Json.Utilities.ExpressionReflectionDelegateFactory:CreateSet[System.__Canon](System.Reflection.PropertyInfo):System.Action`2[System.__Canon,System.__Canon]:this (Tier1)
-15 (-14.85 % of base) : 6562.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (Tier1)
-14 (-2.94 % of base) : 18407.dasm - Newtonsoft.Json.Utilities.ExpressionReflectionDelegateFactory:CreateGet[System.__Canon](System.Reflection.PropertyInfo):System.Func`2[System.__Canon,System.__Canon]:this (Tier1)
Top method regressions (percentages):
7 (11.11 % of base) : 46973.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier0-FullOpts)
6 (9.68 % of base) : 25489.dasm - PerfLabTests.CastingPerf:FooObjIsDescendant():this (Tier0-FullOpts)
6 (9.68 % of base) : 47479.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier0-FullOpts)
6 (9.68 % of base) : 27482.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier0-FullOpts)
6 (9.68 % of base) : 28872.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier0-FullOpts)
6 (9.68 % of base) : 30975.dasm - PerfLabTests.CastingPerf:IntObj():this (Tier0-FullOpts)
12 (3.97 % of base) : 46234.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]:<.cctor>b__4_0(System.Object):this (Tier1)
15 (2.40 % of base) : 22946.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)
Top method improvements (percentages):
-16 (-39.02 % of base) : 19186.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
-18 (-38.30 % of base) : 22054.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
-19 (-32.76 % of base) : 4041.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-19 (-28.79 % of base) : 23504.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
-17 (-21.79 % of base) : 12165.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
-15 (-14.85 % of base) : 6562.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (Tier1)
-16 (-13.33 % of base) : 19038.dasm - System.Text.Json.Reflection.ReflectionExtensions:GetUniqueCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
-12 (-13.33 % of base) : 46467.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)
-12 (-12.77 % of base) : 28552.dasm - System.Xml.Linq.XDocument:GetFirstNode[System.__Canon]():System.__Canon:this (Tier0-FullOpts)
-14 (-12.50 % of base) : 25444.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) : 18507.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (Tier1)
-20 (-11.56 % of base) : 18655.dasm - System.Collections.Generic.List`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (Tier1)
-18 (-11.46 % of base) : 42185.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-10 (-10.87 % of base) : 40682.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
-12 (-10.00 % of base) : 17581.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
-10 (-9.43 % of base) : 18597.dasm - System.Linq.Expressions.ExpressionVisitor:VisitAndConvert[System.__Canon](System.__Canon,System.String):System.__Canon:this (Tier1)
-33 (-9.12 % of base) : 39438.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (Tier0-FullOpts)
-10 (-8.62 % of base) : 38148.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (Tier1)
-18 (-8.45 % of base) : 1222.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
-14 (-7.91 % of base) : 1226.dasm - System.Attribute:GetCustomAttributes(System.Reflection.Assembly,System.Type,ubyte):System.Attribute[] (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: 290776268 (overridden on cmd)
Total bytes of diff: 290773418 (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 : 377630.dasm (0.81 % of base)
46 : 377651.dasm (0.81 % of base)
34 : 474044.dasm (566.67 % of base)
21 : 289423.dasm (3.23 % of base)
21 : 519578.dasm (3.24 % of base)
18 : 236106.dasm (0.77 % of base)
14 : 462420.dasm (2.78 % of base)
14 : 462607.dasm (2.78 % of base)
14 : 462737.dasm (2.78 % of base)
13 : 244910.dasm (4.51 % of base)
13 : 369813.dasm (1.90 % of base)
12 : 230111.dasm (0.70 % of base)
11 : 336810.dasm (1.75 % of base)
11 : 558039.dasm (1.75 % of base)
9 : 372502.dasm (1.31 % of base)
5 : 572081.dasm (1.74 % of base)
4 : 368027.dasm (2.22 % of base)
2 : 572237.dasm (0.23 % of base)
1 : 195555.dasm (0.31 % of base)
1 : 219865.dasm (0.31 % of base)
Top file improvements (bytes):
-128 : 277479.dasm (-4.46 % of base)
-54 : 313.dasm (-6.78 % of base)
-54 : 376033.dasm (-6.85 % of base)
-48 : 231307.dasm (-5.21 % of base)
-46 : 277426.dasm (-3.13 % of base)
-43 : 462688.dasm (-29.25 % of base)
-43 : 198498.dasm (-2.84 % of base)
-42 : 236179.dasm (-3.64 % of base)
-38 : 465071.dasm (-2.81 % of base)
-33 : 277225.dasm (-1.55 % of base)
-33 : 305.dasm (-4.66 % of base)
-33 : 375955.dasm (-4.67 % of base)
-33 : 376032.dasm (-4.73 % of base)
-33 : 477.dasm (-4.60 % of base)
-33 : 478339.dasm (-9.12 % of base)
-33 : 511829.dasm (-1.55 % of base)
-33 : 229750.dasm (-9.04 % of base)
-32 : 506338.dasm (-21.33 % of base)
-31 : 468305.dasm (-13.25 % of base)
-31 : 468318.dasm (-13.25 % of base)
72 total files with Code Size differences (52 improved, 20 regressed), 14 unchanged.
Top method regressions (bytes):
46 (0.81 % of base) : 377630.dasm - Program:TestCase0003() (FullOpts)
46 (0.81 % of base) : 377651.dasm - Program:TestCase0003() (FullOpts)
34 (566.67 % of base) : 474044.dasm - T:TestEntryPoint():int (FullOpts)
21 (3.24 % of base) : 519578.dasm - AA`6[byte,ubyte,uint,uint,long,ubyte]:Static2(ulong,short,byref,byref):ushort[] (FullOpts)
21 (3.23 % of base) : 289423.dasm - AA`6[byte,ubyte,uint,uint,long,ubyte]:Static2(ulong,short,byref,byref):ushort[] (Tier0-FullOpts)
18 (0.77 % of base) : 236106.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1)
14 (2.78 % of base) : 462420.dasm - DisabledRuntimeMarshalling.PInvokeAssemblyMarshallingDisabled.PInvokes:<Varargs_NotSupported>g__AssertThrowsCorrectException|6_1(System.Action) (FullOpts)
14 (2.78 % of base) : 462607.dasm - DisabledRuntimeMarshalling.PInvokeAssemblyMarshallingDisabled.PInvokes:<Varargs_NotSupported>g__AssertThrowsCorrectException|6_1(System.Action) (FullOpts)
14 (2.78 % of base) : 462737.dasm - DisabledRuntimeMarshalling.PInvokeAssemblyMarshallingDisabled.PInvokes:<Varargs_NotSupported>g__AssertThrowsCorrectException|6_1(System.Action) (FullOpts)
13 (1.90 % of base) : 369813.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
13 (4.51 % of base) : 244910.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler+<>c:<.cctor>b__10_0(System.Object):this (Tier1)
12 (0.70 % of base) : 230111.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:DeriveUseSiteInfoFromType(byref,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int):ubyte:this (Tier1)
11 (1.75 % of base) : 558039.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) : 336810.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) : 372502.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
5 (1.74 % of base) : 572081.dasm - Microsoft.Build.Logging.LoggerDescription:CreateForwardingLogger():Microsoft.Build.Framework.IForwardingLogger:this (FullOpts)
4 (2.22 % of base) : 368027.dasm - Internal.TypeSystem.MethodDesc:Equals(System.Object):ubyte:this (Tier1)
2 (0.23 % of base) : 572237.dasm - Microsoft.Build.Execution.BuildManager+<>c__DisplayClass100_0:<IssueBuildRequestForBuildSubmission>g__IssueBuildSubmissionToSchedulerImpl|1(Microsoft.Build.Execution.BuildSubmission,ubyte):this (FullOpts)
1 (0.31 % of base) : 195555.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
1 (0.31 % of base) : 219865.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) : 277479.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) : 376033.dasm - InterlockedCompareExchange1:PosTest2[System.__Canon]():ubyte:this (FullOpts)
-54 (-6.78 % of base) : 313.dasm - InterlockedCompareExchange1:PosTest2[System.__Canon]():ubyte:this (Tier0-FullOpts)
-48 (-5.21 % of base) : 231307.dasm - Microsoft.CodeAnalysis.CSharp.LocalBinderFactory:VisitLocalDeclarationStatement(Microsoft.CodeAnalysis.CSharp.Syntax.LocalDeclarationStatementSyntax):this (Tier0-FullOpts)
-46 (-3.13 % of base) : 277426.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:DeriveUseSiteInfoFromType(byref,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):ubyte:this (Tier1)
-43 (-2.84 % of base) : 198498.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 (Tier0-FullOpts)
-43 (-29.25 % of base) : 462688.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (FullOpts)
-42 (-3.64 % of base) : 236179.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) : 465071.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) : 376032.dasm - InterlockedCompareExchange1:PosTest1[System.__Canon]():ubyte:this (FullOpts)
-33 (-4.66 % of base) : 305.dasm - InterlockedCompareExchange1:PosTest1[System.__Canon]():ubyte:this (Tier0-FullOpts)
-33 (-4.67 % of base) : 375955.dasm - InterlockedExchange1:PosTest1[System.__Canon]():ubyte:this (FullOpts)
-33 (-4.60 % of base) : 477.dasm - InterlockedExchange1:PosTest1[System.__Canon]():ubyte:this (Tier0-FullOpts)
-33 (-1.55 % of base) : 511829.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) : 277225.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) : 478339.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (FullOpts)
-33 (-9.04 % of base) : 229750.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (Tier0-FullOpts)
-32 (-21.33 % of base) : 506338.dasm - JitTest_castclass_ldlen_array_il.Test:Main():int (FullOpts)
-31 (-13.25 % of base) : 468318.dasm - MyCounter[System.__Canon]:Decrement[System.__Canon](int):this (FullOpts)
-31 (-13.25 % of base) : 468305.dasm - MyCounter`1[System.__Canon]:Decrement[System.__Canon](int):this (FullOpts)
Top method regressions (percentages):
34 (566.67 % of base) : 474044.dasm - T:TestEntryPoint():int (FullOpts)
13 (4.51 % of base) : 244910.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler+<>c:<.cctor>b__10_0(System.Object):this (Tier1)
21 (3.24 % of base) : 519578.dasm - AA`6[byte,ubyte,uint,uint,long,ubyte]:Static2(ulong,short,byref,byref):ushort[] (FullOpts)
21 (3.23 % of base) : 289423.dasm - AA`6[byte,ubyte,uint,uint,long,ubyte]:Static2(ulong,short,byref,byref):ushort[] (Tier0-FullOpts)
14 (2.78 % of base) : 462420.dasm - DisabledRuntimeMarshalling.PInvokeAssemblyMarshallingDisabled.PInvokes:<Varargs_NotSupported>g__AssertThrowsCorrectException|6_1(System.Action) (FullOpts)
14 (2.78 % of base) : 462607.dasm - DisabledRuntimeMarshalling.PInvokeAssemblyMarshallingDisabled.PInvokes:<Varargs_NotSupported>g__AssertThrowsCorrectException|6_1(System.Action) (FullOpts)
14 (2.78 % of base) : 462737.dasm - DisabledRuntimeMarshalling.PInvokeAssemblyMarshallingDisabled.PInvokes:<Varargs_NotSupported>g__AssertThrowsCorrectException|6_1(System.Action) (FullOpts)
4 (2.22 % of base) : 368027.dasm - Internal.TypeSystem.MethodDesc:Equals(System.Object):ubyte:this (Tier1)
13 (1.90 % of base) : 369813.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
11 (1.75 % of base) : 558039.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) : 336810.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) : 572081.dasm - Microsoft.Build.Logging.LoggerDescription:CreateForwardingLogger():Microsoft.Build.Framework.IForwardingLogger:this (FullOpts)
9 (1.31 % of base) : 372502.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
46 (0.81 % of base) : 377630.dasm - Program:TestCase0003() (FullOpts)
46 (0.81 % of base) : 377651.dasm - Program:TestCase0003() (FullOpts)
18 (0.77 % of base) : 236106.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1)
12 (0.70 % of base) : 230111.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:DeriveUseSiteInfoFromType(byref,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int):ubyte:this (Tier1)
1 (0.31 % of base) : 195555.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
1 (0.31 % of base) : 219865.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
2 (0.23 % of base) : 572237.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) : 1245.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-14 (-29.79 % of base) : 463885.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
-43 (-29.25 % of base) : 462688.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (FullOpts)
-22 (-27.16 % of base) : 475891.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
-26 (-26.26 % of base) : 512755.dasm - My:foo[System.__Canon](ubyte,System.Object):System.Object (FullOpts)
-14 (-25.45 % of base) : 570691.dasm - Program+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
-15 (-25.00 % of base) : 497394.dasm - Xunit.Assert:IsType[System.__Canon](System.Object):System.__Canon (FullOpts)
-19 (-25.00 % of base) : 281627.dasm - Xunit.Assert:Throws[System.__Canon](System.Action):System.__Canon (FullOpts)
-19 (-25.00 % of base) : 452226.dasm - Xunit.Assert:Throws[System.__Canon](System.Action):System.__Canon (FullOpts)
-19 (-25.00 % of base) : 201965.dasm - Xunit.Assert:Throws[System.__Canon](System.Action):System.__Canon (Tier1)
-19 (-23.46 % of base) : 462408.dasm - Xunit.Assert:Throws[System.__Canon](System.Func`1[System.Object]):System.__Canon (FullOpts)
-19 (-23.46 % of base) : 201906.dasm - Xunit.Assert:Throws[System.__Canon](System.Func`1[System.Object]):System.__Canon (Tier1)
-32 (-21.33 % of base) : 506338.dasm - JitTest_castclass_ldlen_array_il.Test:Main():int (FullOpts)
-10 (-21.28 % of base) : 518158.dasm - Program+<>c__5`1[System.__Canon]:<GetCustomAttributes>b__5_0(Program+CustomAttributeData):System.__Canon:this (FullOpts)
-18 (-19.15 % of base) : 558007.dasm - System.CommandLine.Binding.ArgumentConverter:GetValueOrDefault[System.__Canon](System.CommandLine.Binding.ArgumentConversionResult):System.__Canon (FullOpts)
-18 (-19.15 % of base) : 338366.dasm - System.CommandLine.Binding.ArgumentConverter:GetValueOrDefault[System.__Canon](System.CommandLine.Binding.ArgumentConversionResult):System.__Canon (Tier1)
-18 (-19.15 % of base) : 363360.dasm - System.CommandLine.Binding.ArgumentConverter:GetValueOrDefault[System.__Canon](System.CommandLine.Binding.ArgumentConversionResult):System.__Canon (Tier1)
-26 (-18.31 % of base) : 558415.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) : 337698.dasm - ILCompiler.DependencyAnalysisFramework.DependencyAnalyzer`2[ILCompiler.DependencyAnalysisFramework.NoLogStrategy`1[System.__Canon],System.__Canon]:add_ComputeDependencyRoutine(System.Action`1[System.__Canon]):this (Tier0-FullOpts)
-26 (-18.31 % of base) : 337995.dasm - ILCompiler.DependencyAnalysisFramework.DependencyAnalyzer`2[ILCompiler.DependencyAnalysisFramework.NoLogStrategy`1[System.__Canon],System.__Canon]:add_NewMarkedNode(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: 31675662 (overridden on cmd)
Total bytes of diff: 31646035 (overridden on cmd)
Total bytes of delta: -29627 (-0.09 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
3 : 58130.dasm (0.70 % of base)
Top file improvements (bytes):
-219 : 201039.dasm (-5.02 % of base)
-208 : 209608.dasm (-34.61 % of base)
-204 : 209612.dasm (-33.06 % of base)
-192 : 236329.dasm (-17.20 % of base)
-180 : 236328.dasm (-17.11 % of base)
-178 : 69428.dasm (-26.22 % of base)
-169 : 70001.dasm (-23.54 % of base)
-169 : 70000.dasm (-24.14 % of base)
-168 : 236326.dasm (-17.00 % of base)
-156 : 236324.dasm (-16.88 % of base)
-144 : 236322.dasm (-16.74 % of base)
-143 : 209610.dasm (-31.29 % of base)
-140 : 209603.dasm (-31.96 % of base)
-132 : 236320.dasm (-16.58 % of base)
-123 : 70151.dasm (-18.66 % of base)
-123 : 70895.dasm (-18.66 % of base)
-120 : 236318.dasm (-16.39 % of base)
-117 : 201098.dasm (-6.81 % of base)
-109 : 172114.dasm (-10.05 % of base)
-109 : 239198.dasm (-14.83 % of base)
85 total files with Code Size differences (84 improved, 1 regressed), 2 unchanged.
Top method regressions (bytes):
3 (0.70 % of base) : 58130.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) : 201039.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) : 209608.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) : 209612.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) : 236329.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) : 236328.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) : 69428.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) : 70000.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2520[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
-169 (-23.54 % of base) : 70001.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) : 236326.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) : 236324.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) : 236322.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) : 209610.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) : 209603.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) : 236320.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) : 70895.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) : 70151.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) : 236318.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) : 201098.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) : 172114.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
-109 (-14.83 % of base) : 239198.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
Top method regressions (percentages):
3 (0.70 % of base) : 58130.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):
-74 (-54.41 % of base) : 226535.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) : 226540.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) : 226679.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) : 226684.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) : 201111.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) : 201081.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) : 175319.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) : 203120.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) : 121332.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) : 87006.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) : 235199.dasm - Microsoft.Extensions.Hosting.Internal.ConfigureContainerAdapter`1[System.__Canon]:ConfigureContainer(Microsoft.Extensions.Hosting.HostBuilderContext,System.Object):this (FullOpts)
-40 (-50.00 % of base) : 62890.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) : 224691.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) : 201117.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) : 201683.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) : 201685.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) : 233549.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) : 235274.dasm - Microsoft.Extensions.Hosting.HostApplicationBuilder+<>c__DisplayClass30_0`1[System.__Canon]:<ConfigureContainer>b__1(System.Object):this (FullOpts)
-30 (-46.15 % of base) : 192934.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.__Canon,System.__Canon]:get_Items():System.Collections.Generic.List`1[System.__Canon]:this (FullOpts)
-30 (-46.15 % of base) : 13690.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():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: 35754269 (overridden on cmd)
Total bytes of diff: 35746129 (overridden on cmd)
Total bytes of delta: -8140 (-0.02 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
52 : 99729.dasm (3.31 % of base)
30 : 92890.dasm (2.16 % of base)
26 : 208848.dasm (15.29 % of base)
20 : 68751.dasm (7.91 % of base)
14 : 208845.dasm (6.60 % of base)
11 : 230841.dasm (1.75 % of base)
8 : 166040.dasm (0.35 % of base)
8 : 166050.dasm (1.38 % of base)
5 : 152891.dasm (6.94 % of base)
5 : 152893.dasm (6.94 % of base)
5 : 148718.dasm (1.74 % of base)
5 : 208851.dasm (3.82 % of base)
4 : 239779.dasm (5.13 % of base)
4 : 266252.dasm (1.04 % of base)
4 : 241367.dasm (5.13 % of base)
3 : 205243.dasm (2.56 % of base)
3 : 152880.dasm (3.23 % of base)
2 : 154427.dasm (0.22 % of base)
2 : 303089.dasm (2.60 % of base)
2 : 191376.dasm (0.31 % of base)
Top file improvements (bytes):
-253 : 222975.dasm (-20.91 % of base)
-109 : 77632.dasm (-12.88 % of base)
-107 : 145805.dasm (-10.07 % of base)
-89 : 295479.dasm (-2.47 % of base)
-82 : 191863.dasm (-6.22 % of base)
-78 : 192508.dasm (-36.11 % of base)
-64 : 29013.dasm (-13.50 % of base)
-64 : 29020.dasm (-13.01 % of base)
-63 : 71136.dasm (-14.82 % of base)
-55 : 267383.dasm (-11.63 % of base)
-46 : 230809.dasm (-3.21 % of base)
-45 : 232338.dasm (-0.92 % of base)
-44 : 70573.dasm (-28.95 % of base)
-44 : 10114.dasm (-7.63 % of base)
-43 : 13605.dasm (-29.25 % of base)
-43 : 303087.dasm (-29.25 % of base)
-42 : 14139.dasm (-15.00 % of base)
-42 : 14205.dasm (-14.89 % of base)
-42 : 14153.dasm (-15.00 % of base)
-42 : 14167.dasm (-15.27 % of base)
68 total files with Code Size differences (45 improved, 23 regressed), 20 unchanged.
Top method regressions (bytes):
52 (3.31 % of base) : 99729.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory:XmlThreadSafetyElement(ubyte,ubyte):Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmptyElementSyntax (FullOpts)
30 (2.16 % of base) : 92890.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanXmlStringUnQuoted():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
26 (15.29 % of base) : 208848.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) : 68751.dasm - System.Data.ColumnTypeConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
14 (6.60 % of base) : 208845.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) : 230841.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) : 166050.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) : 166040.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)
5 (6.94 % of base) : 152891.dasm - Microsoft.Build.Collections.ReadOnlyEmptyDictionary`2[System.__Canon,System.Nullable`1[int]]:Contains(System.Object):ubyte:this (FullOpts)
5 (6.94 % of base) : 152893.dasm - Microsoft.Build.Collections.ReadOnlyEmptyDictionary`2[System.__Canon,System.Nullable`1[int]]:Remove(System.Object):this (FullOpts)
5 (1.74 % of base) : 148718.dasm - Microsoft.Build.Logging.LoggerDescription:CreateForwardingLogger():Microsoft.Build.Framework.IForwardingLogger:this (FullOpts)
5 (3.82 % of base) : 208851.dasm - Newtonsoft.Json.Utilities.DictionaryWrapper`2[System.__Canon,System.Nullable`1[int]]:Remove(System.Object):this (FullOpts)
4 (5.13 % of base) : 239779.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
4 (5.13 % of base) : 241367.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
4 (1.04 % of base) : 266252.dasm - System.Net.Http.Http3RequestStream:HandleReadResponseContentException(System.Exception,System.Threading.CancellationToken):this (FullOpts)
3 (3.23 % of base) : 152880.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) : 205243.dasm - Microsoft.Extensions.Hosting.Internal.ServiceFactoryAdapter`1[System.__Canon]:CreateServiceProvider(System.Object):System.IServiceProvider:this (FullOpts)
2 (0.22 % of base) : 154427.dasm - Microsoft.Build.Execution.BuildManager+<>c__DisplayClass100_0:<IssueBuildRequestForBuildSubmission>g__IssueBuildSubmissionToSchedulerImpl|1(Microsoft.Build.Execution.BuildSubmission,ubyte):this (FullOpts)
2 (2.60 % of base) : 233538.dasm - Microsoft.Internal.Collections.CollectionServices+CollectionOfObject`1[System.__Canon]:Add(System.Object):this (FullOpts)
2 (0.31 % of base) : 191376.dasm - System.Xml.Serialization.TempAssembly:LoadAssemblyByPath(System.Type,System.String):System.Reflection.Assembly (FullOpts)
Top method improvements (bytes):
-253 (-20.91 % of base) : 222975.dasm - System.CodeDom.Compiler.CodeGenerator:GenerateExpression(System.CodeDom.CodeExpression):this (FullOpts)
-109 (-12.88 % of base) : 77632.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
-107 (-10.07 % of base) : 145805.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
-89 (-2.47 % of base) : 295479.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) : 191863.dasm - System.Xml.Serialization.SchemaObjectWriter:Write54_XmlSchemaSequence(System.Xml.Schema.XmlSchemaSequence):this (FullOpts)
-78 (-36.11 % of base) : 192508.dasm - System.Xml.Serialization.XmlSchemas:ItemName(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
-64 (-13.50 % of base) : 29013.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2520[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
-64 (-13.01 % of base) : 29020.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) : 71136.dasm - System.Data.UniqueConstraint:IsConstraintViolated():ubyte:this (FullOpts)
-55 (-11.63 % of base) : 267383.dasm - System.Net.Http.Headers.ObjectCollection`1[System.__Canon]:CopyTo(System.__Canon[],int):this (FullOpts)
-46 (-3.21 % of base) : 230809.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (FullOpts)
-45 (-0.92 % of base) : 232338.dasm - System.ComponentModel.Composition.MetadataViewGenerator:GenerateInterfaceViewProxyType(System.Type):System.Type (FullOpts)
-44 (-28.95 % of base) : 70573.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) : 10114.dasm - System.Runtime.InteropServices.Marshalling.ComVariant:As[System.__Canon]():System.__Canon:this (FullOpts)
-43 (-29.25 % of base) : 13605.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (FullOpts)
-43 (-29.25 % of base) : 303087.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (FullOpts)
-42 (-15.27 % of base) : 14167.dasm - Microsoft.FSharp.Core.FSharpFunc`2[int,System.Nullable`1[int]]:InvokeFast[long,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[int,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[long,System.Nullable`1[int]]]],int,System.Nullable`1[int],long):System.Nullable`1[int] (FullOpts)
-42 (-14.89 % of base) : 14205.dasm - Microsoft.FSharp.Core.FSharpFunc`2[long,System.Nullable`1[int]]:InvokeFast[short,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[long,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[short,System.Nullable`1[int]]]],long,System.Nullable`1[int],short):System.Nullable`1[int] (FullOpts)
-42 (-15.00 % of base) : 14153.dasm - Microsoft.FSharp.Core.FSharpFunc`2[short,System.Nullable`1[int]]:InvokeFast[long,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[short,Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[long,System.Nullable`1[int]]]],short,System.Nullable`1[int],long):System.Nullable`1[int] (FullOpts)
-42 (-15.00 % of base) : 14139.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) : 208848.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) : 68751.dasm - System.Data.ColumnTypeConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
5 (6.94 % of base) : 152891.dasm - Microsoft.Build.Collections.ReadOnlyEmptyDictionary`2[System.__Canon,System.Nullable`1[int]]:Contains(System.Object):ubyte:this (FullOpts)
5 (6.94 % of base) : 152893.dasm - Microsoft.Build.Collections.ReadOnlyEmptyDictionary`2[System.__Canon,System.Nullable`1[int]]:Remove(System.Object):this (FullOpts)
14 (6.60 % of base) : 208845.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) : 239779.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
4 (5.13 % of base) : 241367.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
5 (3.82 % of base) : 208851.dasm - Newtonsoft.Json.Utilities.DictionaryWrapper`2[System.__Canon,System.Nullable`1[int]]:Remove(System.Object):this (FullOpts)
52 (3.31 % of base) : 99729.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory:XmlThreadSafetyElement(ubyte,ubyte):Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmptyElementSyntax (FullOpts)
3 (3.23 % of base) : 152880.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) : 233538.dasm - Microsoft.Internal.Collections.CollectionServices+CollectionOfObject`1[System.__Canon]:Add(System.Object):this (FullOpts)
2 (2.60 % of base) : 303089.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:GetHashCode(System.Object):int:this (FullOpts)
2 (2.60 % of base) : 13607.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:GetHashCode(System.Object):int:this (FullOpts)
3 (2.56 % of base) : 205243.dasm - Microsoft.Extensions.Hosting.Internal.ServiceFactoryAdapter`1[System.__Canon]:CreateServiceProvider(System.Object):System.IServiceProvider:this (FullOpts)
30 (2.16 % of base) : 92890.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanXmlStringUnQuoted():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
11 (1.75 % of base) : 230841.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) : 148718.dasm - Microsoft.Build.Logging.LoggerDescription:CreateForwardingLogger():Microsoft.Build.Framework.IForwardingLogger:this (FullOpts)
8 (1.38 % of base) : 166050.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) : 226086.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
4 (1.04 % of base) : 266252.dasm - System.Net.Http.Http3RequestStream:HandleReadResponseContentException(System.Exception,System.Threading.CancellationToken):this (FullOpts)
Top method improvements (percentages):
-14 (-42.42 % of base) : 235795.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) : 28736.dasm - Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
-16 (-39.02 % of base) : 292885.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
-16 (-36.36 % of base) : 108063.dasm - Roslyn.Utilities.EnumUtilities:GetValues[ubyte]():ubyte[] (FullOpts)
-16 (-36.36 % of base) : 155939.dasm - Roslyn.Utilities.EnumUtilities:GetValues[ubyte]():ubyte[] (FullOpts)
-78 (-36.11 % of base) : 192508.dasm - System.Xml.Serialization.XmlSchemas:ItemName(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
-14 (-35.90 % of base) : 73630.dasm - System.Data.Common.SqlUdtStorage:SetStorage(System.Object,System.Collections.BitArray):this (FullOpts)
-14 (-34.15 % of base) : 175209.dasm - System.Runtime.Serialization.DataNode`1[System.__Canon]:set_Value(System.Object):this (FullOpts)
-14 (-32.56 % of base) : 225909.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) : 226088.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) : 227763.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) : 189702.dasm - System.Xml.Xsl.Runtime.XmlQuerySequence`1[System.__Canon]:System.Collections.IList.IndexOf(System.Object):int:this (FullOpts)
-33 (-29.73 % of base) : 192429.dasm - System.Xml.Serialization.XmlSchemaImporter:IsMixed(System.Xml.Schema.XmlSchemaType):ubyte (FullOpts)
-19 (-29.69 % of base) : 210411.dasm - Newtonsoft.Json.Linq.JToken:ToObject[System.__Canon]():System.__Canon:this (FullOpts)
-43 (-29.25 % of base) : 13605.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (FullOpts)
-43 (-29.25 % of base) : 303087.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (FullOpts)
-14 (-29.17 % of base) : 294934.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) : 294601.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo`1+<>c__DisplayClass29_0[System.__Canon]:<SetCreateObject>b__0():System.__Canon:this (FullOpts)
-44 (-28.95 % of base) : 70573.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass16_0[System.__Canon]:<GetLinqDataView>b__4(System.Data.DataRow,System.Data.DataRow):int:this (FullOpts)
-19 (-28.79 % of base) : 146825.dasm - Microsoft.VisualBasic.Conversion:CTypeDynamic[System.__Canon](System.Object):System.__Canon (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: 157343197 (overridden on cmd)
Total bytes of diff: 157329336 (overridden on cmd)
Total bytes of delta: -13861 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
36 : 576649.dasm (1.09 % of base)
35 : 47094.dasm (2.14 % of base)
35 : 78317.dasm (2.13 % of base)
28 : 140829.dasm (6.19 % of base)
28 : 158565.dasm (1.16 % of base)
27 : 610978.dasm (3.73 % of base)
21 : 579638.dasm (1.01 % of base)
21 : 576595.dasm (2.93 % of base)
16 : 286189.dasm (2.09 % of base)
16 : 219609.dasm (11.03 % of base)
15 : 162648.dasm (6.20 % of base)
15 : 161964.dasm (6.20 % of base)
15 : 163316.dasm (6.20 % of base)
14 : 152158.dasm (0.78 % of base)
14 : 47607.dasm (0.78 % of base)
14 : 579976.dasm (0.75 % of base)
14 : 62613.dasm (2.93 % of base)
13 : 108279.dasm (1.69 % of base)
13 : 379605.dasm (0.21 % of base)
13 : 446654.dasm (0.21 % of base)
Top file improvements (bytes):
-183 : 379963.dasm (-13.74 % of base)
-164 : 377896.dasm (-11.29 % of base)
-131 : 379957.dasm (-10.15 % of base)
-129 : 445516.dasm (-5.22 % of base)
-128 : 153665.dasm (-4.32 % of base)
-107 : 81981.dasm (-2.31 % of base)
-95 : 379959.dasm (-9.66 % of base)
-89 : 317399.dasm (-2.38 % of base)
-86 : 393071.dasm (-9.91 % of base)
-86 : 76444.dasm (-3.82 % of base)
-78 : 379955.dasm (-5.69 % of base)
-72 : 379960.dasm (-7.44 % of base)
-72 : 443331.dasm (-7.56 % of base)
-67 : 507388.dasm (-2.43 % of base)
-63 : 225293.dasm (-14.82 % of base)
-61 : 599372.dasm (-1.89 % of base)
-58 : 379962.dasm (-8.32 % of base)
-58 : 47095.dasm (-4.01 % of base)
-56 : 157002.dasm (-1.25 % of base)
-56 : 78318.dasm (-3.51 % of base)
81 total files with Code Size differences (52 improved, 29 regressed), 20 unchanged.
Top method regressions (bytes):
36 (1.09 % of base) : 576649.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:CalculateUseSiteDiagnostic(byref):ubyte:this (Tier1)
35 (2.14 % of base) : 47094.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:DeriveUseSiteInfoFromType(byref,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int):ubyte:this (Tier1)
35 (2.13 % of base) : 78317.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:DeriveUseSiteInfoFromType(byref,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int):ubyte:this (Tier1)
28 (1.16 % of base) : 158565.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol:CalculateUseSiteDiagnostic(byref):ubyte:this (Tier1)
28 (6.19 % of base) : 140829.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)
27 (3.73 % of base) : 610978.dasm - Xunit.Assert+<ThrowsAnyAsync>d__141`1[System.__Canon]:MoveNext():this (Tier1)
21 (2.93 % of base) : 576595.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:MergeUseSiteInfo(byref,Microsoft.CodeAnalysis.UseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]):ubyte:this (Tier1)
21 (1.01 % of base) : 579638.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DocumentationCommentParser:ParseNameAttribute(byref,byref,byref):this (Tier1)
16 (11.03 % of base) : 219609.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
16 (2.09 % of base) : 286189.dasm - Xunit.Assert+<ThrowsAnyAsync>d__141`1[System.__Canon]:MoveNext():this (Tier1)
15 (6.20 % of base) : 162648.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRed[System.__Canon](byref,int):System.__Canon:this (Tier1)
15 (6.20 % of base) : 161964.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRed[System.__Canon](byref,int):System.__Canon:this (Tier1)
15 (6.20 % of base) : 163316.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRed[System.__Canon](byref,int):System.__Canon:this (Tier1)
14 (0.78 % of base) : 47607.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetWellKnownTypeMember(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,int,byref,ubyte):Microsoft.CodeAnalysis.CSharp.Symbol (Tier1)
14 (0.75 % of base) : 579976.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetWellKnownTypeMember(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,int,byref,ubyte):Microsoft.CodeAnalysis.CSharp.Symbol (Tier1)
14 (0.78 % of base) : 152158.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:GetUseSiteInfo():Microsoft.CodeAnalysis.UseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]:this (Tier1)
14 (2.93 % of base) : 62613.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)
13 (1.69 % of base) : 108279.dasm - System.Linq.Expressions.Compiler.VariableBinder:VisitUnary(System.Linq.Expressions.UnaryExpression):System.Linq.Expressions.Expression:this (Tier1)
13 (0.21 % of base) : 379605.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (Tier1)
13 (0.21 % of base) : 446654.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (Tier1)
Top method improvements (bytes):
-183 (-13.74 % of base) : 379963.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) : 377896.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write63_XmlSchema(System.String,System.String,System.Xml.Schema.XmlSchema,ubyte,ubyte):this (Tier0-FullOpts)
-131 (-10.15 % of base) : 379957.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write59_XmlSchemaComplexType(System.String,System.String,System.Xml.Schema.XmlSchemaComplexType,ubyte,ubyte):this (Tier0-FullOpts)
-129 (-5.22 % of base) : 445516.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1)
-128 (-4.32 % of base) : 153665.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
-107 (-2.31 % of base) : 81981.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol:CalculateUseSiteDiagnostic(byref):ubyte:this (Tier1)
-95 (-9.66 % of base) : 379959.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) : 317399.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) : 76444.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) : 393071.dasm - System.Xml.XslCompiledTransformApiTests.CSameInstanceXsltArgumentListTransform:SharedArgList(System.Object):int:this (Tier0-FullOpts)
-78 (-5.69 % of base) : 379955.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write51_XmlSchemaElement(System.String,System.String,System.Xml.Schema.XmlSchemaElement,ubyte,ubyte):this (Tier0-FullOpts)
-72 (-7.44 % of base) : 379960.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) : 443331.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write54_XmlSchemaChoice(System.String,System.String,System.Xml.Schema.XmlSchemaChoice,ubyte,ubyte):this (Tier0-FullOpts)
-67 (-2.43 % of base) : 507388.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)
-63 (-14.82 % of base) : 225293.dasm - System.Data.UniqueConstraint:IsConstraintViolated():ubyte:this (Tier0-FullOpts)
-61 (-1.89 % of base) : 599372.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol:CalculateUseSiteDiagnostic(byref):ubyte:this (Tier1)
-58 (-4.01 % of base) : 47095.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:DeriveUseSiteInfoFromType(byref,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):ubyte:this (Tier1)
-58 (-8.32 % of base) : 379962.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write31_XmlSchemaSimpleType(System.String,System.String,System.Xml.Schema.XmlSchemaSimpleType,ubyte,ubyte):this (Tier0-FullOpts)
-56 (-3.51 % of base) : 78318.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:DeriveUseSiteInfoFromType(byref,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):ubyte:this (Tier1)
-56 (-1.25 % of base) : 157002.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol:CalculateUseSiteDiagnostic(byref):ubyte:this (Tier1)
Top method regressions (percentages):
16 (11.03 % of base) : 219609.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
6 (6.90 % of base) : 403831.dasm - OLEDB.Test.ModuleCore.CTestCase:get_TestModule():OLEDB.Test.ModuleCore.CTestModule:this (Tier1)
15 (6.20 % of base) : 162648.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRed[System.__Canon](byref,int):System.__Canon:this (Tier1)
15 (6.20 % of base) : 161964.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRed[System.__Canon](byref,int):System.__Canon:this (Tier1)
15 (6.20 % of base) : 163316.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRed[System.__Canon](byref,int):System.__Canon:this (Tier1)
28 (6.19 % of base) : 140829.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)
9 (4.23 % of base) : 98280.dasm - Microsoft.CodeAnalysis.CachedUseSiteInfo`1[System.__Canon]:Expand(System.Object,byref,byref) (Tier1)
27 (3.73 % of base) : 610978.dasm - Xunit.Assert+<ThrowsAnyAsync>d__141`1[System.__Canon]:MoveNext():this (Tier1)
6 (3.19 % of base) : 352505.dasm - System.Threading.CancellationTokenSource:Invoke(System.Delegate,System.Object,System.Threading.CancellationTokenSource) (Tier1)
21 (2.93 % of base) : 576595.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:MergeUseSiteInfo(byref,Microsoft.CodeAnalysis.UseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]):ubyte:this (Tier1)
14 (2.93 % of base) : 62613.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) : 396752.dasm - System.Xml.Schema.XsdBuilder:BuildIdentityConstraint_Refer(System.Xml.Schema.XsdBuilder,System.String) (Tier1)
7 (2.80 % of base) : 161013.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRed[System.__Canon](byref,int):System.__Canon:this (Tier1)
3 (2.56 % of base) : 116381.dasm - Microsoft.Extensions.Hosting.Internal.ServiceFactoryAdapter`1[System.__Canon]:CreateServiceProvider(System.Object):System.IServiceProvider:this (Tier1)
35 (2.14 % of base) : 47094.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:DeriveUseSiteInfoFromType(byref,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int):ubyte:this (Tier1)
35 (2.13 % of base) : 78317.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:DeriveUseSiteInfoFromType(byref,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int):ubyte:this (Tier1)
8 (2.13 % of base) : 622076.dasm - System.Threading.Tasks.ConcurrentExclusiveSchedulerPair+<>c:<CompleteTaskAsync>b__30_0(System.Object):this (Tier1)
16 (2.09 % of base) : 286189.dasm - Xunit.Assert+<ThrowsAnyAsync>d__141`1[System.__Canon]:MoveNext():this (Tier1)
7 (2.02 % of base) : 98279.dasm - Microsoft.CodeAnalysis.CachedUseSiteInfo`1[System.__Canon]:ToUseSiteInfo(System.__Canon):Microsoft.CodeAnalysis.UseSiteInfo`1[System.__Canon]:this (Tier1)
11 (1.75 % of base) : 8521.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)
Top method improvements (percentages):
-41 (-42.27 % of base) : 384154.dasm - System.Xml.Serialization.ReflectionXmlSerializationReaderHelper+<>c__DisplayClass1_0`2[System.__Canon,System.__Canon]:<GetSetMemberValueDelegateWithType>b__0(System.Object,System.Object):this (Tier1)
-16 (-39.02 % of base) : 540082.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
-16 (-39.02 % of base) : 554472.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
-18 (-38.30 % of base) : 116043.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
-22 (-33.33 % of base) : 504974.dasm - Moq.Mock`1[System.__Canon]:get_Object():System.__Canon:this (Tier1)
-19 (-32.76 % of base) : 1571.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-43 (-29.25 % of base) : 108779.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (Tier1)
-14 (-25.93 % of base) : 52852.dasm - Microsoft.CodeAnalysis.CSharp.CSharpSyntaxRewriter:VisitListElement[System.__Canon](System.__Canon):System.__Canon:this (Tier1)
-14 (-25.93 % of base) : 133518.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) : 96389.dasm - System.Composition.Hosting.Providers.Lazy.LazyWithMetadataExportDescriptorProvider+<>c__DisplayClass2_3`2[System.__Canon,System.__Canon]:<GetLazyDefinitions>b__4():System.__Canon:this (Tier1)
-15 (-25.00 % of base) : 562326.dasm - System.Text.Json.Serialization.Converters.ConcurrentStackOfTConverter`2[System.__Canon,int]:Add(byref,byref):this (Tier1)
-15 (-25.00 % of base) : 557717.dasm - System.Text.Json.Serialization.Converters.QueueOfTConverter`2[System.__Canon,int]:Add(byref,byref):this (Tier1)
-15 (-25.00 % of base) : 555669.dasm - System.Text.Json.Serialization.Converters.StackOfTConverter`2[System.__Canon,int]:Add(byref,byref):this (Tier1)
-36 (-25.00 % of base) : 555904.dasm - System.Text.Json.Serialization.Converters.StackOrQueueConverter`1[System.__Canon]:Add(byref,byref):this (Tier1)
-15 (-25.00 % of base) : 116429.dasm - Xunit.Assert:IsAssignableFrom[System.__Canon](System.Object):System.__Canon (Tier1)
-15 (-25.00 % of base) : 108737.dasm - Xunit.Assert:IsType[System.__Canon](System.Object):System.__Canon (Tier1)
-19 (-25.00 % of base) : 108464.dasm - Xunit.Assert:Throws[System.__Canon](System.Action):System.__Canon (Tier1)
-19 (-25.00 % of base) : 183444.dasm - Xunit.Assert:ThrowsAny[System.__Canon](System.Action):System.__Canon (Tier1)
-16 (-23.88 % of base) : 62924.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-19 (-23.46 % of base) : 108397.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: 88778315 (overridden on cmd)
Total bytes of diff: 88765215 (overridden on cmd)
Total bytes of delta: -13100 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
186 : 177395.dasm (9.90 % of base)
37 : 187326.dasm (3.07 % of base)
36 : 151274.dasm (12.33 % of base)
18 : 72026.dasm (1.01 % of base)
18 : 98045.dasm (90.00 % of base)
17 : 96005.dasm (43.59 % of base)
17 : 98777.dasm (43.59 % of base)
11 : 4043.dasm (1.75 % of base)
9 : 78248.dasm (1.27 % of base)
6 : 206206.dasm (0.42 % of base)
6 : 207755.dasm (0.42 % of base)
4 : 99596.dasm (5.13 % of base)
4 : 71329.dasm (0.71 % of base)
3 : 38889.dasm (2.56 % of base)
3 : 37939.dasm (0.48 % of base)
2 : 37935.dasm (0.82 % of base)
2 : 38053.dasm (0.71 % of base)
2 : 37938.dasm (0.82 % of base)
2 : 38259.dasm (1.22 % of base)
2 : 38728.dasm (0.87 % of base)
Top file improvements (bytes):
-470 : 220372.dasm (-10.50 % of base)
-364 : 314140.dasm (-7.29 % of base)
-253 : 65813.dasm (-20.91 % of base)
-189 : 215066.dasm (-17.68 % of base)
-189 : 199388.dasm (-17.68 % of base)
-184 : 173071.dasm (-14.05 % of base)
-172 : 15095.dasm (-18.90 % of base)
-164 : 172188.dasm (-11.29 % of base)
-145 : 199951.dasm (-13.39 % of base)
-145 : 215057.dasm (-13.39 % of base)
-128 : 173065.dasm (-10.26 % of base)
-92 : 173067.dasm (-9.70 % of base)
-89 : 148042.dasm (-2.38 % of base)
-88 : 203747.dasm (-7.17 % of base)
-88 : 205098.dasm (-7.17 % of base)
-86 : 23849.dasm (-3.82 % of base)
-78 : 173063.dasm (-5.89 % of base)
-72 : 173068.dasm (-7.56 % of base)
-72 : 207752.dasm (-7.56 % of base)
-71 : 13294.dasm (-18.21 % of base)
79 total files with Code Size differences (53 improved, 26 regressed), 19 unchanged.
Top method regressions (bytes):
186 (9.90 % of base) : 177395.dasm - (dynamicClass):<xsl:template match="/">(System.Xml.Xsl.Runtime.XmlQueryRuntime) (FullOpts)
37 (3.07 % of base) : 187326.dasm - System.Reflection.Tests.GetCustomAttributes_Compat:GetCustomAttributes_thisAsm():this (FullOpts)
36 (12.33 % of base) : 151274.dasm - System.SpanTests.MemoryMarshalTests:CreateFromPinnedArrayString() (FullOpts)
18 (1.01 % of base) : 72026.dasm - System.Collections.Immutable.Tests.ImmutableSortedDictionaryTest:ToUnorderedTest():this (FullOpts)
18 (90.00 % of base) : 98045.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0:<Insert>b__2():this (FullOpts)
17 (43.59 % of base) : 98777.dasm - System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
17 (43.59 % of base) : 96005.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
11 (1.75 % of base) : 4043.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)
9 (1.27 % of base) : 78248.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.42 % of base) : 206206.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) : 207755.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 (0.71 % of base) : 71329.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 (5.13 % of base) : 99596.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
3 (0.48 % of base) : 37939.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) : 38889.dasm - Microsoft.Extensions.Hosting.Internal.ServiceFactoryAdapter`1[System.__Canon]:CreateServiceProvider(System.Object):System.IServiceProvider:this (FullOpts)
2 (0.71 % of base) : 38053.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) : 37938.dasm - FluentAssertions.Primitives.BooleanAssertions`1[System.__Canon]:BeFalse(System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
2 (0.82 % of base) : 37935.dasm - FluentAssertions.Primitives.BooleanAssertions`1[System.__Canon]:BeTrue(System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
2 (1.22 % of base) : 38259.dasm - FluentAssertions.Primitives.StringAssertions`1[System.__Canon]:Be(System.String,System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
2 (0.87 % of base) : 38728.dasm - FluentAssertions.Primitives.StringAssertions`1[System.__Canon]:BeEmpty(System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
Top method improvements (bytes):
-470 (-10.50 % of base) : 220372.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) : 314140.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) : 65813.dasm - System.CodeDom.Compiler.CodeGenerator:GenerateExpression(System.CodeDom.CodeExpression):this (FullOpts)
-189 (-17.68 % of base) : 215066.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) : 199388.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) : 173071.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) : 15095.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) : 172188.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) : 199951.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) : 215057.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) : 173065.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) : 173067.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) : 148042.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) : 203747.dasm - DataContractJsonSerializerTests:DCJS_SuspensionManager() (FullOpts)
-88 (-7.17 % of base) : 205098.dasm - DataContractJsonSerializerTests:DCJS_SuspensionManager() (FullOpts)
-86 (-3.82 % of base) : 23849.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) : 173063.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) : 173068.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) : 207752.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) : 13294.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) : 98045.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0:<Insert>b__2():this (FullOpts)
17 (43.59 % of base) : 98777.dasm - System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
17 (43.59 % of base) : 96005.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
36 (12.33 % of base) : 151274.dasm - System.SpanTests.MemoryMarshalTests:CreateFromPinnedArrayString() (FullOpts)
186 (9.90 % of base) : 177395.dasm - (dynamicClass):<xsl:template match="/">(System.Xml.Xsl.Runtime.XmlQueryRuntime) (FullOpts)
4 (5.13 % of base) : 99596.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
37 (3.07 % of base) : 187326.dasm - System.Reflection.Tests.GetCustomAttributes_Compat:GetCustomAttributes_thisAsm():this (FullOpts)
2 (2.60 % of base) : 84742.dasm - Microsoft.Internal.Collections.CollectionServices+CollectionOfObject`1[System.__Canon]:Add(System.Object):this (FullOpts)
3 (2.56 % of base) : 38889.dasm - Microsoft.Extensions.Hosting.Internal.ServiceFactoryAdapter`1[System.__Canon]:CreateServiceProvider(System.Object):System.IServiceProvider:this (FullOpts)
2 (1.75 % of base) : 170052.dasm - Tests.Collections.ICollectionTest`1+<>c__DisplayClass35_0[System.__Canon]:<CollectionShouldContainAllItems>b__0(System.Object):this (FullOpts)
11 (1.75 % of base) : 4043.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)
9 (1.27 % of base) : 78248.dasm - System.Collections.Generic.SortedSet`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
2 (1.22 % of base) : 38259.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) : 72519.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,int]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
18 (1.01 % of base) : 72026.dasm - System.Collections.Immutable.Tests.ImmutableSortedDictionaryTest:ToUnorderedTest():this (FullOpts)
2 (0.87 % of base) : 38728.dasm - FluentAssertions.Primitives.StringAssertions`1[System.__Canon]:BeEmpty(System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
2 (0.82 % of base) : 37938.dasm - FluentAssertions.Primitives.BooleanAssertions`1[System.__Canon]:BeFalse(System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
2 (0.82 % of base) : 37935.dasm - FluentAssertions.Primitives.BooleanAssertions`1[System.__Canon]:BeTrue(System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
2 (0.71 % of base) : 38053.dasm - FluentAssertions.Primitives.BooleanAssertions`1[System.__Canon]:Be(ubyte,System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
4 (0.71 % of base) : 71329.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)
Top method improvements (percentages):
-14 (-42.42 % of base) : 91130.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) : 63013.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) : 139420.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) : 36242.dasm - LamarCodeGeneration.Util.TypeExtensions:As[System.__Canon](System.Object):System.__Canon (FullOpts)
-16 (-39.02 % of base) : 148213.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
-14 (-38.89 % of base) : 43105.dasm - Microsoft.CodeAnalysis.Options.Option`1[System.__Canon]:Microsoft.CodeAnalysis.Options.IOption.get_DefaultValue():System.Object:this (FullOpts)
-14 (-38.89 % of base) : 48739.dasm - Microsoft.CodeAnalysis.Options.Option`1[System.__Canon]:Microsoft.CodeAnalysis.Options.IOption.get_DefaultValue():System.Object:this (FullOpts)
-14 (-38.89 % of base) : 43098.dasm - Microsoft.CodeAnalysis.Options.Option2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
-14 (-38.89 % of base) : 48733.dasm - Microsoft.CodeAnalysis.Options.Option2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
-14 (-38.89 % of base) : 48730.dasm - Microsoft.CodeAnalysis.Options.PerLanguageOption2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
-14 (-38.89 % of base) : 43100.dasm - Microsoft.CodeAnalysis.Options.PerLanguageOption2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
-14 (-32.56 % of base) : 73978.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
-14 (-32.56 % of base) : 72535.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,int]:System.Collections.IDictionary.Remove(System.Object):this (FullOpts)
-14 (-32.56 % of base) : 72968.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,int]:System.Collections.IDictionary.Remove(System.Object):this (FullOpts)
-18 (-30.51 % of base) : 173100.dasm - System.Xml.Schema.XmlSchemaSimpleType:get_DerivedFrom():System.Xml.XmlQualifiedName:this (FullOpts)
-14 (-30.43 % of base) : 100142.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) : 825.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
-33 (-29.73 % of base) : 172502.dasm - System.Xml.Serialization.XmlSchemaImporter:IsMixed(System.Xml.Schema.XmlSchemaType):ubyte (FullOpts)
-19 (-29.69 % of base) : 21116.dasm - Newtonsoft.Json.Linq.JToken:ToObject[System.__Canon]():System.__Canon:this (FullOpts)
-43 (-29.25 % of base) : 1661.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: 7830537 (overridden on cmd)
Total bytes of diff: 7828318 (overridden on cmd)
Total bytes of delta: -2219 (-0.03 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
11 : 8035.dasm (2.60 % of base)
5 : 34614.dasm (2.79 % of base)
Top file improvements (bytes):
-173 : 34615.dasm (-36.58 % of base)
-118 : 35347.dasm (-36.20 % of base)
-67 : 34326.dasm (-22.26 % of base)
-56 : 34611.dasm (-21.46 % of base)
-46 : 34443.dasm (-21.30 % of base)
-38 : 33963.dasm (-22.09 % of base)
-33 : 16414.dasm (-12.55 % of base)
-33 : 24872.dasm (-1.55 % of base)
-33 : 30485.dasm (-9.12 % of base)
-32 : 26647.dasm (-15.17 % of base)
-29 : 35771.dasm (-15.43 % of base)
-28 : 18334.dasm (-6.10 % of base)
-26 : 33938.dasm (-1.90 % of base)
-25 : 32090.dasm (-2.72 % of base)
-25 : 8433.dasm (-27.17 % of base)
-24 : 33933.dasm (-20.17 % of base)
-24 : 9660.dasm (-6.20 % of base)
-23 : 23123.dasm (-2.35 % of base)
-22 : 18823.dasm (-27.16 % of base)
-22 : 22231.dasm (-11.64 % of base)
59 total files with Code Size differences (57 improved, 2 regressed), 8 unchanged.
Top method regressions (bytes):
11 (2.60 % of base) : 8035.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) : 34614.dasm - System.Management.Automation.Interpreter.NewArrayInitInstruction`1[System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
Top method improvements (bytes):
-173 (-36.58 % of base) : 34615.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) : 35347.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) : 34326.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) : 34611.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) : 34443.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) : 33963.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) : 24872.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) : 30485.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (FullOpts)
-33 (-12.55 % of base) : 16414.dasm - System.Net.Http.Headers.HttpHeaders:AddValueToStoreValue[System.__Canon](System.__Canon,byref) (FullOpts)
-32 (-15.17 % of base) : 26647.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) : 35771.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) : 18334.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) : 33938.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) : 8433.dasm - FSharp.Compiler.TypedTreeOps:targetOfSuccessDecisionTree(FSharp.Compiler.TypedTree+DecisionTree):Microsoft.FSharp.Core.FSharpOption`1[int] (FullOpts)
-25 (-2.72 % of base) : 32090.dasm - System.Runtime.CompilerServices.CallSite`1[System.__Canon]:<MakeUpdateDelegate>g__MakeUpdateDelegateWhenCanCompileToIL|18_0(byref):System.__Canon:this (FullOpts)
-24 (-6.20 % of base) : 9660.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 (-20.17 % of base) : 33933.dasm - System.Management.Automation.LanguagePrimitives:ConvertTo[System.__Canon](System.Object):System.__Canon (FullOpts)
-23 (-2.35 % of base) : 23123.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) : 22231.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-22 (-27.16 % of base) : 18823.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
Top method regressions (percentages):
5 (2.79 % of base) : 34614.dasm - System.Management.Automation.Interpreter.NewArrayInitInstruction`1[System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
11 (2.60 % of base) : 8035.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) : 34693.dasm - System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]:<GetCustomAttributes>b__7_1(System.Object):System.__Canon:this (FullOpts)
-173 (-36.58 % of base) : 34615.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) : 35347.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) : 34767.dasm - System.Management.Automation.Language.GetSafeValueVisitor:VisitArrayExpression(System.Management.Automation.Language.ArrayExpressionAst):System.Object:this (FullOpts)
-14 (-29.79 % of base) : 32221.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
-19 (-28.79 % of base) : 20812.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
-25 (-27.17 % of base) : 8433.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) : 19135.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithDiagnosticsGreen[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.DiagnosticInfo[]):System.__Canon (FullOpts)
-67 (-22.26 % of base) : 34326.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) : 33963.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) : 34611.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) : 34443.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) : 33933.dasm - System.Management.Automation.LanguagePrimitives:ConvertTo[System.__Canon](System.Object):System.__Canon (FullOpts)
-12 (-19.67 % of base) : 4543.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) : 9608.dasm - FSharp.Compiler.TypedTreeBasics:ccuOfTyconRef(FSharp.Compiler.TypedTree+EntityRef):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk] (FullOpts)
-14 (-17.72 % of base) : 24538.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (FullOpts)
-14 (-17.50 % of base) : 34353.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`1[System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-12 (-16.44 % of base) : 9315.dasm - FSharp.Compiler.TypedTreeOps:remapAttribKind(FSharp.Compiler.TypedTreeOps+Remap,FSharp.Compiler.TypedTree+AttribKind):FSharp.Compiler.TypedTree+AttribKind (FullOpts)