Assembly Diffs
linux arm
Diffs are based on 2,100,809 contexts (829,328 MinOpts, 1,271,481 FullOpts).
MISSED contexts: base: 71,274 (3.08%), diff: 209,854 (9.08%)
Overall (+130,620 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.linux.arm.checked.mch |
9,047,232 |
-78 |
benchmarks.run_pgo.linux.arm.checked.mch |
44,462,940 |
-25,578 |
benchmarks.run_tiered.linux.arm.checked.mch |
14,457,706 |
-592 |
coreclr_tests.run.linux.arm.checked.mch |
298,554,316 |
+144,326 |
libraries.crossgen2.linux.arm.checked.mch |
34,520,558 |
-16,194 |
libraries.pmi.linux.arm.checked.mch |
36,667,164 |
-9,228 |
libraries_tests.run.linux.arm.Release.mch |
211,844,980 |
+46,244 |
librariestestsnotieredcompilation.run.linux.arm.Release.mch |
76,532,706 |
-5,962 |
realworld.run.linux.arm.checked.mch |
10,176,194 |
-2,318 |
FullOpts (+130,620 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.linux.arm.checked.mch |
8,658,030 |
-78 |
benchmarks.run_pgo.linux.arm.checked.mch |
33,262,974 |
-25,578 |
benchmarks.run_tiered.linux.arm.checked.mch |
5,804,706 |
-592 |
coreclr_tests.run.linux.arm.checked.mch |
86,076,728 |
+144,326 |
libraries.crossgen2.linux.arm.checked.mch |
34,519,328 |
-16,194 |
libraries.pmi.linux.arm.checked.mch |
36,560,940 |
-9,228 |
libraries_tests.run.linux.arm.Release.mch |
90,875,848 |
+46,244 |
librariestestsnotieredcompilation.run.linux.arm.Release.mch |
66,461,970 |
-5,962 |
realworld.run.linux.arm.checked.mch |
9,740,894 |
-2,318 |
Example diffs
benchmarks.run.linux.arm.checked.mch
-28 (-51.85%) : 4416.dasm - System.Collections.TryGetValueFalse`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.TryGetValueFalse`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.TryGetValueFalse`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_M53474_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_M53474_IG02: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r1]
- mov r0, r1
- ; gcrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M53474_IG05
;; size=6 bbWeight=1 PerfScore 3.00
-G_M53474_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_M53474_IG05
- ;; size=14 bbWeight=0.25 PerfScore 1.75
-G_M53474_IG04: ; bbWeight=0.12, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r0]
- mov r0, r2
+G_M53474_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_M53474_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_M53474_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=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 26, prolog size 4, PerfScore 11.00, instruction count 11, allocated bytes for code 26 (MethodHash=cb9b2f1d) for method System.Collections.TryGetValueFalse`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%) : 5379.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%) : 437.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
+44 (+13.84%) : 8903.dasm - System.Tests.Perf_Array:ArrayCreate3D():System.Array:this (FullOpts)
@@ -11,43 +11,42 @@
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def ptr <System.Tests.Perf_Array>
; V01 OutArgs [V01 ] ( 1, 1 ) struct (12) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Array>
-; V03 tmp2 [V03,T00] ( 4, 6 ) int -> r4 "Inlining Arg"
-; V04 tmp3 [V04,T05] ( 2, 4 ) int -> r1 "Inlining Arg"
-; V05 tmp4 [V05,T06] ( 2, 4 ) int -> r0 "Inlining Arg"
-;* V06 tmp5 [V06,T14] ( 0, 0 ) ref -> zero-ref single-def ptr "CASTCLASS eval op1"
-;* V07 tmp6 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V08 tmp7 [V08,T15] ( 0, 0 ) ref -> zero-ref class-hnd exact ptr "Inline stloc first use temp" <System.RuntimeType>
-; V09 tmp8 [V09 ] ( 4, 4 ) struct (12) [sp+0x48] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
-; V10 tmp9 [V10,T10] ( 2, 2 ) int -> r3 "Inline stloc first use temp"
-; V11 tmp10 [V11,T16] ( 1, 1 ) int -> [sp+0x44] do-not-enreg[V] "GSCookie dummy for inlinee"
-; V12 tmp11 [V12,T08] ( 2, 2 ) ref -> r0 class-hnd single-def "Inline return value spill temp" <System.Array>
-; V13 tmp12 [V13 ] ( 3, 3 ) ref -> [sp+0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Array>
-; V14 tmp13 [V14 ] ( 3, 6 ) ref -> [sp+0x3C] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ptr "Inlining Arg" <System.RuntimeType>
-; V15 tmp14 [V15 ] ( 5, 10 ) struct ( 8) [sp+0x34] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallTypeHandle>
-;* V16 tmp15 [V16 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg "impAppendStmt" <System.Runtime.CompilerServices.QCallTypeHandle>
-;* V17 tmp16 [V17 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Runtime.CompilerServices.ObjectHandleOnStack>
-; V18 tmp17 [V18,T02] ( 3, 5 ) ref -> r0 class-hnd exact single-def "dup spill" <System.RuntimeType>
-; V19 tmp18 [V19,T09] ( 2, 2 ) byref -> r1 single-def
-;* V20 tmp19 [V20 ] ( 0, 0 ) ref -> zero-ref single-def ptr
-;* V21 tmp20 [V21 ] ( 0, 0 ) byref -> zero-ref single-def ptr
-; V22 tmp21 [V22,T07] ( 3, 2 ) int -> r2
-;* V23 tmp22 [V23 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ObjectHandleOnStack>
-;* V24 tmp23 [V24 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V25 tmp24 [V25 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V26 tmp25 [V26,T04] ( 2, 4 ) ref -> r0 single-def "Single return block return value"
-; V27 FramesRoot [V27,T01] ( 5, 5 ) int -> r5 "Pinvoke FrameListRoot"
-; V28 PInvokeFrame [V28 ] ( 6, 6 ) struct (36) [sp+0x10] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
-; V29 tmp28 [V29 ] ( 4, 6 ) int -> [sp+0x34] do-not-enreg[X] addr-exposed "field V15._ptr (fldOffset=0x0)" P-DEP
-; V30 tmp29 [V30 ] ( 3, 5 ) int -> [sp+0x38] do-not-enreg[X] addr-exposed "field V15._handle (fldOffset=0x4)" P-DEP
-; V31 tmp30 [V31,T11] ( 2, 2 ) int -> r0 "field V16._ptr (fldOffset=0x0)" P-INDEP
-; V32 tmp31 [V32,T12] ( 2, 2 ) int -> r1 "field V16._handle (fldOffset=0x4)" P-INDEP
-;* V33 tmp32 [V33 ] ( 0, 0 ) int -> zero-ref "field V17._ptr (fldOffset=0x0)" P-INDEP
-; V34 tmp33 [V34,T13] ( 2, 2 ) int -> r2 "field V23._ptr (fldOffset=0x0)" P-INDEP
-; V35 tmp34 [V35,T17] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
-;* V36 tmp35 [V36 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-;* V37 tmp36 [V37 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V38 GsCookie [V38 ] ( 1, 1 ) int -> [sp+0x54] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V39 cse0 [V39,T03] ( 4, 4 ) int -> r0 "CSE - aggressive"
+; V03 tmp2 [V03,T01] ( 4, 6 ) int -> r4 "Inlining Arg"
+; V04 tmp3 [V04,T06] ( 2, 4 ) int -> r1 "Inlining Arg"
+; V05 tmp4 [V05,T07] ( 2, 4 ) int -> r0 "Inlining Arg"
+; V06 tmp5 [V06,T08] ( 3, 3 ) ref -> r3 class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
+; V07 tmp6 [V07 ] ( 4, 4 ) struct (12) [sp+0x48] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
+; V08 tmp7 [V08,T12] ( 2, 2 ) int -> r2 "Inline stloc first use temp"
+; V09 tmp8 [V09,T16] ( 1, 1 ) int -> [sp+0x44] do-not-enreg[V] "GSCookie dummy for inlinee"
+; V10 tmp9 [V10,T10] ( 2, 2 ) ref -> r0 class-hnd single-def "Inline return value spill temp" <System.Array>
+; V11 tmp10 [V11 ] ( 3, 3 ) ref -> [sp+0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Array>
+; V12 tmp11 [V12 ] ( 3, 6 ) ref -> [sp+0x3C] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ptr "Inlining Arg" <System.RuntimeType>
+; V13 tmp12 [V13 ] ( 5, 10 ) struct ( 8) [sp+0x34] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallTypeHandle>
+;* V14 tmp13 [V14 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg "impAppendStmt" <System.Runtime.CompilerServices.QCallTypeHandle>
+;* V15 tmp14 [V15 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Runtime.CompilerServices.ObjectHandleOnStack>
+; V16 tmp15 [V16,T03] ( 3, 5 ) ref -> r0 class-hnd exact single-def "dup spill" <System.RuntimeType>
+; V17 tmp16 [V17,T11] ( 2, 2 ) byref -> r1 single-def
+;* V18 tmp17 [V18 ] ( 0, 0 ) ref -> zero-ref single-def ptr
+;* V19 tmp18 [V19 ] ( 0, 0 ) byref -> zero-ref single-def ptr
+; V20 tmp19 [V20,T09] ( 3, 2 ) int -> r3
+;* V21 tmp20 [V21 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ObjectHandleOnStack>
+;* V22 tmp21 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V23 tmp22 [V23 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V24 tmp23 [V24,T05] ( 2, 4 ) ref -> r0 single-def "Single return block return value"
+; V25 FramesRoot [V25,T02] ( 5, 5 ) int -> r5 "Pinvoke FrameListRoot"
+; V26 PInvokeFrame [V26 ] ( 6, 6 ) struct (36) [sp+0x10] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+; V27 tmp26 [V27 ] ( 4, 6 ) int -> [sp+0x34] do-not-enreg[X] addr-exposed "field V13._ptr (fldOffset=0x0)" P-DEP
+; V28 tmp27 [V28 ] ( 3, 5 ) int -> [sp+0x38] do-not-enreg[X] addr-exposed "field V13._handle (fldOffset=0x4)" P-DEP
+; V29 tmp28 [V29,T13] ( 2, 2 ) int -> r0 "field V14._ptr (fldOffset=0x0)" P-INDEP
+; V30 tmp29 [V30,T14] ( 2, 2 ) int -> r1 "field V14._handle (fldOffset=0x4)" P-INDEP
+;* V31 tmp30 [V31 ] ( 0, 0 ) int -> zero-ref "field V15._ptr (fldOffset=0x0)" P-INDEP
+; V32 tmp31 [V32,T15] ( 2, 2 ) int -> r3 "field V21._ptr (fldOffset=0x0)" P-INDEP
+; V33 tmp32 [V33,T17] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
+;* V34 tmp33 [V34 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+;* V35 tmp34 [V35 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V36 GsCookie [V36 ] ( 1, 1 ) int -> [sp+0x54] do-not-enreg[X] addr-exposed "GSSecurityCookie"
+; V37 cse0 [V37,T04] ( 4, 4 ) int -> r0 "CSE - aggressive"
+; V38 rat0 [V38,T00] ( 5, 7.50) ref -> r3 "replacement local"
;
; Lcl frame size = 92
@@ -56,11 +55,11 @@ G_M53848_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
sub sp, 92
add r11, sp, 120
movs r1, 0
- str r1, [sp+0x40] // [V13 tmp12]
- str r1, [sp+0x3C] // [V14 tmp13]
+ str r1, [sp+0x40] // [V11 tmp10]
+ str r1, [sp+0x3C] // [V12 tmp11]
movw r1, 0xd1ff
movt r1, 0xd1ff
- str r1, [sp+0x54] // [V38 GsCookie]
+ str r1, [sp+0x54] // [V36 GsCookie]
;; size=26 bbWeight=1 PerfScore 9.00
G_M53848_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
add r4, sp, 20
@@ -72,7 +71,7 @@ G_M53848_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldr r0, [r0]
and r0, r0, 1
cmp r0, 1
- bne SHORT G_M53848_IG14
+ bne SHORT G_M53848_IG17
;; size=30 bbWeight=1 PerfScore 10.00
G_M53848_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movw r0, 0xd1ff
@@ -81,105 +80,126 @@ G_M53848_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov r4, r0
mov r1, r0
cmp r4, 0
- blt SHORT G_M53848_IG15
+ blt SHORT G_M53848_IG18
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r3, 0
+ beq SHORT G_M53848_IG06
+ ;; size=30 bbWeight=1 PerfScore 11.00
+G_M53848_IG04: ; bbWeight=0.50, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r3]
+ ldr r2, [r3]
+ movw lr, 0xd1ff
+ movt lr, 0xd1ff
+ cmp r2, lr
+ beq SHORT G_M53848_IG06
+ ;; size=14 bbWeight=0.50 PerfScore 2.50
+G_M53848_IG05: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r3]
+ movs r3, 0
+ ;; size=2 bbWeight=0.25 PerfScore 0.25
+G_M53848_IG06: ; bbWeight=1, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r3]
+ cmp r3, 0
+ beq SHORT G_M53848_IG19
str r4, [sp+0x48]
str r1, [sp+0x4C]
str r0, [sp+0x50]
- add r3, sp, 72
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- str r0, [sp+0x3C] // [V14 tmp13]
+ add r2, sp, 72
+ str r3, [sp+0x3C] // [V12 tmp11]
movs r0, 0
- str r0, [sp+0x40] // [V13 tmp12]
- ;; size=40 bbWeight=1 PerfScore 16.00
-G_M53848_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- str r0, [sp+0x34] // [V15 tmp14]
- str r0, [sp+0x38] // [V15 tmp14+0x04]
- add r0, sp, 60 // [V14 tmp13]
- str r0, [sp+0x34] // [V29 tmp28]
- ldr r0, [sp+0x3C] // [V14 tmp13]
+ str r0, [sp+0x40] // [V11 tmp10]
+ ;; size=18 bbWeight=1 PerfScore 9.00
+G_M53848_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r3]
+ str r0, [sp+0x34] // [V13 tmp12]
+ str r0, [sp+0x38] // [V13 tmp12+0x04]
+ add r0, sp, 60 // [V12 tmp11]
+ str r0, [sp+0x34] // [V27 tmp26]
+ ldr r0, [sp+0x3C] // [V12 tmp11]
; gcrRegs +[r0]
- add r1, sp, 52 // [V15 tmp14]
+ add r1, sp, 52 // [V13 tmp12]
; byrRegs +[r1]
cmp r0, 0
- bne SHORT G_M53848_IG06
+ bne SHORT G_M53848_IG09
;; size=16 bbWeight=1 PerfScore 8.00
-G_M53848_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0002 {r1}, byref, isz
+G_M53848_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0002 {r1}, byref, isz
; gcrRegs -[r0]
- movs r2, 0
- b SHORT G_M53848_IG07
+ movs r3, 0
+ b SHORT G_M53848_IG10
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M53848_IG06: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0002 {r1}, byref
+G_M53848_IG09: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0002 {r1}, byref
; gcrRegs +[r0]
- ldr r2, [r0+0x0C]
+ ldr r3, [r0+0x0C]
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M53848_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {r1}, byref
+G_M53848_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {r1}, byref
; gcrRegs -[r0]
- str r2, [r1+0x04]
- ldr r0, [sp+0x34] // [V29 tmp28]
- ldr r1, [sp+0x38] // [V30 tmp29]
+ str r3, [r1+0x04]
+ ldr r0, [sp+0x34] // [V27 tmp26]
+ ldr r1, [sp+0x38] // [V28 tmp27]
; byrRegs -[r1]
- add r2, sp, 64 // [V13 tmp12]
+ add r3, sp, 64 // [V11 tmp10]
mov lr, 0
str lr, [sp] // [V01 OutArgs]
;; size=16 bbWeight=1 PerfScore 6.00
-G_M53848_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M53848_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
str lr, [sp+0x04] // [V01 OutArgs+0x04]
- str r2, [sp+0x08] // [V01 OutArgs+0x08]
+ str r3, [sp+0x08] // [V01 OutArgs+0x08]
+ mov r3, r2
movs r2, 3
movw lr, 0xd1ff
movt lr, 0xd1ff
- str lr, [sp+0x1C] // [V28 PInvokeFrame+0x0c]
- movw lr, LOW ADDRESS G_M53848_IG11
- movt lr, HIGH ADDRESS G_M53848_IG11
- str lr, [sp+0x24] // [V28 PInvokeFrame+0x14]
+ str lr, [sp+0x1C] // [V26 PInvokeFrame+0x0c]
+ movw lr, LOW ADDRESS G_M53848_IG14
+ movt lr, HIGH ADDRESS G_M53848_IG14
+ str lr, [sp+0x24] // [V26 PInvokeFrame+0x14]
mov lr, 0
strb lr, [r5+0x08]
- ;; size=40 bbWeight=1 PerfScore 11.00
-G_M53848_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=42 bbWeight=1 PerfScore 12.00
+G_M53848_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw lr, 0xd1ff
movt lr, 0xd1ff
;; size=8 bbWeight=1 PerfScore 2.00
-G_M53848_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M53848_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blx lr // <unknown method>
;; size=2 bbWeight=1 PerfScore 1.00
-G_M53848_IG11: ; bbWeight=1, isz, extend
+G_M53848_IG14: ; bbWeight=1, isz, extend
movs r3, 1
strb r3, [r5+0x08]
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
cmp r3, 0
- beq SHORT G_M53848_IG12
+ beq SHORT G_M53848_IG15
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_STOP_FOR_GC
;; size=28 bbWeight=1 PerfScore 10.00
-G_M53848_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M53848_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movs r0, 0
- str r0, [sp+0x24] // [V28 PInvokeFrame+0x14]
- ldr r0, [sp+0x40] // [V13 tmp12]
+ str r0, [sp+0x24] // [V26 PInvokeFrame+0x14]
+ ldr r0, [sp+0x40] // [V11 tmp10]
; gcrRegs +[r0]
- ldr r1, [sp+0x18] // [V28 PInvokeFrame+0x08]
+ ldr r1, [sp+0x18] // [V26 PInvokeFrame+0x08]
; byrRegs +[r1]
...
+42 (+14.48%) : 13067.dasm - System.Tests.Perf_Array:SetupArrayAssign1D():this (FullOpts)
@@ -8,37 +8,36 @@
; 0 inlinees with PGO data; 7 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 3, 3 ) ref -> [sp+0x38] this class-hnd single-def <System.Tests.Perf_Array>
+; V00 this [V00,T02] ( 3, 3 ) ref -> [sp+0x38] this class-hnd single-def <System.Tests.Perf_Array>
; V01 OutArgs [V01 ] ( 1, 1 ) struct (12) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Array>
; V03 tmp2 [V03 ] ( 3, 6 ) int -> [sp+0x4C] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
-;* V04 tmp3 [V04,T10] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
-;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V06 tmp5 [V06,T11] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
-; V07 tmp6 [V07,T03] ( 3, 4 ) int -> r4 "Inlining Arg"
-; V08 tmp7 [V08,T05] ( 2, 2 ) ref -> r1 class-hnd single-def "Inline return value spill temp" <System.Array>
-; V09 tmp8 [V09 ] ( 4, 4 ) ref -> [sp+0x48] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Array>
-; V10 tmp9 [V10 ] ( 3, 6 ) ref -> [sp+0x44] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inlining Arg" <System.RuntimeType>
-; V11 tmp10 [V11 ] ( 5, 10 ) struct ( 8) [sp+0x3C] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallTypeHandle>
-;* V12 tmp11 [V12 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg "impAppendStmt" <System.Runtime.CompilerServices.QCallTypeHandle>
-;* V13 tmp12 [V13 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Runtime.CompilerServices.ObjectHandleOnStack>
-; V14 tmp13 [V14,T02] ( 3, 5 ) ref -> r0 class-hnd exact single-def "dup spill" <System.RuntimeType>
-; V15 tmp14 [V15,T06] ( 2, 2 ) byref -> r1 single-def
-;* V16 tmp15 [V16 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V17 tmp16 [V17 ] ( 0, 0 ) byref -> zero-ref single-def
-; V18 tmp17 [V18,T04] ( 3, 2 ) int -> r3
-;* V19 tmp18 [V19 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ObjectHandleOnStack>
-;* V20 tmp19 [V20 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V21 tmp20 [V21 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V22 FramesRoot [V22,T00] ( 5, 5 ) int -> r5 "Pinvoke FrameListRoot"
-; V23 PInvokeFrame [V23 ] ( 6, 6 ) struct (36) [sp+0x14] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
-; V24 tmp23 [V24 ] ( 4, 6 ) int -> [sp+0x3C] do-not-enreg[X] addr-exposed "field V11._ptr (fldOffset=0x0)" P-DEP
-; V25 tmp24 [V25 ] ( 3, 5 ) int -> [sp+0x40] do-not-enreg[X] addr-exposed "field V11._handle (fldOffset=0x4)" P-DEP
-; V26 tmp25 [V26,T07] ( 2, 2 ) int -> r0 "field V12._ptr (fldOffset=0x0)" P-INDEP
-; V27 tmp26 [V27,T08] ( 2, 2 ) int -> r1 "field V12._handle (fldOffset=0x4)" P-INDEP
-;* V28 tmp27 [V28 ] ( 0, 0 ) int -> zero-ref "field V13._ptr (fldOffset=0x0)" P-INDEP
-; V29 tmp28 [V29,T09] ( 2, 2 ) int -> r3 "field V19._ptr (fldOffset=0x0)" P-INDEP
-; V30 tmp29 [V30,T12] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
+; V04 tmp3 [V04,T05] ( 3, 3 ) ref -> r0 class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
+; V05 tmp4 [V05,T04] ( 3, 4 ) int -> r4 "Inlining Arg"
+; V06 tmp5 [V06,T07] ( 2, 2 ) ref -> r1 class-hnd single-def "Inline return value spill temp" <System.Array>
+; V07 tmp6 [V07 ] ( 4, 4 ) ref -> [sp+0x48] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Array>
+; V08 tmp7 [V08 ] ( 3, 6 ) ref -> [sp+0x44] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inlining Arg" <System.RuntimeType>
+; V09 tmp8 [V09 ] ( 5, 10 ) struct ( 8) [sp+0x3C] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallTypeHandle>
+;* V10 tmp9 [V10 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg "impAppendStmt" <System.Runtime.CompilerServices.QCallTypeHandle>
+;* V11 tmp10 [V11 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Runtime.CompilerServices.ObjectHandleOnStack>
+; V12 tmp11 [V12,T03] ( 3, 5 ) ref -> r0 class-hnd exact single-def "dup spill" <System.RuntimeType>
+; V13 tmp12 [V13,T08] ( 2, 2 ) byref -> r1 single-def
+;* V14 tmp13 [V14 ] ( 0, 0 ) ref -> zero-ref single-def
+;* V15 tmp14 [V15 ] ( 0, 0 ) byref -> zero-ref single-def
+; V16 tmp15 [V16,T06] ( 3, 2 ) int -> r3
+;* V17 tmp16 [V17 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ObjectHandleOnStack>
+;* V18 tmp17 [V18 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V19 tmp18 [V19 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V20 FramesRoot [V20,T01] ( 5, 5 ) int -> r5 "Pinvoke FrameListRoot"
+; V21 PInvokeFrame [V21 ] ( 6, 6 ) struct (36) [sp+0x14] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+; V22 tmp21 [V22 ] ( 4, 6 ) int -> [sp+0x3C] do-not-enreg[X] addr-exposed "field V09._ptr (fldOffset=0x0)" P-DEP
+; V23 tmp22 [V23 ] ( 3, 5 ) int -> [sp+0x40] do-not-enreg[X] addr-exposed "field V09._handle (fldOffset=0x4)" P-DEP
+; V24 tmp23 [V24,T09] ( 2, 2 ) int -> r0 "field V10._ptr (fldOffset=0x0)" P-INDEP
+; V25 tmp24 [V25,T10] ( 2, 2 ) int -> r1 "field V10._handle (fldOffset=0x4)" P-INDEP
+;* V26 tmp25 [V26 ] ( 0, 0 ) int -> zero-ref "field V11._ptr (fldOffset=0x0)" P-INDEP
+; V27 tmp26 [V27,T11] ( 2, 2 ) int -> r3 "field V17._ptr (fldOffset=0x0)" P-INDEP
+; V28 tmp27 [V28,T12] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
+; V29 rat0 [V29,T00] ( 5, 7.50) ref -> r0 "replacement local"
;
; Lcl frame size = 84
@@ -47,12 +46,12 @@ G_M58256_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
sub sp, 84
add r11, sp, 112
movs r1, 0
- str r1, [sp+0x48] // [V09 tmp8]
- str r1, [sp+0x44] // [V10 tmp9]
+ str r1, [sp+0x48] // [V07 tmp6]
+ str r1, [sp+0x44] // [V08 tmp7]
str r0, [sp+0x38] // [V00 this]
; GC ptr vars +{V00}
;; size=18 bbWeight=1 PerfScore 7.00
-G_M58256_IG02: ; bbWeight=1, gcVars=00000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M58256_IG02: ; bbWeight=1, gcVars=00000004 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
add r4, sp, 24
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -62,7 +61,7 @@ G_M58256_IG02: ; bbWeight=1, gcVars=00000002 {V00}, gcrefRegs=0000 {}, by
ldr r0, [r0]
and r0, r0, 1
cmp r0, 1
- bne SHORT G_M58256_IG14
+ bne SHORT G_M58256_IG17
;; size=30 bbWeight=1 PerfScore 10.00
G_M58256_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movw r0, 0xd1ff
@@ -71,84 +70,104 @@ G_M58256_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str r0, [sp+0x4C] // [V03 tmp2]
ldr r4, [sp+0x4C] // [V03 tmp2]
cmp r4, 0
- blt SHORT G_M58256_IG15
+ blt SHORT G_M58256_IG18
movw r0, 0xd1ff
movt r0, 0xd1ff
- str r0, [sp+0x44] // [V10 tmp9]
- movs r0, 0
- str r0, [sp+0x48] // [V09 tmp8]
- ;; size=32 bbWeight=1 PerfScore 12.00
-G_M58256_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- str r0, [sp+0x3C] // [V11 tmp10]
- str r0, [sp+0x40] // [V11 tmp10+0x04]
- add r0, sp, 68 // [V10 tmp9]
- str r0, [sp+0x3C] // [V24 tmp23]
- ldr r0, [sp+0x44] // [V10 tmp9]
+ cmp r0, 0
+ beq SHORT G_M58256_IG06
+ ;; size=30 bbWeight=1 PerfScore 11.00
+G_M58256_IG04: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r0]
- add r1, sp, 60 // [V11 tmp10]
+ ldr r1, [r0]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r1, r3
+ beq SHORT G_M58256_IG06
+ ;; size=14 bbWeight=0.50 PerfScore 2.50
+G_M58256_IG05: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r0]
+ movs r0, 0
+ ;; size=2 bbWeight=0.25 PerfScore 0.25
+G_M58256_IG06: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r0]
+ cmp r0, 0
+ beq SHORT G_M58256_IG19
+ str r0, [sp+0x44] // [V08 tmp7]
+ movs r0, 0
+ ; gcrRegs -[r0]
+ str r0, [sp+0x48] // [V07 tmp6]
+ ;; size=10 bbWeight=1 PerfScore 5.00
+G_M58256_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ str r0, [sp+0x3C] // [V09 tmp8]
+ str r0, [sp+0x40] // [V09 tmp8+0x04]
+ add r0, sp, 68 // [V08 tmp7]
+ str r0, [sp+0x3C] // [V22 tmp21]
+ ldr r0, [sp+0x44] // [V08 tmp7]
+ ; gcrRegs +[r0]
+ add r1, sp, 60 // [V09 tmp8]
; byrRegs +[r1]
cmp r0, 0
- bne SHORT G_M58256_IG06
+ bne SHORT G_M58256_IG09
;; size=16 bbWeight=1 PerfScore 8.00
-G_M58256_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0002 {r1}, byref, isz
+G_M58256_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0002 {r1}, byref, isz
; gcrRegs -[r0]
movs r3, 0
- b SHORT G_M58256_IG07
+ b SHORT G_M58256_IG10
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M58256_IG06: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0002 {r1}, byref
+G_M58256_IG09: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0002 {r1}, byref
; gcrRegs +[r0]
ldr r3, [r0+0x0C]
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M58256_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {r1}, byref
+G_M58256_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {r1}, byref
; gcrRegs -[r0]
str r3, [r1+0x04]
- ldr r0, [sp+0x3C] // [V24 tmp23]
- ldr r1, [sp+0x40] // [V25 tmp24]
+ ldr r0, [sp+0x3C] // [V22 tmp21]
+ ldr r1, [sp+0x40] // [V23 tmp22]
; byrRegs -[r1]
- add r3, sp, 72 // [V09 tmp8]
+ add r3, sp, 72 // [V07 tmp6]
movs r2, 0
str r2, [sp] // [V01 OutArgs]
;; size=12 bbWeight=1 PerfScore 6.00
-G_M58256_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M58256_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
str r2, [sp+0x04] // [V01 OutArgs+0x04]
str r3, [sp+0x08] // [V01 OutArgs+0x08]
add r3, sp, 76 // [V03 tmp2]
movs r2, 1
movw lr, 0xd1ff
movt lr, 0xd1ff
- str lr, [sp+0x20] // [V23 PInvokeFrame+0x0c]
- movw lr, LOW ADDRESS G_M58256_IG11
- movt lr, HIGH ADDRESS G_M58256_IG11
- str lr, [sp+0x28] // [V23 PInvokeFrame+0x14]
+ str lr, [sp+0x20] // [V21 PInvokeFrame+0x0c]
+ movw lr, LOW ADDRESS G_M58256_IG14
+ movt lr, HIGH ADDRESS G_M58256_IG14
+ str lr, [sp+0x28] // [V21 PInvokeFrame+0x14]
mov lr, 0
strb lr, [r5+0x08]
;; size=40 bbWeight=1 PerfScore 12.00
-G_M58256_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M58256_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw lr, 0xd1ff
movt lr, 0xd1ff
;; size=8 bbWeight=1 PerfScore 2.00
-G_M58256_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M58256_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blx lr // <unknown method>
;; size=2 bbWeight=1 PerfScore 1.00
-G_M58256_IG11: ; bbWeight=1, isz, extend
+G_M58256_IG14: ; bbWeight=1, isz, extend
movs r3, 1
strb r3, [r5+0x08]
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
cmp r3, 0
- beq SHORT G_M58256_IG12
+ beq SHORT G_M58256_IG15
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_STOP_FOR_GC
;; size=28 bbWeight=1 PerfScore 10.00
-G_M58256_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M58256_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r1, 0
- str r1, [sp+0x28] // [V23 PInvokeFrame+0x14]
- ldr r1, [sp+0x48] // [V09 tmp8]
+ str r1, [sp+0x28] // [V21 PInvokeFrame+0x14]
+ ldr r1, [sp+0x48] // [V07 tmp6]
; gcrRegs +[r1]
movs r0, 0
- str r0, [sp+0x48] // [V09 tmp8]
+ str r0, [sp+0x48] // [V07 tmp6]
ldr r7, [sp+0x38] // [V00 this]
; gcrRegs +[r7]
adds r0, r7, 4
@@ -159,15 +178,15 @@ G_M58256_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1 r7]
; byrRegs -[r0]
- ldr r0, [sp+0x1C] // [V23 PInvokeFrame+0x08]
+ ldr r0, [sp+0x1C] // [V21 PInvokeFrame+0x08]
; byrRegs +[r0]
str r0, [r5+0x0C]
;; size=28 bbWeight=1 PerfScore 12.00
-G_M58256_IG13: ; bbWeight=1, epilog, nogc, extend
+G_M58256_IG16: ; bbWeight=1, epilog, nogc, extend
add sp, 84
pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00
-G_M58256_IG14: ; bbWeight=0, gcVars=00000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M58256_IG17: ; bbWeight=0, gcVars=00000004 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; byrRegs -[r0]
; GC ptr vars +{V00}
movw r0, 0xd1ff
@@ -178,7 +197,7 @@ G_M58256_IG14: ; bbWeight=0, gcVars=00000002 {V00}, gcrefRegs=0000 {}, by
blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
b SHORT G_M58256_IG03
...
+42 (+15.56%) : 38070.dasm - System.Tests.Perf_Array:ArrayCreate1D():System.Array:this (FullOpts)
@@ -12,34 +12,33 @@
; V01 OutArgs [V01 ] ( 1, 1 ) struct (12) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Array>
; V03 tmp2 [V03 ] ( 3, 6 ) int -> [sp+0x44] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
-;* V04 tmp3 [V04,T10] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
-;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V06 tmp5 [V06,T11] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
-; V07 tmp6 [V07,T02] ( 3, 4 ) int -> r4 "Inlining Arg"
-; V08 tmp7 [V08,T05] ( 2, 2 ) ref -> r0 class-hnd single-def "Inline return value spill temp" <System.Array>
-; V09 tmp8 [V09 ] ( 3, 3 ) ref -> [sp+0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Array>
-; V10 tmp9 [V10 ] ( 3, 6 ) ref -> [sp+0x3C] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inlining Arg" <System.RuntimeType>
-; V11 tmp10 [V11 ] ( 5, 10 ) struct ( 8) [sp+0x34] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallTypeHandle>
-;* V12 tmp11 [V12 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg "impAppendStmt" <System.Runtime.CompilerServices.QCallTypeHandle>
-;* V13 tmp12 [V13 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Runtime.CompilerServices.ObjectHandleOnStack>
-; V14 tmp13 [V14,T01] ( 3, 5 ) ref -> r0 class-hnd exact single-def "dup spill" <System.RuntimeType>
-; V15 tmp14 [V15,T06] ( 2, 2 ) byref -> r1 single-def
-;* V16 tmp15 [V16 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V17 tmp16 [V17 ] ( 0, 0 ) byref -> zero-ref single-def
-; V18 tmp17 [V18,T04] ( 3, 2 ) int -> r3
-;* V19 tmp18 [V19 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ObjectHandleOnStack>
-;* V20 tmp19 [V20 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V21 tmp20 [V21 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V22 tmp21 [V22,T03] ( 2, 4 ) ref -> r0 single-def "Single return block return value"
-; V23 FramesRoot [V23,T00] ( 5, 5 ) int -> r5 "Pinvoke FrameListRoot"
-; V24 PInvokeFrame [V24 ] ( 6, 6 ) struct (36) [sp+0x10] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
-; V25 tmp24 [V25 ] ( 4, 6 ) int -> [sp+0x34] do-not-enreg[X] addr-exposed "field V11._ptr (fldOffset=0x0)" P-DEP
-; V26 tmp25 [V26 ] ( 3, 5 ) int -> [sp+0x38] do-not-enreg[X] addr-exposed "field V11._handle (fldOffset=0x4)" P-DEP
-; V27 tmp26 [V27,T07] ( 2, 2 ) int -> r0 "field V12._ptr (fldOffset=0x0)" P-INDEP
-; V28 tmp27 [V28,T08] ( 2, 2 ) int -> r1 "field V12._handle (fldOffset=0x4)" P-INDEP
-;* V29 tmp28 [V29 ] ( 0, 0 ) int -> zero-ref "field V13._ptr (fldOffset=0x0)" P-INDEP
-; V30 tmp29 [V30,T09] ( 2, 2 ) int -> r3 "field V19._ptr (fldOffset=0x0)" P-INDEP
-; V31 tmp30 [V31,T12] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
+; V04 tmp3 [V04,T05] ( 3, 3 ) ref -> r0 class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
+; V05 tmp4 [V05,T03] ( 3, 4 ) int -> r4 "Inlining Arg"
+; V06 tmp5 [V06,T07] ( 2, 2 ) ref -> r0 class-hnd single-def "Inline return value spill temp" <System.Array>
+; V07 tmp6 [V07 ] ( 3, 3 ) ref -> [sp+0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Array>
+; V08 tmp7 [V08 ] ( 3, 6 ) ref -> [sp+0x3C] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inlining Arg" <System.RuntimeType>
+; V09 tmp8 [V09 ] ( 5, 10 ) struct ( 8) [sp+0x34] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallTypeHandle>
+;* V10 tmp9 [V10 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg "impAppendStmt" <System.Runtime.CompilerServices.QCallTypeHandle>
+;* V11 tmp10 [V11 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Runtime.CompilerServices.ObjectHandleOnStack>
+; V12 tmp11 [V12,T02] ( 3, 5 ) ref -> r0 class-hnd exact single-def "dup spill" <System.RuntimeType>
+; V13 tmp12 [V13,T08] ( 2, 2 ) byref -> r1 single-def
+;* V14 tmp13 [V14 ] ( 0, 0 ) ref -> zero-ref single-def
+;* V15 tmp14 [V15 ] ( 0, 0 ) byref -> zero-ref single-def
+; V16 tmp15 [V16,T06] ( 3, 2 ) int -> r3
+;* V17 tmp16 [V17 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ObjectHandleOnStack>
+;* V18 tmp17 [V18 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V19 tmp18 [V19 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V20 tmp19 [V20,T04] ( 2, 4 ) ref -> r0 single-def "Single return block return value"
+; V21 FramesRoot [V21,T01] ( 5, 5 ) int -> r5 "Pinvoke FrameListRoot"
+; V22 PInvokeFrame [V22 ] ( 6, 6 ) struct (36) [sp+0x10] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+; V23 tmp22 [V23 ] ( 4, 6 ) int -> [sp+0x34] do-not-enreg[X] addr-exposed "field V09._ptr (fldOffset=0x0)" P-DEP
+; V24 tmp23 [V24 ] ( 3, 5 ) int -> [sp+0x38] do-not-enreg[X] addr-exposed "field V09._handle (fldOffset=0x4)" P-DEP
+; V25 tmp24 [V25,T09] ( 2, 2 ) int -> r0 "field V10._ptr (fldOffset=0x0)" P-INDEP
+; V26 tmp25 [V26,T10] ( 2, 2 ) int -> r1 "field V10._handle (fldOffset=0x4)" P-INDEP
+;* V27 tmp26 [V27 ] ( 0, 0 ) int -> zero-ref "field V11._ptr (fldOffset=0x0)" P-INDEP
+; V28 tmp27 [V28,T11] ( 2, 2 ) int -> r3 "field V17._ptr (fldOffset=0x0)" P-INDEP
+; V29 tmp28 [V29,T12] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
+; V30 rat0 [V30,T00] ( 5, 7.50) ref -> r0 "replacement local"
;
; Lcl frame size = 76
@@ -48,8 +47,8 @@ G_M36762_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
sub sp, 76
add r11, sp, 104
movs r1, 0
- str r1, [sp+0x40] // [V09 tmp8]
- str r1, [sp+0x3C] // [V10 tmp9]
+ str r1, [sp+0x40] // [V07 tmp6]
+ str r1, [sp+0x3C] // [V08 tmp7]
;; size=16 bbWeight=1 PerfScore 6.00
G_M36762_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
add r4, sp, 20
@@ -61,7 +60,7 @@ G_M36762_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldr r0, [r0]
and r0, r0, 1
cmp r0, 1
- bne SHORT G_M36762_IG14
+ bne SHORT G_M36762_IG17
;; size=30 bbWeight=1 PerfScore 10.00
G_M36762_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movw r0, 0xd1ff
@@ -70,91 +69,111 @@ G_M36762_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str r0, [sp+0x44] // [V03 tmp2]
ldr r4, [sp+0x44] // [V03 tmp2]
cmp r4, 0
- blt SHORT G_M36762_IG15
+ blt SHORT G_M36762_IG18
movw r0, 0xd1ff
movt r0, 0xd1ff
- str r0, [sp+0x3C] // [V10 tmp9]
- movs r0, 0
- str r0, [sp+0x40] // [V09 tmp8]
- ;; size=32 bbWeight=1 PerfScore 12.00
-G_M36762_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- str r0, [sp+0x34] // [V11 tmp10]
- str r0, [sp+0x38] // [V11 tmp10+0x04]
- add r0, sp, 60 // [V10 tmp9]
- str r0, [sp+0x34] // [V25 tmp24]
- ldr r0, [sp+0x3C] // [V10 tmp9]
+ cmp r0, 0
+ beq SHORT G_M36762_IG06
+ ;; size=30 bbWeight=1 PerfScore 11.00
+G_M36762_IG04: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r0]
- add r1, sp, 52 // [V11 tmp10]
+ ldr r1, [r0]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r1, r3
+ beq SHORT G_M36762_IG06
+ ;; size=14 bbWeight=0.50 PerfScore 2.50
+G_M36762_IG05: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r0]
+ movs r0, 0
+ ;; size=2 bbWeight=0.25 PerfScore 0.25
+G_M36762_IG06: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r0]
+ cmp r0, 0
+ beq SHORT G_M36762_IG19
+ str r0, [sp+0x3C] // [V08 tmp7]
+ movs r0, 0
+ ; gcrRegs -[r0]
+ str r0, [sp+0x40] // [V07 tmp6]
+ ;; size=10 bbWeight=1 PerfScore 5.00
+G_M36762_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ str r0, [sp+0x34] // [V09 tmp8]
+ str r0, [sp+0x38] // [V09 tmp8+0x04]
+ add r0, sp, 60 // [V08 tmp7]
+ str r0, [sp+0x34] // [V23 tmp22]
+ ldr r0, [sp+0x3C] // [V08 tmp7]
+ ; gcrRegs +[r0]
+ add r1, sp, 52 // [V09 tmp8]
; byrRegs +[r1]
cmp r0, 0
- bne SHORT G_M36762_IG06
+ bne SHORT G_M36762_IG09
;; size=16 bbWeight=1 PerfScore 8.00
-G_M36762_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0002 {r1}, byref, isz
+G_M36762_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0002 {r1}, byref, isz
; gcrRegs -[r0]
movs r3, 0
- b SHORT G_M36762_IG07
+ b SHORT G_M36762_IG10
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M36762_IG06: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0002 {r1}, byref
+G_M36762_IG09: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0002 {r1}, byref
; gcrRegs +[r0]
ldr r3, [r0+0x0C]
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M36762_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {r1}, byref
+G_M36762_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {r1}, byref
; gcrRegs -[r0]
str r3, [r1+0x04]
- ldr r0, [sp+0x34] // [V25 tmp24]
- ldr r1, [sp+0x38] // [V26 tmp25]
+ ldr r0, [sp+0x34] // [V23 tmp22]
+ ldr r1, [sp+0x38] // [V24 tmp23]
; byrRegs -[r1]
- add r3, sp, 64 // [V09 tmp8]
+ add r3, sp, 64 // [V07 tmp6]
movs r2, 0
str r2, [sp] // [V01 OutArgs]
;; size=12 bbWeight=1 PerfScore 6.00
-G_M36762_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M36762_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
str r2, [sp+0x04] // [V01 OutArgs+0x04]
str r3, [sp+0x08] // [V01 OutArgs+0x08]
add r3, sp, 68 // [V03 tmp2]
movs r2, 1
movw lr, 0xd1ff
movt lr, 0xd1ff
- str lr, [sp+0x1C] // [V24 PInvokeFrame+0x0c]
- movw lr, LOW ADDRESS G_M36762_IG11
- movt lr, HIGH ADDRESS G_M36762_IG11
- str lr, [sp+0x24] // [V24 PInvokeFrame+0x14]
+ str lr, [sp+0x1C] // [V22 PInvokeFrame+0x0c]
+ movw lr, LOW ADDRESS G_M36762_IG14
+ movt lr, HIGH ADDRESS G_M36762_IG14
+ str lr, [sp+0x24] // [V22 PInvokeFrame+0x14]
mov lr, 0
strb lr, [r5+0x08]
;; size=40 bbWeight=1 PerfScore 12.00
-G_M36762_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M36762_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw lr, 0xd1ff
movt lr, 0xd1ff
;; size=8 bbWeight=1 PerfScore 2.00
-G_M36762_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M36762_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blx lr // <unknown method>
;; size=2 bbWeight=1 PerfScore 1.00
-G_M36762_IG11: ; bbWeight=1, isz, extend
+G_M36762_IG14: ; bbWeight=1, isz, extend
movs r3, 1
strb r3, [r5+0x08]
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
cmp r3, 0
- beq SHORT G_M36762_IG12
+ beq SHORT G_M36762_IG15
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_STOP_FOR_GC
;; size=28 bbWeight=1 PerfScore 10.00
-G_M36762_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M36762_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r0, 0
- str r0, [sp+0x24] // [V24 PInvokeFrame+0x14]
- ldr r0, [sp+0x40] // [V09 tmp8]
+ str r0, [sp+0x24] // [V22 PInvokeFrame+0x14]
+ ldr r0, [sp+0x40] // [V07 tmp6]
; gcrRegs +[r0]
- ldr r1, [sp+0x18] // [V24 PInvokeFrame+0x08]
+ ldr r1, [sp+0x18] // [V22 PInvokeFrame+0x08]
; byrRegs +[r1]
str r1, [r5+0x0C]
;; size=10 bbWeight=1 PerfScore 5.00
-G_M36762_IG13: ; bbWeight=1, epilog, nogc, extend
+G_M36762_IG16: ; bbWeight=1, epilog, nogc, extend
add sp, 76
pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00
-G_M36762_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M36762_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0]
; byrRegs -[r1]
movw r0, 0xd1ff
@@ -165,7 +184,7 @@ G_M36762_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
b SHORT G_M36762_IG03
;; size=24 bbWeight=0 PerfScore 0.00
-G_M36762_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M36762_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff
movw r1, 0xd1ff
movt r1, 0xd1ff
@@ -184,8 +203,17 @@ G_M36762_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r1]
bkpt
;; size=40 bbWeight=0 PerfScore 0.00
+G_M36762_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ movs r0, 57
+ movs r1, 80
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // System.ThrowHelper:ThrowArgumentException(int,int)
+ bkpt
...
benchmarks.run_pgo.linux.arm.checked.mch
-22 (-47.83%) : 83677.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%) : 134809.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%) : 150433.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (Tier1)
@@ -3,58 +3,39 @@
; Tier1 code
; optimized code
; optimized using Dynamic PGO
-; r11 based frame
+; sp based frame
; partially interruptible
; with Dynamic PGO: edge weights are valid, and fgCalledCount is 128
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.50) int -> r0 single-def
-; V01 arg0 [V01,T02] ( 4, 3.25) ref -> r1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) int -> r0 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> r1 class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 2.50) int -> r0 "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 7.50) ref -> r3 class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 8
+; Lcl frame size = 12
G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r2,r3,r11,lr}
- add r11, sp, 8
- str r0, [r11-0x04]
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r1]
- mov r3, r1
- ; gcrRegs +[r3]
- cmp r3, 0
- beq SHORT G_M8451_IG05
+ push {lr}
+ sub sp, 12
+ str r0, [sp+0x04]
;; size=6 bbWeight=1 PerfScore 3.00
-G_M8451_IG03: ; bbWeight=0.50, gcrefRegs=000A {r1 r3}, byrefRegs=0000 {}, byref, isz
- ldr r2, [r3]
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r1]
ldr r0, [r0+0x20]
ldr r0, [r0]
- cmp r2, r0
- beq SHORT G_M8451_IG05
- ;; size=10 bbWeight=0.50 PerfScore 2.50
-G_M8451_IG04: ; bbWeight=0.25, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r3]
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_CHKCASTANY
; gcrRegs -[r1] +[r0]
- mov r3, r0
- ; gcrRegs +[r3]
- ;; size=12 bbWeight=0.25 PerfScore 1.00
-G_M8451_IG05: ; bbWeight=1, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r0]
- mov r0, r3
- ; gcrRegs +[r0]
- ;; size=2 bbWeight=1 PerfScore 1.00
-G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
- pop {r2,r3,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
+ ; gcr arg pop 0
+ ;; size=14 bbWeight=1 PerfScore 5.00
+G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
+ add sp, 12
+ pop {pc}
+ ;; size=4 bbWeight=1 PerfScore 2.00
-; Total bytes of code 46, prolog size 12, PerfScore 11.50, instruction count 17, allocated bytes for code 46 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
+; Total bytes of code 24, prolog size 6, PerfScore 10.00, instruction count 10, allocated bytes for code 24 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
; ============================================================
Unwind Info:
@@ -66,11 +47,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 23 (0x00017) Actual length = 46 (0x00002e)
+ Function Length : 12 (0x0000c) Actual length = 24 (0x000018)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 0C pop {r2,r3,r11,lr} ; opsize 32
- FF end
+ 03 add sp, sp, #12 ; opsize 16
+ ED 00 pop {lr} ; opsize 16
FF end
+26 (+14.77%) : 85040.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
@@ -14,85 +14,102 @@
; V02 tmp1 [V02,T07] ( 3, 2 ) ref -> r0 "guarded devirt return temp"
;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
; V04 tmp3 [V04,T06] ( 4, 2 ) ubyte -> r3 "Inline return value spill temp"
-;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V06 tmp5 [V06,T11] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
-;* V07 tmp6 [V07 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.TypeHandle>
-; V08 tmp7 [V08,T08] ( 3, 2 ) int -> r7
-; V09 tmp8 [V09,T09] ( 2, 2 ) ubyte -> r3 "Inline stloc first use temp"
-;* V10 tmp9 [V10 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TypeHandle>
-;* V11 tmp10 [V11 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V12 tmp11 [V12,T01] ( 2, 4 ) byref -> r7 single-def "Inlining Arg"
-;* V13 tmp12 [V13,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V14 tmp13 [V14,T12] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V15 tmp14 [V15 ] ( 0, 0 ) int -> zero-ref "field V07.m_asTAddr (fldOffset=0x0)" P-INDEP
-; V16 tmp15 [V16,T04] ( 3, 3 ) int -> r7 "field V10.m_asTAddr (fldOffset=0x0)" P-INDEP
-; V17 cse0 [V17,T02] ( 3, 3 ) int -> r5 "CSE - aggressive"
-; V18 cse1 [V18,T05] ( 3, 3 ) int -> r0 "CSE - aggressive"
-; V19 cse2 [V19,T03] ( 3, 3 ) int -> r6 "CSE - aggressive"
+; V05 tmp4 [V05,T02] ( 4, 4 ) ref -> r5 class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
+;* V06 tmp5 [V06 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.TypeHandle>
+; V07 tmp6 [V07,T08] ( 3, 2 ) int -> r6
+; V08 tmp7 [V08,T09] ( 2, 2 ) ubyte -> r3 "Inline stloc first use temp"
+;* V09 tmp8 [V09 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TypeHandle>
+;* V10 tmp9 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V11 tmp10 [V11,T03] ( 2, 4 ) byref -> r6 single-def "Inlining Arg"
+;* V12 tmp11 [V12,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V13 tmp12 [V13 ] ( 0, 0 ) int -> zero-ref "field V06.m_asTAddr (fldOffset=0x0)" P-INDEP
+; V14 tmp13 [V14,T04] ( 3, 3 ) int -> r6 "field V09.m_asTAddr (fldOffset=0x0)" P-INDEP
+; V15 cse0 [V15,T05] ( 3, 3 ) int -> r0 "CSE - aggressive"
+; V16 rat0 [V16,T01] ( 5, 7.50) ref -> r5 "replacement local"
;
-; 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 r7, [r4+0x0C]
- ands r0, r7, 2
+ ldrsb r0, [r4]
+ mov r5, r4
+ ; gcrRegs +[r5]
+ cmp r5, 0
+ beq SHORT G_M8853_IG05
+ ;; size=10 bbWeight=1 PerfScore 4.00
+G_M8853_IG03: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ ldr r0, [r5]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r0, r3
+ beq SHORT G_M8853_IG05
+ ;; size=14 bbWeight=0.50 PerfScore 2.50
+G_M8853_IG04: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r5]
+ movs r5, 0
+ ;; size=2 bbWeight=0.25 PerfScore 0.25
+G_M8853_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r5]
+ cmp r5, 0
+ beq SHORT G_M8853_IG16
+ ldr r6, [r5+0x0C]
+ ands r0, r6, 2
cmp r0, 0
- bne SHORT G_M8853_IG12
+ bne SHORT G_M8853_IG15
cmp r0, 0
- beq SHORT G_M8853_IG03
+ beq SHORT G_M8853_IG06
movs r0, 0
- b SHORT G_M8853_IG04
- ;; size=32 bbWeight=1 PerfScore 13.00
-G_M8853_IG03: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ b SHORT G_M8853_IG07
+ ;; size=22 bbWeight=1 PerfScore 10.00
+G_M8853_IG06: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
movs r0, 1
;; size=2 bbWeight=1 PerfScore 1.00
-G_M8853_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M8853_IG07: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
- ldr r0, [r7]
+ ldr r0, [r6]
and r0, r0, 0xf0000
cmp r0, 0xc0000
- beq SHORT G_M8853_IG05
- movs r7, 0
- b SHORT G_M8853_IG06
+ beq SHORT G_M8853_IG08
+ movs r6, 0
+ b SHORT G_M8853_IG09
;; size=28 bbWeight=1 PerfScore 10.00
-G_M8853_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- movs r7, 1
+G_M8853_IG08: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+ movs r6, 1
;; size=2 bbWeight=1 PerfScore 1.00
-G_M8853_IG06: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- uxtb r3, r7
+G_M8853_IG09: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ uxtb r3, r6
cmp r3, 0
- bne SHORT G_M8853_IG16
+ bne SHORT G_M8853_IG19
;; size=6 bbWeight=1 PerfScore 3.00
-G_M8853_IG07: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M8853_IG10: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r5]
movw r0, 0xd1ff
movt r0, 0xd1ff
cmp r4, r0
- bne SHORT G_M8853_IG10
+ bne SHORT G_M8853_IG13
;; size=12 bbWeight=1 PerfScore 4.00
-G_M8853_IG08: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M8853_IG11: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r4]
movs r0, 0
;; size=2 bbWeight=0.67 PerfScore 0.67
-G_M8853_IG09: ; bbWeight=0.67, epilog, nogc, extend
- pop {r4,r5,r6,r7,r11,pc}
+G_M8853_IG12: ; bbWeight=0.67, epilog, nogc, extend
+ pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=0.67 PerfScore 0.67
-G_M8853_IG10: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M8853_IG13: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r4]
- cmp r5, r6
- bne SHORT G_M8853_IG18
+ ldr r0, [r4]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r0, r3
+ bne SHORT G_M8853_IG21
mov r0, r4
; gcrRegs +[r0]
movw r3, 0xd1ff
@@ -100,16 +117,17 @@ G_M8853_IG10: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byre
ldr r3, [r3]
blx r3 // <unknown method>
; gcrRegs -[r4]
- ;; size=18 bbWeight=1 PerfScore 7.00
-G_M8853_IG11: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
- pop {r4,r5,r6,r7,r11,pc}
+ ;; size=28 bbWeight=1 PerfScore 10.00
+G_M8853_IG14: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M8853_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r0] +[r4]
- movs r7, 0
- b SHORT G_M8853_IG06
+G_M8853_IG15: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[r0] +[r4-r5]
+ movs r6, 0
+ b SHORT G_M8853_IG09
;; size=4 bbWeight=0 PerfScore 0.00
-G_M8853_IG13: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M8853_IG16: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r5]
mov r0, r4
; gcrRegs +[r0]
ldr r3, [r4]
@@ -119,26 +137,26 @@ 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_IG17
movs r3, 0
- b SHORT G_M8853_IG15
+ b SHORT G_M8853_IG18
;; size=22 bbWeight=0 PerfScore 0.00
-G_M8853_IG14: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M8853_IG17: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
movs r3, 1
;; size=2 bbWeight=0 PerfScore 0.00
-G_M8853_IG15: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M8853_IG18: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r3, 0
- beq SHORT G_M8853_IG07
+ beq SHORT G_M8853_IG10
;; size=4 bbWeight=0 PerfScore 0.00
-G_M8853_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M8853_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r4]
movw r0, 0xd1ff
movt r0, 0xd1ff
;; size=8 bbWeight=0 PerfScore 0.00
-G_M8853_IG17: ; bbWeight=0, epilog, nogc, extend
- pop {r4,r5,r6,r7,r11,pc}
+G_M8853_IG20: ; bbWeight=0, epilog, nogc, extend
+ pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=0 PerfScore 0.00
-G_M8853_IG18: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M8853_IG21: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r4]
mov r0, r4
; gcrRegs +[r0]
@@ -147,10 +165,10 @@ G_M8853_IG18: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byre
ldr r3, [r3+0x10]
blx r3 // <unknown method>
; gcrRegs -[r4]
- b SHORT G_M8853_IG11
+ b SHORT G_M8853_IG14
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 176, prolog size 8, PerfScore 44.33, instruction count 69, allocated bytes for code 176 (MethodHash=a7e7dd6a) for method System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
+; Total bytes of code 202, prolog size 8, PerfScore 51.08, instruction count 79, allocated bytes for code 202 (MethodHash=a7e7dd6a) for method System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
; ============================================================
Unwind Info:
@@ -162,7 +180,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 88 (0x00058) Actual length = 176 (0x0000b0)
+ Function Length : 101 (0x00065) Actual length = 202 (0x0000ca)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -178,7 +196,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 F0 pop {r4,r5,r6,r7,r11,lr} ; opsize 32
+ A8 78 pop {r3,r4,r5,r6,r11,lr} ; opsize 32
FF end
FF end
+26 (+16.88%) : 21560.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 "replacement local"
;
-; 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%) : 80736.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 "replacement local"
;
-; 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
benchmarks.run_tiered.linux.arm.checked.mch
-22 (-47.83%) : 6512.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%) : 3209.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%) : 13832.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%) : 75556.dasm - PerfLabTests.CastingPerf:FooObjIsFoo():this (Tier0-FullOpts)
@@ -8,78 +8,72 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf>
-; V01 loc0 [V01,T02] ( 4, 13 ) int -> r4
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> r4
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> r1 "CASTCLASS eval op1"
-; V04 tmp2 [V04,T05] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> r3 class-hnd "spilling QMark2" <<unknown class>>
-; V06 cse0 [V06,T03] ( 3, 6 ) int -> r5 "CSE - aggressive"
-; V07 cse1 [V07,T06] ( 2, 5 ) ref -> r7 hoist "CSE - aggressive"
-; V08 cse2 [V08,T04] ( 3, 6 ) int -> r6 "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> r5 "CSE - aggressive"
+; V04 cse1 [V04,T01] ( 3, 6 ) ref -> r7 "CSE - aggressive"
+; V05 cse2 [V05,T03] ( 3, 6 ) int -> r6 "CSE - aggressive"
+; TEMP_01 ref -> [r11-0x14]
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_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 (Tier0-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 (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%) : 72765.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier0-FullOpts)
@@ -8,78 +8,72 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf>
-; V01 loc0 [V01,T02] ( 4, 13 ) int -> r4
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> r4
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> r1 "CASTCLASS eval op1"
-; V04 tmp2 [V04,T05] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> r3 class-hnd "spilling QMark2" <<unknown class>>
-; V06 cse0 [V06,T03] ( 3, 6 ) int -> r5 "CSE - aggressive"
-; V07 cse1 [V07,T06] ( 2, 5 ) ref -> r7 hoist "CSE - aggressive"
-; V08 cse2 [V08,T04] ( 3, 6 ) int -> r6 "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> r5 "CSE - aggressive"
+; V04 cse1 [V04,T01] ( 3, 6 ) ref -> r7 "CSE - aggressive"
+; V05 cse2 [V05,T03] ( 3, 6 ) int -> r6 "CSE - aggressive"
+; TEMP_01 ref -> [r11-0x14]
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M896_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r11,lr}
- add r11, sp, 16
- ;; size=8 bbWeight=1 PerfScore 2.00
+ push {r2,r3,r4,r5,r6,r7,r11,lr}
+ add r11, sp, 24
+ movs r1, 0
+ str r1, [sp+0x04]
+ ;; size=12 bbWeight=1 PerfScore 4.00
G_M896_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movs r4, 0
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- ldr r5, [r0]
+ movw r1, 0xd1ff
+ movt r1, 0xd1ff
+ ldr r5, [r1]
cmp r5, 0
- ble SHORT G_M896_IG07
+ ble SHORT G_M896_IG04
movw r6, 0xd1ff
movt r6, 0xd1ff
ldr r7, [r6]
; gcrRegs +[r7]
- ;; size=26 bbWeight=1 PerfScore 9.00
-G_M896_IG03: ; bbWeight=4, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
mov r1, r7
; gcrRegs +[r1]
- mov r3, r1
- ; gcrRegs +[r3]
- cmp r3, 0
- beq SHORT G_M896_IG06
- ;; size=8 bbWeight=4 PerfScore 16.00
-G_M896_IG04: ; bbWeight=1, gcrefRegs=008A {r1 r3 r7}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r3]
- movw r2, 0xd1ff
- movt r2, 0xd1ff
- cmp r0, r2
- beq SHORT G_M896_IG06
- ;; size=14 bbWeight=1 PerfScore 5.00
-G_M896_IG05: ; bbWeight=0.50, gcrefRegs=0082 {r1 r7}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r3]
- mov r0, r2
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_CHKCASTARRAY
; gcrRegs -[r1] +[r0]
; gcr arg pop 0
- mov r3, r0
- ; gcrRegs +[r3]
- ;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M896_IG06: ; bbWeight=4, gcrefRegs=0088 {r3 r7}, byrefRegs=0000 {}, byref, isz
+ ;; size=46 bbWeight=1 PerfScore 15.00
+G_M896_IG03: ; bbWeight=4, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
+ mov r1, r7
+ ; gcrRegs +[r1]
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ blx r3 // CORINFO_HELP_CHKCASTARRAY
+ ; gcrRegs -[r1] +[r0]
+ ; gcr arg pop 0
+ str r0, [sp+0x04]
adds r0, r6, 4
- mov r1, r3
+ ; gcrRegs -[r0]
+ ldr r1, [sp+0x04]
; gcrRegs +[r1]
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[r1 r3]
+ ; gcrRegs -[r1]
adds r4, r4, 1
cmp r4, r5
blt SHORT G_M896_IG03
- ;; size=20 bbWeight=4 PerfScore 32.00
-G_M896_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=42 bbWeight=4 PerfScore 60.00
+G_M896_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r7]
- pop {r4,r5,r6,r7,r11,pc}
+ pop {r2,r3,r4,r5,r6,r7,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 94, prolog size 8, PerfScore 67.50, instruction count 34, allocated bytes for code 94 (MethodHash=984afc7f) for method PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier0-FullOpts)
+; Total bytes of code 104, prolog size 12, PerfScore 80.00, instruction count 35, allocated bytes for code 104 (MethodHash=984afc7f) for method PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier0-FullOpts)
; ============================================================
Unwind Info:
@@ -91,11 +85,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 47 (0x0002f) Actual length = 94 (0x00005e)
+ Function Length : 52 (0x00034) Actual length = 104 (0x000068)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 F0 pop {r4,r5,r6,r7,r11,lr} ; opsize 32
+ A8 FC pop {r2,r3,r4,r5,r6,r7,r11,lr} ; opsize 32
FF end
FF end
+10 (+10.64%) : 77339.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier0-FullOpts)
@@ -8,78 +8,72 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf>
-; V01 loc0 [V01,T02] ( 4, 13 ) int -> r4
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> r4
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> r1 "CASTCLASS eval op1"
-; V04 tmp2 [V04,T05] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> r3 class-hnd "spilling QMark2" <<unknown class>>
-; V06 cse0 [V06,T03] ( 3, 6 ) int -> r5 "CSE - aggressive"
-; V07 cse1 [V07,T06] ( 2, 5 ) ref -> r7 hoist "CSE - aggressive"
-; V08 cse2 [V08,T04] ( 3, 6 ) int -> r6 "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> r5 "CSE - aggressive"
+; V04 cse1 [V04,T01] ( 3, 6 ) ref -> r7 "CSE - aggressive"
+; V05 cse2 [V05,T03] ( 3, 6 ) int -> r6 "CSE - aggressive"
+; TEMP_01 ref -> [r11-0x14]
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M40467_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r11,lr}
- add r11, sp, 16
- ;; size=8 bbWeight=1 PerfScore 2.00
+ push {r2,r3,r4,r5,r6,r7,r11,lr}
+ add r11, sp, 24
+ movs r1, 0
+ str r1, [sp+0x04]
+ ;; size=12 bbWeight=1 PerfScore 4.00
G_M40467_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movs r4, 0
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- ldr r5, [r0]
+ movw r1, 0xd1ff
+ movt r1, 0xd1ff
+ ldr r5, [r1]
cmp r5, 0
- ble SHORT G_M40467_IG07
+ ble SHORT G_M40467_IG04
movw r6, 0xd1ff
movt r6, 0xd1ff
ldr r7, [r6]
; gcrRegs +[r7]
- ;; size=26 bbWeight=1 PerfScore 9.00
-G_M40467_IG03: ; bbWeight=4, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
mov r1, r7
; gcrRegs +[r1]
- mov r3, r1
- ; gcrRegs +[r3]
- cmp r3, 0
- beq SHORT G_M40467_IG06
- ;; size=8 bbWeight=4 PerfScore 16.00
-G_M40467_IG04: ; bbWeight=1, gcrefRegs=008A {r1 r3 r7}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r3]
- movw r2, 0xd1ff
- movt r2, 0xd1ff
- cmp r0, r2
- beq SHORT G_M40467_IG06
- ;; size=14 bbWeight=1 PerfScore 5.00
-G_M40467_IG05: ; bbWeight=0.50, gcrefRegs=0082 {r1 r7}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r3]
- mov r0, r2
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_CHKCASTARRAY
; gcrRegs -[r1] +[r0]
; gcr arg pop 0
- mov r3, r0
- ; gcrRegs +[r3]
- ;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M40467_IG06: ; bbWeight=4, gcrefRegs=0088 {r3 r7}, byrefRegs=0000 {}, byref, isz
+ ;; size=46 bbWeight=1 PerfScore 15.00
+G_M40467_IG03: ; bbWeight=4, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
+ mov r1, r7
+ ; gcrRegs +[r1]
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ blx r3 // CORINFO_HELP_CHKCASTARRAY
+ ; gcrRegs -[r1] +[r0]
+ ; gcr arg pop 0
+ str r0, [sp+0x04]
adds r0, r6, 4
- mov r1, r3
+ ; gcrRegs -[r0]
+ ldr r1, [sp+0x04]
; gcrRegs +[r1]
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[r1 r3]
+ ; gcrRegs -[r1]
adds r4, r4, 1
cmp r4, r5
blt SHORT G_M40467_IG03
- ;; size=20 bbWeight=4 PerfScore 32.00
-G_M40467_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=42 bbWeight=4 PerfScore 60.00
+G_M40467_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r7]
- pop {r4,r5,r6,r7,r11,pc}
+ pop {r2,r3,r4,r5,r6,r7,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 94, prolog size 8, PerfScore 67.50, instruction count 34, allocated bytes for code 94 (MethodHash=dc5f61ec) for method PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier0-FullOpts)
+; Total bytes of code 104, prolog size 12, PerfScore 80.00, instruction count 35, allocated bytes for code 104 (MethodHash=dc5f61ec) for method PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier0-FullOpts)
; ============================================================
Unwind Info:
@@ -91,11 +85,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 47 (0x0002f) Actual length = 94 (0x00005e)
+ Function Length : 52 (0x00034) Actual length = 104 (0x000068)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 F0 pop {r4,r5,r6,r7,r11,lr} ; opsize 32
+ A8 FC pop {r2,r3,r4,r5,r6,r7,r11,lr} ; opsize 32
FF end
FF end
coreclr_tests.run.linux.arm.checked.mch
-30 (-44.12%) : 475614.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
-32 (-41.03%) : 1062.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
-32 (-41.03%) : 474403.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
+28 (+18.42%) : 155245.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 "replacement local"
;
-; 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
+32 (+20.51%) : 154839.dasm - System.Type:get_IsSerializable():ubyte:this (Tier1)
@@ -5,36 +5,35 @@
; optimized using Dynamic PGO
; r11 based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 6
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 6
; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 10, 5 ) ref -> r4 this class-hnd single-def <System.Type>
-; V01 loc0 [V01,T00] ( 11, 22.92) ref -> r0 class-hnd <System.Type>
+; V00 this [V00,T00] ( 10, 5 ) ref -> r4 this class-hnd single-def <System.Type>
+; V01 loc0 [V01,T01] ( 10, 7 ) ref -> r0 class-hnd <System.Type>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03,T05] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-; V04 tmp2 [V04,T04] ( 3, 2 ) int -> r0 "guarded devirt return temp"
-;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
-; V06 tmp4 [V06,T06] ( 3, 1 ) ref -> r0 "guarded devirt return temp"
-;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
-; V08 tmp6 [V08,T03] ( 3, 2 ) ref -> r0 "guarded devirt return temp"
-;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.RuntimeType>
-; V10 cse0 [V10,T02] ( 5, 3.75) int -> r5 "CSE - aggressive"
+; V03 tmp1 [V03,T04] ( 3, 2 ) int -> r0 "guarded devirt return temp"
+;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
+; V05 tmp3 [V05,T05] ( 3, 1 ) ref -> r0 "guarded devirt return temp"
+;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
+; V07 tmp5 [V07,T03] ( 3, 2 ) ref -> r0 "guarded devirt return temp"
+;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.RuntimeType>
+; V09 rat0 [V09,T02] ( 5, 3.75) ref -> r3 "replacement local"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M39137_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr}
+ push {r3,r4,r11,lr}
add r11, sp, 8
mov r4, r0
; gcrRegs +[r4]
;; size=10 bbWeight=1 PerfScore 3.00
G_M39137_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4]
- movw r5, 0xd1ff
- movt r5, 0xd1ff
- cmp r0, r5
- bne SHORT G_M39137_IG15
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r0, r3
+ bne SHORT G_M39137_IG17
mov r0, r4
; gcrRegs +[r0]
movw r3, 0xd1ff
@@ -45,70 +44,100 @@ G_M39137_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
G_M39137_IG03: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ands r0, r0, 0x2000
cmp r0, 0
- beq SHORT G_M39137_IG11
+ beq SHORT G_M39137_IG14
;; size=8 bbWeight=1 PerfScore 3.00
G_M39137_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r4]
movs r0, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M39137_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,pc}
+ pop {r3,r4,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M39137_IG06: ; bbWeight=16.67, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M39137_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r0]
+ mov r3, r0
+ ; gcrRegs +[r3]
+ cmp r3, 0
+ beq SHORT G_M39137_IG09
+ ;; size=6 bbWeight=0.50 PerfScore 1.50
+G_M39137_IG07: ; bbWeight=0.25, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {}, byref, isz
+ ldr r2, [r3]
+ movw r1, 0xd1ff
+ movt r1, 0xd1ff
+ cmp r2, r1
+ beq SHORT G_M39137_IG09
+ ;; size=14 bbWeight=0.25 PerfScore 1.25
+G_M39137_IG08: ; bbWeight=0.12, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r3]
+ movs r3, 0
+ ;; size=2 bbWeight=0.12 PerfScore 0.12
+G_M39137_IG09: ; bbWeight=0.50, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r3]
+ cmp r3, 0
+ beq SHORT G_M39137_IG12
+ ;; size=4 bbWeight=0.50 PerfScore 1.00
+G_M39137_IG10: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r3]
movw r3, 0xd1ff
movt r3, 0xd1ff
cmp r0, r3
beq SHORT G_M39137_IG04
- ;; size=12 bbWeight=16.67 PerfScore 66.67
-G_M39137_IG07: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
movw r3, 0xd1ff
movt r3, 0xd1ff
cmp r0, r3
beq SHORT G_M39137_IG04
ldr r3, [r0]
- cmp r3, r5
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ cmp r3, r2
bne SHORT G_M39137_IG16
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
- ;; size=30 bbWeight=1 PerfScore 11.00
-G_M39137_IG08: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ ;; size=50 bbWeight=1 PerfScore 17.00
+G_M39137_IG11: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
cmp r0, 0
- bne SHORT G_M39137_IG06
+ bne SHORT G_M39137_IG10
;; size=4 bbWeight=1 PerfScore 2.00
-G_M39137_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M39137_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
movs r0, 0
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M39137_IG10: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,pc}
+G_M39137_IG13: ; bbWeight=0.50, epilog, nogc, extend
+ pop {r3,r4,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M39137_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M39137_IG14: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r4]
ldr r0, [r4]
- cmp r0, r5
- bne SHORT G_M39137_IG17
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r0, r3
+ bne SHORT G_M39137_IG15
mov r0, r4
; gcrRegs +[r0]
- ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M39137_IG12: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r4]
- cmp r0, 0
- beq SHORT G_M39137_IG09
- ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M39137_IG13: ; bbWeight=0.25, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
- ldr r3, [r0]
- cmp r3, r5
- beq SHORT G_M39137_IG06
- ;; size=6 bbWeight=0.25 PerfScore 0.75
-G_M39137_IG14: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0]
- b SHORT G_M39137_IG09
- ;; size=2 bbWeight=0.12 PerfScore 0.12
+ b SHORT G_M39137_IG06
+ ;; size=18 bbWeight=0.50 PerfScore 3.50
G_M39137_IG15: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r4]
+ ; gcrRegs -[r0]
+ mov r0, r4
+ ; gcrRegs +[r0]
+ ldr r3, [r4]
+ ldr r3, [r3+0x38]
+ ldr r3, [r3]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r4]
+ b SHORT G_M39137_IG06
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M39137_IG16: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ ldr r3, [r0]
+ ldr r3, [r3+0x58]
+ ldr r3, [r3+0x10]
+ blx r3 // <unknown method>
+ b SHORT G_M39137_IG11
+ ;; size=10 bbWeight=0 PerfScore 0.00
+G_M39137_IG17: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0] +[r4]
mov r0, r4
; gcrRegs +[r0]
ldr r3, [r4]
@@ -118,27 +147,8 @@ G_M39137_IG15: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
; gcrRegs -[r0]
b SHORT G_M39137_IG03
;; size=12 bbWeight=0 PerfScore 0.00
-G_M39137_IG16: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r4] +[r0]
- ldr r3, [r0]
- ldr r3, [r3+0x58]
- ldr r3, [r3+0x10]
- blx r3 // <unknown method>
- b SHORT G_M39137_IG08
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M39137_IG17: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0] +[r4]
- mov r0, r4
- ; gcrRegs +[r0]
- ldr r3, [r4]
- ldr r3, [r3+0x38]
- ldr r3, [r3]
- blx r3 // <unknown method>
- ; gcrRegs -[r4]
- b SHORT G_M39137_IG12
- ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 156, prolog size 8, PerfScore 100.54, instruction count 63, allocated bytes for code 156 (MethodHash=114f671e) for method System.Type:get_IsSerializable():ubyte:this (Tier1)
+; Total bytes of code 188, prolog size 8, PerfScore 43.38, instruction count 73, allocated bytes for code 188 (MethodHash=114f671e) for method System.Type:get_IsSerializable():ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -150,7 +160,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 78 (0x0004e) Actual length = 156 (0x00009c)
+ Function Length : 94 (0x0005e) Actual length = 188 (0x0000bc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -162,7 +172,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 18 pop {r3,r4,r11,lr} ; opsize 32
FF end
FF end
+46 (+766.67%) : 374886.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 "replacement local"
;
-; 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%) : 180393.dasm - System.Linq.ParallelQuery1+<>c__1
1[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%) : 144370.dasm - System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c11[System.__Canon]:<GetMetadataViewProvider>b__1_0(System.Collections.Generic.IDictionary
2[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
-30 (-40.54%) : 173430.dasm - CSharpx.Either+<>cDisplayClass13_0`1[System.Canon]:b0():System.Canon:this (FullOpts)
@@ -3,70 +3,48 @@
; 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,T01] ( 4, 3.25) ref -> r5 this class-hnd single-def <CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]>
+; V00 this [V00,T00] ( 4, 4 ) ref -> r5 this class-hnd single-def <CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> r6 single-def "CASTCLASS eval op1"
-; V03 tmp2 [V03,T03] ( 3, 1.25) int -> r0 "fgMakeTemp is creating a new local variable"
-; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> r7 class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) int -> r0 "argument with side effect"
;
; Lcl frame size = 12
G_M12636_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r8,r11,lr}
+ push {r4,r5,lr}
sub sp, 12
- add r11, sp, 32
- str r0, [r11-0x1C]
+ str r0, [sp+0x04]
mov r5, r0
; gcrRegs +[r5]
- ;; size=16 bbWeight=1 PerfScore 5.00
-G_M12636_IG02: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
- ldr r6, [r5+0x04]
- ; gcrRegs +[r6]
- mov r7, r6
- ; gcrRegs +[r7]
- cmp r7, 0
- beq SHORT G_M12636_IG05
;; size=8 bbWeight=1 PerfScore 4.00
-G_M12636_IG03: ; bbWeight=0.25, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
- ldr r8, [r7]
+G_M12636_IG02: ; bbWeight=1, gcrefRegs=0020 {r5}, 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_M12636_IG05
- ;; size=24 bbWeight=0.25 PerfScore 2.25
-G_M12636_IG04: ; bbWeight=0.12, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r7]
- mov r1, r6
+ ; gcr arg pop 0
+ ldr r1, [r5+0x04]
; 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 r6] +[r0]
- mov r7, r0
- ; gcrRegs +[r7]
- ;; size=18 bbWeight=0.12 PerfScore 0.88
-G_M12636_IG05: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r0]
- mov r0, r7
- ; gcrRegs +[r0]
- ;; size=2 bbWeight=1 PerfScore 1.00
-G_M12636_IG06: ; bbWeight=1, epilog, nogc, extend
+ ; gcrRegs -[r1] +[r0]
+ ; gcr arg pop 0
+ ;; size=32 bbWeight=1 PerfScore 12.00
+G_M12636_IG03: ; bbWeight=1, epilog, nogc, extend
add sp, 12
- pop {r4,r5,r6,r7,r8,r11,pc}
- ;; size=6 bbWeight=1 PerfScore 2.00
+ pop {r4,r5,pc}
+ ;; size=4 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=bbb7cea3) for method CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]:<Cast>b__0():System.__Canon:this (FullOpts)
+; Total bytes of code 44, prolog size 6, PerfScore 18.00, instruction count 18, allocated bytes for code 44 (MethodHash=bbb7cea3) for method CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]:<Cast>b__0():System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
@@ -78,11 +56,12 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 74 (0x00004a)
+ Function Length : 22 (0x00016) Actual length = 44 (0x00002c)
--- 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
+ D5 pop {r4,r5,lr} ; opsize 16
+ FF end
FF end
+2 (+0.88%) : 99916.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%) : 66643.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%) : 154907.dasm - Microsoft.Internal.Collections.WeakReferenceCollection1[System.__Canon]:AliveItemsToList():System.Collections.Generic.List
1[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%) : 277457.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
-28 (-50.00%) : 252417.dasm - CSharpx.Either+<>cDisplayClass13_0`1[System.Canon]:b0():System.Canon:this (FullOpts)
@@ -2,58 +2,40 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; FullOpts code
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 4, 3.25) ref -> r4 this class-hnd single-def <CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]>
+; V00 this [V00,T00] ( 4, 4 ) ref -> r4 this class-hnd single-def <CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> r1 single-def "CASTCLASS eval op1"
-; V03 tmp2 [V03,T03] ( 3, 1.25) int -> r2 "fgMakeTemp is creating a new local variable"
-; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> r0 class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M12636_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r11,lr}
- sub sp, 12
- add r11, sp, 16
- str r0, [r11-0x0C]
+ push {r2,r3,r4,lr}
+ str r0, [sp+0x04]
mov r4, r0
; gcrRegs +[r4]
- ;; size=16 bbWeight=1 PerfScore 5.00
-G_M12636_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ;; size=6 bbWeight=1 PerfScore 3.00
+G_M12636_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ ldr r0, [r4]
+ ldr r0, [r0+0x24]
+ ldr r0, [r0]
+ ldr r0, [r0]
ldr r1, [r4+0x04]
; gcrRegs +[r1]
- mov r0, r1
- ; gcrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M12636_IG05
- ;; size=8 bbWeight=1 PerfScore 4.00
-G_M12636_IG03: ; bbWeight=0.25, gcrefRegs=0013 {r0 r1 r4}, byrefRegs=0000 {}, byref, isz
- ldr r3, [r0]
- ldr r2, [r4]
- ldr r2, [r2+0x24]
- ldr r2, [r2]
- ldr r2, [r2]
- cmp r3, r2
- beq SHORT G_M12636_IG05
- ;; size=14 bbWeight=0.25 PerfScore 1.75
-G_M12636_IG04: ; bbWeight=0.12, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r0]
- mov r0, r2
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_CHKCASTANY
; gcrRegs -[r1] +[r0]
- ;; size=12 bbWeight=0.12 PerfScore 0.50
-G_M12636_IG05: ; bbWeight=1, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref, epilog, nogc
- add sp, 12
- pop {r4,r11,pc}
- ;; size=6 bbWeight=1 PerfScore 2.00
+ ; gcr arg pop 0
+ ;; size=20 bbWeight=1 PerfScore 8.00
+G_M12636_IG03: ; bbWeight=1, epilog, nogc, extend
+ pop {r2,r3,r4,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 56, prolog size 14, PerfScore 13.25, instruction count 22, allocated bytes for code 56 (MethodHash=bbb7cea3) for method CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]:<Cast>b__0():System.__Canon:this (FullOpts)
+; Total bytes of code 28, prolog size 4, PerfScore 12.00, instruction count 12, allocated bytes for code 28 (MethodHash=bbb7cea3) for method CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]:<Cast>b__0():System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
@@ -65,11 +47,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 28 (0x0001c) Actual length = 56 (0x000038)
+ Function Length : 14 (0x0000e) Actual length = 28 (0x00001c)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- 03 add sp, sp, #12 ; opsize 16
- A8 10 pop {r4,r11,lr} ; opsize 32
+ ED 1C pop {r2,r3,r4,lr} ; opsize 16
+ FF end
FF end
-22 (-47.83%) : 16094.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
+28 (+7.82%) : 143912.dasm - System.Reflection.Emit.TypeBuilderImpl:DefineFieldCore(System.String,System.Type,System.Type[],System.Type[],int):System.Reflection.Emit.FieldBuilder:this (FullOpts)
@@ -8,28 +8,28 @@
; 1 inlinees with PGO data; 6 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 8, 7 ) ref -> r4 this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl>
-; V01 arg1 [V01,T05] ( 3, 3 ) ref -> r6 class-hnd single-def <System.String>
-; V02 arg2 [V02,T04] ( 4, 3.50) ref -> r5 class-hnd single-def <System.Type>
-; V03 arg3 [V03,T06] ( 3, 3 ) ref -> r7 class-hnd single-def <System.Type[]>
-; V04 arg4 [V04,T14] ( 1, 1 ) ref -> [sp+0x20] class-hnd single-def <System.Type[]>
-; V05 arg5 [V05,T11] ( 2, 1.50) int -> r8 single-def
+; V00 this [V00,T04] ( 8, 7 ) ref -> r4 this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl>
+; V01 arg1 [V01,T06] ( 3, 3 ) ref -> r6 class-hnd single-def <System.String>
+; V02 arg2 [V02,T05] ( 4, 3.50) ref -> r5 class-hnd single-def <System.Type>
+; V03 arg3 [V03,T07] ( 3, 3 ) ref -> r7 class-hnd single-def <System.Type[]>
+; V04 arg4 [V04,T16] ( 1, 1 ) ref -> [sp+0x20] class-hnd single-def <System.Type[]>
+; V05 arg5 [V05,T13] ( 2, 1.50) int -> r8 single-def
;* V06 loc0 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Reflection.Emit.FieldBuilderImpl>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V08 tmp1 [V08,T01] ( 12, 21 ) ref -> r9 class-hnd exact single-def "NewObj constructor temp" <System.Reflection.Emit.FieldBuilderImpl>
-;* V09 tmp2 [V09,T12] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V10 tmp3 [V10,T00] ( 7, 19 ) ref -> r0 class-hnd "Inline stloc first use temp" <System.Type>
-;* V11 tmp4 [V11,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.Emit.TypeBuilderImpl>
-;* V13 tmp6 [V13,T15] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl>
-;* V14 tmp7 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl>
-;* V15 tmp8 [V15,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V16 tmp9 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.Emit.TypeBuilderImpl>
-;* V17 tmp10 [V17,T08] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl>
-;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl>
-; V19 tmp12 [V19,T02] ( 7, 11 ) ref -> r0 class-hnd single-def "Inlining Arg" <<unknown class>>
-; V20 tmp13 [V20,T10] ( 3, 2.46) ref -> r1 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V21 tmp14 [V21,T09] ( 4, 2.91) int -> r3 "Inline stloc first use temp"
+;* V09 tmp2 [V09,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V10 tmp3 [V10,T00] ( 9, 21.50) ref -> r0 class-hnd "Inline stloc first use temp" <System.Type>
+;* V11 tmp4 [V11,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V12 tmp5 [V12,T17] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl>
+;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl>
+;* V14 tmp7 [V14,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V15 tmp8 [V15,T12] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl>
+;* V16 tmp9 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl>
+; V17 tmp10 [V17,T03] ( 7, 11 ) ref -> r0 class-hnd single-def "Inlining Arg" <<unknown class>>
+; V18 tmp11 [V18,T11] ( 3, 2.46) ref -> r1 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V19 tmp12 [V19,T10] ( 4, 2.91) int -> r3 "Inline stloc first use temp"
+; V20 rat0 [V20,T09] ( 3, 2.50) ref -> r3 "replacement local"
+; V21 rat1 [V21,T02] ( 3, 10 ) ref -> r1 "replacement local"
;
; Lcl frame size = 0
@@ -57,7 +57,7 @@ G_M54407_IG02: ; bbWeight=1, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000
ldr r0, [r4+0x20]
; gcrRegs +[r0]
cmp r0, 0
- bne SHORT G_M54407_IG08
+ bne SHORT G_M54407_IG11
;; size=20 bbWeight=1 PerfScore 8.00
G_M54407_IG03: ; bbWeight=0.50, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
@@ -66,31 +66,53 @@ G_M54407_IG03: ; bbWeight=0.50, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0
movw r3, 0xd1ff
movt r3, 0xd1ff
cmp r0, r3
- bne SHORT G_M54407_IG05
+ beq SHORT G_M54407_IG11
+ mov r3, r0
+ ; gcrRegs +[r3]
+ cmp r3, 0
+ beq SHORT G_M54407_IG08
+ ;; size=20 bbWeight=0.50 PerfScore 4.00
+G_M54407_IG04: ; bbWeight=0.25, gcrefRegs=00F9 {r0 r3 r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+ ldr r3, [r3]
+ ; gcrRegs -[r3]
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ cmp r3, r2
+ beq SHORT G_M54407_IG08
+ ;; size=14 bbWeight=0.25 PerfScore 1.25
+G_M54407_IG05: ; bbWeight=0.50, gcrefRegs=00F1 {r0 r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
b SHORT G_M54407_IG08
- ;; size=16 bbWeight=0.50 PerfScore 3.00
-G_M54407_IG04: ; bbWeight=2, gcrefRegs=00F1 {r0 r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
+G_M54407_IG06: ; bbWeight=2, gcrefRegs=00F1 {r0 r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
movw r1, 0xd1ff
movt r1, 0xd1ff
cmp r0, r1
- beq SHORT G_M54407_IG07
- ;; size=12 bbWeight=2 PerfScore 8.00
-G_M54407_IG05: ; bbWeight=4, gcrefRegs=00F1 {r0 r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+ beq SHORT G_M54407_IG10
+ mov r1, r0
+ ; gcrRegs +[r1]
+ cmp r1, 0
+ beq SHORT G_M54407_IG08
+ ;; size=18 bbWeight=2 PerfScore 14.00
+G_M54407_IG07: ; bbWeight=1, gcrefRegs=00F3 {r0 r1 r4 r5 r6 r7}, byrefRegs=0000 {}, byref
+ ldr r1, [r1]
+ ; gcrRegs -[r1]
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M54407_IG08: ; bbWeight=4, gcrefRegs=00F1 {r0 r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
ldr r3, [r0]
ldr r3, [r3+0x58]
ldr r3, [r3+0x10]
blx r3 // <unknown method>
cmp r0, 0
- bne SHORT G_M54407_IG04
+ bne SHORT G_M54407_IG06
;; size=12 bbWeight=4 PerfScore 24.00
-G_M54407_IG06: ; bbWeight=0.50, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M54407_IG09: ; bbWeight=0.50, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
- b SHORT G_M54407_IG08
+ b SHORT G_M54407_IG11
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M54407_IG07: ; bbWeight=0.50, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M54407_IG10: ; bbWeight=0.50, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
ands r1, r8, 16
cmp r1, 0
- bne SHORT G_M54407_IG08
+ bne SHORT G_M54407_IG11
add r0, r4, 32
; byrRegs +[r0]
mov r1, r5
@@ -101,7 +123,7 @@ G_M54407_IG07: ; bbWeight=0.50, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0
; gcrRegs -[r1]
; byrRegs -[r0]
;; size=24 bbWeight=0.50 PerfScore 4.00
-G_M54407_IG08: ; bbWeight=1, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M54407_IG11: ; bbWeight=1, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
movw r0, 0xd1ff
movt r0, 0xd1ff
movw r3, 0xd1ff
@@ -115,9 +137,9 @@ G_M54407_IG08: ; bbWeight=1, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000
ldr r1, [r1]
and r1, r1, 1
cmp r1, 1
- bne SHORT G_M54407_IG14
+ bne SHORT G_M54407_IG17
;; size=38 bbWeight=1 PerfScore 12.00
-G_M54407_IG09: ; bbWeight=1, gcrefRegs=02F0 {r4 r5 r6 r7 r9}, byrefRegs=0000 {}, byref, isz
+G_M54407_IG12: ; bbWeight=1, gcrefRegs=02F0 {r4 r5 r6 r7 r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
movw r1, 0xd1ff
movt r1, 0xd1ff
@@ -190,9 +212,9 @@ G_M54407_IG09: ; bbWeight=1, gcrefRegs=02F0 {r4 r5 r6 r7 r9}, byrefRegs=0
ldr r3, [r0+0x08]
ldr lr, [r1+0x04]
cmp lr, r3
- bls SHORT G_M54407_IG11
+ bls SHORT G_M54407_IG14
;; size=144 bbWeight=1 PerfScore 46.00
-G_M54407_IG10: ; bbWeight=0.46, gcrefRegs=0203 {r0 r1 r9}, byrefRegs=0000 {}, byref, isz
+G_M54407_IG13: ; bbWeight=0.46, gcrefRegs=0203 {r0 r1 r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r4]
add lr, r3, 1
str lr, [r0+0x08]
@@ -211,9 +233,9 @@ G_M54407_IG10: ; bbWeight=0.46, gcrefRegs=0203 {r0 r1 r9}, byrefRegs=0000
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0]
- b SHORT G_M54407_IG12
+ b SHORT G_M54407_IG15
;; size=28 bbWeight=0.46 PerfScore 4.57
-G_M54407_IG11: ; bbWeight=0.04, gcrefRegs=0201 {r0 r9}, byrefRegs=0000 {}, byref
+G_M54407_IG14: ; bbWeight=0.04, gcrefRegs=0201 {r0 r9}, byrefRegs=0000 {}, byref
; gcrRegs +[r0]
mov r1, r9
; gcrRegs +[r1]
@@ -223,14 +245,14 @@ G_M54407_IG11: ; bbWeight=0.04, gcrefRegs=0201 {r0 r9}, byrefRegs=0000 {}
blx r3 // <unknown method>
; gcrRegs -[r0-r1]
;; size=14 bbWeight=0.04 PerfScore 0.22
-G_M54407_IG12: ; bbWeight=1, gcrefRegs=0200 {r9}, byrefRegs=0000 {}, byref
+G_M54407_IG15: ; bbWeight=1, gcrefRegs=0200 {r9}, byrefRegs=0000 {}, byref
mov r0, r9
; gcrRegs +[r0]
;; size=2 bbWeight=1 PerfScore 1.00
-G_M54407_IG13: ; bbWeight=1, epilog, nogc, extend
+G_M54407_IG16: ; bbWeight=1, epilog, nogc, extend
pop {r4,r5,r6,r7,r8,r9,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M54407_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=02F0 {r4 r5 r6 r7 r9}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M54407_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=02F0 {r4 r5 r6 r7 r9}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0] +[r4-r7]
movw r0, 0xd1ff
movt r0, 0xd1ff
@@ -238,10 +260,10 @@ G_M54407_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=02F0 {r4 r5 r6
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- b SHORT G_M54407_IG09
+ b SHORT G_M54407_IG12
;; size=22 bbWeight=0 PerfScore 0.00
-; Total bytes of code 358, prolog size 8, PerfScore 119.28, instruction count 122, allocated bytes for code 358 (MethodHash=3e1f2b78) for method System.Reflection.Emit.TypeBuilderImpl:DefineFieldCore(System.String,System.Type,System.Type[],System.Type[],int):System.Reflection.Emit.FieldBuilder:this (FullOpts)
+; Total bytes of code 386, prolog size 8, PerfScore 129.03, instruction count 134, allocated bytes for code 386 (MethodHash=3e1f2b78) for method System.Reflection.Emit.TypeBuilderImpl:DefineFieldCore(System.String,System.Type,System.Type[],System.Type[],int):System.Reflection.Emit.FieldBuilder:this (FullOpts)
; ============================================================
Unwind Info:
@@ -253,7 +275,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 179 (0x000b3) Actual length = 358 (0x000166)
+ Function Length : 193 (0x000c1) Actual length = 386 (0x000182)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+28 (+11.76%) : 143902.dasm - System.Reflection.Emit.TypeBuilderImpl:CreateTypeInfoCore():System.Reflection.TypeInfo:this (FullOpts)
@@ -8,23 +8,23 @@
; 1 inlinees with PGO data; 5 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 15, 9 ) ref -> r4 this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl>
+; V00 this [V00,T02] ( 15, 9 ) ref -> r4 this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl>
;# 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 "Inlining Arg" <<unknown class>>
-;* V03 tmp2 [V03,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V04 tmp3 [V04,T00] ( 7, 19 ) ref -> r0 class-hnd "Inline stloc first use temp" <System.Type>
-;* V05 tmp4 [V05,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.Emit.TypeBuilderImpl>
-;* V07 tmp6 [V07,T08] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl>
-;* V08 tmp7 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl>
-;* V09 tmp8 [V09,T02] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.Emit.TypeBuilderImpl>
-;* V11 tmp10 [V11,T04] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl>
-;* V12 tmp11 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl>
-; V13 tmp12 [V13,T09] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V14 tmp13 [V14,T10] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
-; V15 cse0 [V15,T05] ( 3, 1.50) int -> r0 "CSE - moderate"
-; V16 cse1 [V16,T03] ( 3, 3 ) ref -> r5 "CSE - aggressive"
+;* V03 tmp2 [V03,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V04 tmp3 [V04,T00] ( 9, 21.50) ref -> r0 class-hnd "Inline stloc first use temp" <System.Type>
+;* V05 tmp4 [V05,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V06 tmp5 [V06,T10] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl>
+;* V07 tmp6 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl>
+;* V08 tmp7 [V08,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V09 tmp8 [V09,T06] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl>
+;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl>
+; V11 tmp10 [V11,T11] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V12 tmp11 [V12,T12] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
+; V13 cse0 [V13,T07] ( 3, 1.50) int -> r0 "CSE - moderate"
+; V14 cse1 [V14,T05] ( 3, 3 ) ref -> r5 "CSE - aggressive"
+; V15 rat0 [V15,T04] ( 3, 2.50) ref -> r3 "replacement local"
+; V16 rat1 [V16,T01] ( 3, 10 ) ref -> r1 "replacement local"
;
; Lcl frame size = 0
@@ -64,41 +64,63 @@ G_M47746_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4},
ldr r0, [r0+0x08]
; gcrRegs -[r0]
cmp r0, 0
- bne SHORT G_M47746_IG11
+ bne SHORT G_M47746_IG14
ldr r0, [r4+0x44]
ands r0, r0, 32
cmp r0, 0
- bne SHORT G_M47746_IG11
+ bne SHORT G_M47746_IG14
mov r0, r4
; gcrRegs +[r0]
movw r5, 0xd1ff
movt r5, 0xd1ff
cmp r0, r5
- bne SHORT G_M47746_IG09
- b SHORT G_M47746_IG10
- ;; size=34 bbWeight=0.50 PerfScore 7.00
-G_M47746_IG08: ; bbWeight=2, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0000 {}, byref, isz
+ beq SHORT G_M47746_IG13
+ mov r3, r0
+ ; gcrRegs +[r3]
+ cmp r3, 0
+ beq SHORT G_M47746_IG12
+ ;; size=38 bbWeight=0.50 PerfScore 8.00
+G_M47746_IG08: ; bbWeight=0.25, gcrefRegs=0039 {r0 r3 r4 r5}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r5]
+ ldr r3, [r3]
+ ; gcrRegs -[r3]
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ cmp r3, r2
+ beq SHORT G_M47746_IG12
+ ;; size=14 bbWeight=0.25 PerfScore 1.25
+G_M47746_IG09: ; bbWeight=0.50, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M47746_IG12
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
+G_M47746_IG10: ; bbWeight=2, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0000 {}, byref, isz
cmp r0, r5
- beq SHORT G_M47746_IG11
- ;; size=4 bbWeight=2 PerfScore 4.00
-G_M47746_IG09: ; bbWeight=4, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0000 {}, byref, isz
+ beq SHORT G_M47746_IG14
+ mov r1, r0
+ ; gcrRegs +[r1]
+ cmp r1, 0
+ beq SHORT G_M47746_IG12
+ ;; size=10 bbWeight=2 PerfScore 10.00
+G_M47746_IG11: ; bbWeight=1, gcrefRegs=0033 {r0 r1 r4 r5}, byrefRegs=0000 {}, byref
+ ldr r1, [r1]
+ ; gcrRegs -[r1]
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M47746_IG12: ; bbWeight=4, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0000 {}, byref, isz
ldr r3, [r0]
ldr r3, [r3+0x58]
ldr r3, [r3+0x10]
blx r3 // <unknown method>
cmp r0, 0
- bne SHORT G_M47746_IG08
+ bne SHORT G_M47746_IG10
;; size=12 bbWeight=4 PerfScore 24.00
-G_M47746_IG10: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M47746_IG13: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0 r5]
ldr r0, [r4+0x44]
and r1, r0, 384
cmp r1, 384
- beq SHORT G_M47746_IG11
+ beq SHORT G_M47746_IG14
and r0, r0, 32
cmp r0, 32
- beq SHORT G_M47746_IG12
+ beq SHORT G_M47746_IG15
mov r0, r4
; gcrRegs +[r0]
movs r1, 6
@@ -107,7 +129,7 @@ G_M47746_IG10: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
ldr r3, [r3]
blx r3 // <unknown method>
;; size=36 bbWeight=0.50 PerfScore 6.50
-G_M47746_IG11: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M47746_IG14: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
mov r0, r4
; gcrRegs +[r0]
@@ -131,7 +153,7 @@ G_M47746_IG11: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs -[r0]
b SHORT G_M47746_IG03
;; size=46 bbWeight=0.50 PerfScore 8.50
-G_M47746_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M47746_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r4]
movw r0, 0xd1ff
movt r0, 0xd1ff
@@ -162,7 +184,7 @@ G_M47746_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bkpt
;; size=62 bbWeight=0 PerfScore 0.00
-; Total bytes of code 238, prolog size 8, PerfScore 60.50, instruction count 88, allocated bytes for code 238 (MethodHash=c0db457d) for method System.Reflection.Emit.TypeBuilderImpl:CreateTypeInfoCore():System.Reflection.TypeInfo:this (FullOpts)
+; Total bytes of code 266, prolog size 8, PerfScore 70.25, instruction count 100, allocated bytes for code 266 (MethodHash=c0db457d) for method System.Reflection.Emit.TypeBuilderImpl:CreateTypeInfoCore():System.Reflection.TypeInfo:this (FullOpts)
; ============================================================
Unwind Info:
@@ -174,7 +196,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 119 (0x00077) Actual length = 238 (0x0000ee)
+ Function Length : 133 (0x00085) Actual length = 266 (0x00010a)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+28 (+22.22%) : 143941.dasm - System.Reflection.Emit.TypeBuilderImpl:get_UnderlyingSystemType():System.Type:this (FullOpts)
@@ -8,22 +8,22 @@
; 0 inlinees with PGO data; 1 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 6, 5 ) ref -> r4 this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl>
+; V00 this [V00,T02] ( 6, 5 ) ref -> r4 this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T09] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-;* V03 tmp2 [V03,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V04 tmp3 [V04,T00] ( 7, 20 ) ref -> r0 class-hnd "Inline stloc first use temp" <System.Type>
-;* V05 tmp4 [V05,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.Emit.TypeBuilderImpl>
-;* V07 tmp6 [V07,T08] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl>
-;* V08 tmp7 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl>
-;* V09 tmp8 [V09,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.Emit.TypeBuilderImpl>
-;* V11 tmp10 [V11,T04] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl>
-;* V12 tmp11 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl>
-; V13 tmp12 [V13,T10] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
-; V14 cse0 [V14,T05] ( 3, 1.50) ref -> r0 "CSE - moderate"
-; V15 cse1 [V15,T02] ( 3, 4 ) ref -> r5 "CSE - aggressive"
+; V02 tmp1 [V02,T11] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;* V03 tmp2 [V03,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V04 tmp3 [V04,T00] ( 9, 22.50) ref -> r0 class-hnd "Inline stloc first use temp" <System.Type>
+;* V05 tmp4 [V05,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V06 tmp5 [V06,T10] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl>
+;* V07 tmp6 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl>
+;* V08 tmp7 [V08,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V09 tmp8 [V09,T06] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl>
+;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl>
+; V11 tmp10 [V11,T12] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
+; V12 cse0 [V12,T07] ( 3, 1.50) ref -> r0 "CSE - moderate"
+; V13 cse1 [V13,T03] ( 3, 4 ) ref -> r5 "CSE - aggressive"
+; V14 rat0 [V14,T05] ( 3, 2.50) ref -> r3 "replacement local"
+; V15 rat1 [V15,T01] ( 3, 10 ) ref -> r3 "replacement local"
;
; Lcl frame size = 0
@@ -40,47 +40,68 @@ G_M32453_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
movw r5, 0xd1ff
movt r5, 0xd1ff
cmp r0, r5
- bne SHORT G_M32453_IG05
+ beq SHORT G_M32453_IG12
;; size=18 bbWeight=1 PerfScore 6.00
-G_M32453_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0]
- b SHORT G_M32453_IG09
+G_M32453_IG03: ; bbWeight=0.50, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r5]
+ mov r3, r0
+ ; gcrRegs +[r3]
+ cmp r3, 0
+ beq SHORT G_M32453_IG08
+ ;; size=6 bbWeight=0.50 PerfScore 1.50
+G_M32453_IG04: ; bbWeight=0.25, gcrefRegs=0039 {r0 r3 r4 r5}, byrefRegs=0000 {}, byref, isz
+ ldr r3, [r3]
+ ; gcrRegs -[r3]
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ cmp r3, r2
+ beq SHORT G_M32453_IG08
+ ;; size=14 bbWeight=0.25 PerfScore 1.25
+G_M32453_IG05: ; bbWeight=0.50, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M32453_IG08
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M32453_IG04: ; bbWeight=2, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r0 r5]
+G_M32453_IG06: ; bbWeight=2, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0000 {}, byref, isz
cmp r0, r5
- beq SHORT G_M32453_IG07
- ;; size=4 bbWeight=2 PerfScore 4.00
-G_M32453_IG05: ; bbWeight=4, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0000 {}, byref, isz
+ beq SHORT G_M32453_IG10
+ mov r3, r0
+ ; gcrRegs +[r3]
+ cmp r3, 0
+ beq SHORT G_M32453_IG08
+ ;; size=10 bbWeight=2 PerfScore 10.00
+G_M32453_IG07: ; bbWeight=1, gcrefRegs=0039 {r0 r3 r4 r5}, byrefRegs=0000 {}, byref
+ ldr r3, [r3]
+ ; gcrRegs -[r3]
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M32453_IG08: ; bbWeight=4, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0000 {}, byref, isz
ldr r3, [r0]
ldr r3, [r3+0x58]
ldr r3, [r3+0x10]
blx r3 // <unknown method>
cmp r0, 0
- bne SHORT G_M32453_IG04
+ bne SHORT G_M32453_IG06
;; size=12 bbWeight=4 PerfScore 24.00
-G_M32453_IG06: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M32453_IG09: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0 r5]
- b SHORT G_M32453_IG09
+ b SHORT G_M32453_IG12
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M32453_IG07: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M32453_IG10: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4+0x20]
; gcrRegs +[r0]
cmp r0, 0
- beq SHORT G_M32453_IG11
+ beq SHORT G_M32453_IG14
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M32453_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M32453_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop {r4,r5,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M32453_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
+G_M32453_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0]
mov r0, r4
; gcrRegs +[r0]
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M32453_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M32453_IG13: ; bbWeight=0.50, epilog, nogc, extend
pop {r4,r5,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M32453_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M32453_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0 r4]
movw r0, 0xd1ff
movt r0, 0xd1ff
@@ -111,7 +132,7 @@ G_M32453_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
bkpt
;; size=62 bbWeight=0 PerfScore 0.00
-; Total bytes of code 126, prolog size 8, PerfScore 41.00, instruction count 46, allocated bytes for code 126 (MethodHash=b7cb813a) for method System.Reflection.Emit.TypeBuilderImpl:get_UnderlyingSystemType():System.Type:this (FullOpts)
+; Total bytes of code 154, prolog size 8, PerfScore 50.75, instruction count 58, allocated bytes for code 154 (MethodHash=b7cb813a) for method System.Reflection.Emit.TypeBuilderImpl:get_UnderlyingSystemType():System.Type:this (FullOpts)
; ============================================================
Unwind Info:
@@ -123,7 +144,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 63 (0x0003f) Actual length = 126 (0x00007e)
+ Function Length : 77 (0x0004d) Actual length = 154 (0x00009a)
---- 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%) : 596078.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 91
; 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%) : 624167.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 837
; 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%) : 332151.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
+40 (+17.09%) : 355748.dasm - System.Linq.Enumerable:Concat[System.Nullable1[int]](System.Collections.Generic.IEnumerable
1[System.Nullable1[int]],System.Collections.Generic.IEnumerable
1System.Nullable1[int]]):System.Collections.Generic.IEnumerable
1[System.Nullable`1[int]
@@ -9,19 +9,18 @@
; 2 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 9, 7 ) ref -> r4 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.Nullable`1[int]]>
-; V01 arg1 [V01,T02] ( 8, 6 ) ref -> r5 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.Nullable`1[int]]>
-; V02 loc0 [V02,T05] ( 6, 2 ) ref -> r0 class-hnd single-def <System.Linq.Enumerable+ConcatIterator`1[System.Nullable`1[int]]>
+; V00 arg0 [V00,T01] ( 8, 6 ) ref -> r4 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.Nullable`1[int]]>
+; V01 arg1 [V01,T05] ( 7, 5 ) ref -> r5 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.Nullable`1[int]]>
+; V02 loc0 [V02,T08] ( 6, 2 ) ref -> r0 class-hnd single-def <System.Linq.Enumerable+ConcatIterator`1[System.Nullable`1[int]]>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 5, 10 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Enumerable+Concat2Iterator`1[System.Nullable`1[int]]>
-;* V05 tmp2 [V05,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Nullable`1[int][]>
-;* V07 tmp4 [V07,T06] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Nullable`1[int][]>
-;* V08 tmp5 [V08,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Nullable`1[int][]>
-;* V10 tmp7 [V10,T07] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Nullable`1[int][]>
-; V11 cse0 [V11,T04] ( 3, 3 ) int -> r3 "CSE - aggressive"
-; V12 rat0 [V12,T03] ( 7, 8 ) ref -> r0 class-hnd "replacement local" <System.Linq.Enumerable+ConcatIterator`1[System.Nullable`1[int]]>
+; V04 tmp1 [V04,T00] ( 5, 10 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Enumerable+Concat2Iterator`1[System.Nullable`1[int]]>
+;* V05 tmp2 [V05,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V06 tmp3 [V06,T06] ( 3, 3 ) ref -> r0 class-hnd exact single-def "Inline stloc first use temp" <System.Nullable`1[int][]>
+;* V07 tmp4 [V07,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V08 tmp5 [V08,T07] ( 3, 3 ) ref -> r0 class-hnd exact single-def "Inline stloc first use temp" <System.Nullable`1[int][]>
+; V09 rat0 [V09,T03] ( 5, 7.50) ref -> r0 "replacement local"
+; V10 rat1 [V10,T04] ( 5, 7.50) ref -> r0 "replacement local"
+; V11 rat2 [V11,T02] ( 7, 8 ) ref -> r0 "replacement local"
;
; Lcl frame size = 4
@@ -35,37 +34,75 @@ G_M58683_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=12 bbWeight=1 PerfScore 4.00
G_M58683_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
cmp r4, 0
- beq SHORT G_M58683_IG11
+ beq SHORT G_M58683_IG17
cmp r5, 0
- beq SHORT G_M58683_IG12
- ldr r0, [r4]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- cmp r0, r3
- bne SHORT G_M58683_IG03
- ldr r0, [r4+0x04]
- cmp r0, 0
- beq SHORT G_M58683_IG13
- ;; size=28 bbWeight=1 PerfScore 12.00
-G_M58683_IG03: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r5]
- cmp r0, r3
- bne SHORT G_M58683_IG04
- ldr r0, [r5+0x04]
- cmp r0, 0
- beq SHORT G_M58683_IG15
- ;; size=12 bbWeight=1 PerfScore 6.00
-G_M58683_IG04: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ beq SHORT G_M58683_IG18
mov r0, r4
; gcrRegs +[r0]
cmp r0, 0
+ bne SHORT G_M58683_IG04
+ ;; size=14 bbWeight=1 PerfScore 7.00
+G_M58683_IG03: ; bbWeight=1, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0000 {}, byref, isz
+ cmp r0, 0
+ beq SHORT G_M58683_IG06
+ ldr r0, [r0+0x04]
+ ; gcrRegs -[r0]
+ cmp r0, 0
+ bne SHORT G_M58683_IG06
+ b SHORT G_M58683_IG19
+ ;; size=12 bbWeight=1 PerfScore 6.00
+G_M58683_IG04: ; bbWeight=0.50, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r0]
+ ldr r3, [r0]
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ cmp r3, r2
+ beq SHORT G_M58683_IG03
+ ;; size=14 bbWeight=0.50 PerfScore 2.50
+G_M58683_IG05: ; bbWeight=0.25, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0]
+ movs r0, 0
+ b SHORT G_M58683_IG03
+ ;; size=4 bbWeight=0.25 PerfScore 0.50
+G_M58683_IG06: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ mov r0, r5
+ ; gcrRegs +[r0]
+ cmp r0, 0
bne SHORT G_M58683_IG08
;; size=6 bbWeight=1 PerfScore 3.00
-G_M58683_IG05: ; bbWeight=0.50, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0000 {}, byref, isz
+G_M58683_IG07: ; bbWeight=1, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0000 {}, byref, isz
cmp r0, 0
- bne SHORT G_M58683_IG09
+ beq SHORT G_M58683_IG10
+ ldr r0, [r0+0x04]
+ ; gcrRegs -[r0]
+ cmp r0, 0
+ bne SHORT G_M58683_IG10
+ b SHORT G_M58683_IG21
+ ;; size=12 bbWeight=1 PerfScore 6.00
+G_M58683_IG08: ; bbWeight=0.50, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r0]
+ ldr r3, [r0]
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ cmp r3, r2
+ beq SHORT G_M58683_IG07
+ ;; size=14 bbWeight=0.50 PerfScore 2.50
+G_M58683_IG09: ; bbWeight=0.25, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0]
+ movs r0, 0
+ b SHORT G_M58683_IG07
+ ;; size=4 bbWeight=0.25 PerfScore 0.50
+G_M58683_IG10: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ mov r0, r4
+ ; gcrRegs +[r0]
+ cmp r0, 0
+ bne SHORT G_M58683_IG14
+ ;; size=6 bbWeight=1 PerfScore 3.00
+G_M58683_IG11: ; bbWeight=0.50, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0000 {}, byref, isz
+ cmp r0, 0
+ bne SHORT G_M58683_IG15
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M58683_IG06: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+G_M58683_IG12: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
movw r0, 0xd1ff
movt r0, 0xd1ff
@@ -103,22 +140,22 @@ G_M58683_IG06: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
mov r0, r6
; gcrRegs +[r0]
;; size=66 bbWeight=1 PerfScore 21.00
-G_M58683_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M58683_IG13: ; bbWeight=1, epilog, nogc, extend
pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M58683_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M58683_IG14: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r6] +[r4-r5]
ldr r0, [r0]
; gcrRegs -[r0]
movw r3, 0xd1ff
movt r3, 0xd1ff
cmp r0, r3
- bne SHORT G_M58683_IG17
+ bne SHORT G_M58683_IG23
movs r0, 0
cmp r0, 0
- beq SHORT G_M58683_IG06
+ beq SHORT G_M58683_IG12
;; size=20 bbWeight=0.50 PerfScore 4.00
-G_M58683_IG09: ; bbWeight=0, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {}, byref
+G_M58683_IG15: ; bbWeight=0, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {}, byref
; gcrRegs -[r4] +[r0]
mov r1, r5
; gcrRegs +[r1]
@@ -126,13 +163,13 @@ G_M58683_IG09: ; bbWeight=0, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {}, b
ldr r3, [r3+0x34]
ldr r3, [r3+0x08]
;; size=8 bbWeight=0 PerfScore 0.00
-G_M58683_IG10: ; bbWeight=0, epilog, nogc, extend
+G_M58683_IG16: ; bbWeight=0, epilog, nogc, extend
add sp, 4
pop {r4,r5,r6,r11,lr}
bx r3 // <unknown method>
; gcr arg pop 0
;; size=8 bbWeight=0 PerfScore 0.00
-G_M58683_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M58683_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0-r1 r5]
movs r0, 4
movw r3, 0xd1ff
@@ -142,7 +179,7 @@ G_M58683_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
; gcr arg pop 0
bkpt
;; size=16 bbWeight=0 PerfScore 0.00
-G_M58683_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M58683_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r0, 14
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -151,23 +188,23 @@ G_M58683_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
bkpt
;; size=16 bbWeight=0 PerfScore 0.00
-G_M58683_IG13: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+G_M58683_IG19: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
; gcrRegs +[r5]
mov r0, r5
; gcrRegs +[r0]
;; size=2 bbWeight=0 PerfScore 0.00
-G_M58683_IG14: ; bbWeight=0, epilog, nogc, extend
+G_M58683_IG20: ; bbWeight=0, epilog, nogc, extend
pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=0 PerfScore 0.00
-G_M58683_IG15: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
+G_M58683_IG21: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0 r5] +[r4]
mov r0, r4
; gcrRegs +[r0]
;; size=2 bbWeight=0 PerfScore 0.00
-G_M58683_IG16: ; bbWeight=0, epilog, nogc, extend
+G_M58683_IG22: ; bbWeight=0, epilog, nogc, extend
pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=0 PerfScore 0.00
-G_M58683_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M58683_IG23: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0] +[r5]
mov r1, r4
; gcrRegs +[r1]
@@ -178,10 +215,10 @@ G_M58683_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5},
blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[r1] +[r0]
; gcr arg pop 0
- b SHORT G_M58683_IG05
+ b SHORT G_M58683_IG11
;; size=22 bbWeight=0 PerfScore 0.00
-; Total bytes of code 234, prolog size 12, PerfScore 52.00, instruction count 87, allocated bytes for code 234 (MethodHash=d8fb1ac4) for method System.Linq.Enumerable:Concat[System.Nullable`1[int]](System.Collections.Generic.IEnumerable`1[System.Nullable`1[int]],System.Collections.Generic.IEnumerable`1[System.Nullable`1[int]]):System.Collections.Generic.IEnumerable`1[System.Nullable`1[int]] (Tier1)
+; Total bytes of code 274, prolog size 12, PerfScore 62.00, instruction count 105, allocated bytes for code 274 (MethodHash=d8fb1ac4) for method System.Linq.Enumerable:Concat[System.Nullable`1[int]](System.Collections.Generic.IEnumerable`1[System.Nullable`1[int]],System.Collections.Generic.IEnumerable`1[System.Nullable`1[int]]):System.Collections.Generic.IEnumerable`1[System.Nullable`1[int]] (Tier1)
; ============================================================
Unwind Info:
@@ -193,7 +230,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 117 (0x00075) Actual length = 234 (0x0000ea)
+ Function Length : 137 (0x00089) Actual length = 274 (0x000112)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+32 (+20.51%) : 497533.dasm - System.Type:get_IsSerializable():ubyte:this (Tier1)
@@ -5,36 +5,35 @@
; optimized using Dynamic PGO
; r11 based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 779
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 779
; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T01] ( 10, 4.96) ref -> r4 this class-hnd single-def <System.Type>
-; V01 loc0 [V01,T00] ( 11, 7.84) ref -> r0 class-hnd <System.Type>
+; V01 loc0 [V01,T00] ( 10, 7.60) ref -> r0 class-hnd <System.Type>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03,T05] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-; V04 tmp2 [V04,T04] ( 3, 2 ) int -> r0 "guarded devirt return temp"
-;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
-; V06 tmp4 [V06,T06] ( 3, 0.96) ref -> r0 "guarded devirt return temp"
-;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
-; V08 tmp6 [V08,T03] ( 3, 2.21) ref -> r0 "guarded devirt return temp"
-;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.RuntimeType>
-; V10 cse0 [V10,T02] ( 5, 3.83) int -> r5 "CSE - aggressive"
+; V03 tmp1 [V03,T04] ( 3, 2 ) int -> r0 "guarded devirt return temp"
+;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
+; V05 tmp3 [V05,T05] ( 3, 0.96) ref -> r0 "guarded devirt return temp"
+;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
+; V07 tmp5 [V07,T03] ( 3, 2.21) ref -> r0 "guarded devirt return temp"
+;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.RuntimeType>
+; V09 rat0 [V09,T02] ( 5, 3.61) ref -> r3 "replacement local"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M39137_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr}
+ push {r3,r4,r11,lr}
add r11, sp, 8
mov r4, r0
; gcrRegs +[r4]
;; size=10 bbWeight=1 PerfScore 3.00
G_M39137_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4]
- movw r5, 0xd1ff
- movt r5, 0xd1ff
- cmp r0, r5
- bne SHORT G_M39137_IG15
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r0, r3
+ bne SHORT G_M39137_IG18
mov r0, r4
; gcrRegs +[r0]
movw r3, 0xd1ff
@@ -45,17 +44,40 @@ G_M39137_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
G_M39137_IG03: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ands r0, r0, 0x2000
cmp r0, 0
- beq SHORT G_M39137_IG11
+ beq SHORT G_M39137_IG15
;; size=8 bbWeight=1 PerfScore 3.00
G_M39137_IG04: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r4]
movs r0, 1
;; size=2 bbWeight=0.52 PerfScore 0.52
G_M39137_IG05: ; bbWeight=0.52, epilog, nogc, extend
- pop {r4,r5,r11,pc}
+ pop {r3,r4,r11,pc}
;; size=4 bbWeight=0.52 PerfScore 0.52
-G_M39137_IG06: ; bbWeight=1.11, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M39137_IG06: ; bbWeight=0.48, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r0]
+ mov r3, r0
+ ; gcrRegs +[r3]
+ cmp r3, 0
+ beq SHORT G_M39137_IG09
+ ;; size=6 bbWeight=0.48 PerfScore 1.44
+G_M39137_IG07: ; bbWeight=0.24, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {}, byref, isz
+ ldr r2, [r3]
+ movw r1, 0xd1ff
+ movt r1, 0xd1ff
+ cmp r2, r1
+ beq SHORT G_M39137_IG09
+ ;; size=14 bbWeight=0.24 PerfScore 1.20
+G_M39137_IG08: ; bbWeight=0.12, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r3]
+ movs r3, 0
+ ;; size=2 bbWeight=0.12 PerfScore 0.12
+G_M39137_IG09: ; bbWeight=0.48, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r3]
+ cmp r3, 0
+ beq SHORT G_M39137_IG13
+ ;; size=4 bbWeight=0.48 PerfScore 0.96
+G_M39137_IG10: ; bbWeight=1.11, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r3]
movw r3, 0xd1ff
movt r3, 0xd1ff
cmp r0, r3
@@ -65,50 +87,59 @@ G_M39137_IG06: ; bbWeight=1.11, gcVars=00000000 {}, gcrefRegs=0001 {r0},
cmp r0, r3
beq SHORT G_M39137_IG04
;; size=24 bbWeight=1.11 PerfScore 8.87
-G_M39137_IG07: ; bbWeight=1.10, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+G_M39137_IG11: ; bbWeight=1.10, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
ldr r3, [r0]
- cmp r3, r5
- bne SHORT G_M39137_IG16
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ cmp r3, r2
+ bne SHORT G_M39137_IG17
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
- ;; size=18 bbWeight=1.10 PerfScore 7.73
-G_M39137_IG08: ; bbWeight=1.10, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ ;; size=26 bbWeight=1.10 PerfScore 9.94
+G_M39137_IG12: ; bbWeight=1.10, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
cmp r0, 0
- bne SHORT G_M39137_IG06
+ bne SHORT G_M39137_IG10
;; size=4 bbWeight=1.10 PerfScore 2.21
-G_M39137_IG09: ; bbWeight=0.48, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M39137_IG13: ; bbWeight=0.48, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
movs r0, 0
;; size=2 bbWeight=0.48 PerfScore 0.48
-G_M39137_IG10: ; bbWeight=0.48, epilog, nogc, extend
- pop {r4,r5,r11,pc}
+G_M39137_IG14: ; bbWeight=0.48, epilog, nogc, extend
+ pop {r3,r4,r11,pc}
;; size=4 bbWeight=0.48 PerfScore 0.48
-G_M39137_IG11: ; bbWeight=0.48, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M39137_IG15: ; bbWeight=0.48, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r4]
ldr r0, [r4]
- cmp r0, r5
- bne SHORT G_M39137_IG17
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r0, r3
+ bne SHORT G_M39137_IG16
mov r0, r4
; gcrRegs +[r0]
- ;; size=8 bbWeight=0.48 PerfScore 1.93
-G_M39137_IG12: ; bbWeight=0.48, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r4]
- cmp r0, 0
- beq SHORT G_M39137_IG09
- ;; size=4 bbWeight=0.48 PerfScore 0.96
-G_M39137_IG13: ; bbWeight=0.24, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
- ldr r3, [r0]
- cmp r3, r5
- beq SHORT G_M39137_IG06
- ;; size=6 bbWeight=0.24 PerfScore 0.72
-G_M39137_IG14: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M39137_IG06
+ ;; size=18 bbWeight=0.48 PerfScore 3.37
+G_M39137_IG16: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
- b SHORT G_M39137_IG09
- ;; size=2 bbWeight=0.12 PerfScore 0.12
-G_M39137_IG15: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r4]
+ mov r0, r4
+ ; gcrRegs +[r0]
+ ldr r3, [r4]
+ ldr r3, [r3+0x38]
+ ldr r3, [r3]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r4]
+ b SHORT G_M39137_IG06
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M39137_IG17: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ ldr r3, [r0]
+ ldr r3, [r3+0x58]
+ ldr r3, [r3+0x10]
+ blx r3 // <unknown method>
+ b SHORT G_M39137_IG12
+ ;; size=10 bbWeight=0 PerfScore 0.00
+G_M39137_IG18: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0] +[r4]
mov r0, r4
; gcrRegs +[r0]
ldr r3, [r4]
@@ -118,27 +149,8 @@ G_M39137_IG15: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
; gcrRegs -[r0]
b SHORT G_M39137_IG03
;; size=12 bbWeight=0 PerfScore 0.00
-G_M39137_IG16: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r4] +[r0]
- ldr r3, [r0]
- ldr r3, [r3+0x58]
- ldr r3, [r3+0x10]
- blx r3 // <unknown method>
- b SHORT G_M39137_IG08
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M39137_IG17: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0] +[r4]
- mov r0, r4
- ; gcrRegs +[r0]
- ldr r3, [r4]
- ldr r3, [r3+0x38]
- ldr r3, [r3]
- blx r3 // <unknown method>
- ; gcrRegs -[r4]
- b SHORT G_M39137_IG12
- ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 156, prolog size 8, PerfScore 39.53, instruction count 63, allocated bytes for code 156 (MethodHash=114f671e) for method System.Type:get_IsSerializable():ubyte:this (Tier1)
+; Total bytes of code 188, prolog size 8, PerfScore 45.11, instruction count 73, allocated bytes for code 188 (MethodHash=114f671e) for method System.Type:get_IsSerializable():ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -150,7 +162,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 78 (0x0004e) Actual length = 156 (0x00009c)
+ Function Length : 94 (0x0005e) Actual length = 188 (0x0000bc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -162,7 +174,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 18 pop {r3,r4,r11,lr} ; opsize 32
FF end
FF end
+44 (+37.93%) : 472906.dasm - System.Type:op_Equality(System.Type,System.Type):ubyte (Tier1)
@@ -9,23 +9,22 @@
; 1 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 7, 4.37) ref -> r4 class-hnd single-def <System.Type>
-; V01 arg1 [V01,T01] ( 8, 4.43) ref -> r1 class-hnd single-def <System.Type>
+; V00 arg0 [V00,T00] ( 9, 4.92) ref -> r4 class-hnd single-def <System.Type>
+; V01 arg1 [V01,T01] ( 10, 4.43) ref -> r1 class-hnd single-def <System.Type>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03,T03] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V04 tmp2 [V04,T04] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-; V05 tmp3 [V05,T06] ( 2, 0.38) int -> r6 "guarded devirt return temp"
-;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Reflection.TypeLoading.Ecma.EcmaGenericMethodParameterType>
-;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.Reflection.TypeLoading.Ecma.EcmaGenericMethodParameterType>
-; V08 tmp6 [V08,T05] ( 2, 0.38) ref -> r0 "guarded devirt return temp"
-;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
-; V10 cse0 [V10,T02] ( 4, 1.55) int -> r5 "CSE - moderate"
+; V03 tmp1 [V03,T05] ( 2, 0.38) int -> r0 "guarded devirt return temp"
+;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Reflection.TypeLoading.Ecma.EcmaGenericMethodParameterType>
+;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.Reflection.TypeLoading.Ecma.EcmaGenericMethodParameterType>
+; V06 tmp4 [V06,T04] ( 3, 0.38) ref -> r1 "guarded devirt return temp"
+;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
+; V08 rat0 [V08,T02] ( 5, 3.74) ref -> r0 "replacement local"
+; V09 rat1 [V09,T03] ( 5, 2.78) ref -> r0 "replacement local"
;
; Lcl frame size = 4
-G_M64659_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r3,r4,r5,r6,r11,lr}
- add r11, sp, 16
+G_M64659_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=1 PerfScore 3.00
@@ -39,34 +38,114 @@ G_M64659_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
movs r0, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M64659_IG04: ; bbWeight=0.50, epilog, nogc, extend
- pop {r3,r4,r5,r6,r11,pc}
+ pop {r3,r4,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M64659_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r1 r4]
cmp r4, 0
- beq SHORT G_M64659_IG11
+ beq SHORT G_M64659_IG14
cmp r1, 0
- beq SHORT G_M64659_IG11
+ beq SHORT G_M64659_IG14
;; size=8 bbWeight=0.50 PerfScore 2.00
G_M64659_IG06: ; bbWeight=0.50, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref, isz
- ldr r5, [r4]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- cmp r5, r0
- beq SHORT G_M64659_IG11
- ;; size=14 bbWeight=0.50 PerfScore 2.49
-G_M64659_IG07: ; bbWeight=0.37, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref, isz
+ mov r0, r4
+ ; gcrRegs +[r0]
+ cmp r0, 0
+ beq SHORT G_M64659_IG09
+ ;; size=6 bbWeight=0.50 PerfScore 1.49
+G_M64659_IG07: ; bbWeight=0.25, gcrefRegs=0013 {r0 r1 r4}, byrefRegs=0000 {}, byref, isz
+ ldr r3, [r0]
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ cmp r3, r2
+ beq SHORT G_M64659_IG09
+ ;; size=14 bbWeight=0.25 PerfScore 1.25
+G_M64659_IG08: ; bbWeight=0.12, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r0]
+ movs r0, 0
+ ;; size=2 bbWeight=0.12 PerfScore 0.12
+G_M64659_IG09: ; bbWeight=0.50, gcrefRegs=0013 {r0 r1 r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r0]
+ cmp r0, 0
+ bne SHORT G_M64659_IG14
+ ;; size=4 bbWeight=0.50 PerfScore 1.00
+G_M64659_IG10: ; bbWeight=0.37, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0]
+ mov r0, r1
+ ; gcrRegs +[r0]
+ cmp r0, 0
+ beq SHORT G_M64659_IG13
+ ;; size=6 bbWeight=0.37 PerfScore 1.11
+G_M64659_IG11: ; bbWeight=0.19, gcrefRegs=0013 {r0 r1 r4}, byrefRegs=0000 {}, byref, isz
+ ldr r3, [r0]
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ cmp r3, r2
+ beq SHORT G_M64659_IG13
+ ;; size=14 bbWeight=0.19 PerfScore 0.93
+G_M64659_IG12: ; bbWeight=0.09, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r0]
+ movs r0, 0
+ ;; size=2 bbWeight=0.09 PerfScore 0.09
+G_M64659_IG13: ; bbWeight=0.37, gcrefRegs=0013 {r0 r1 r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r0]
+ cmp r0, 0
+ beq SHORT G_M64659_IG16
+ ;; size=4 bbWeight=0.37 PerfScore 0.74
+G_M64659_IG14: ; bbWeight=0.13, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r0-r1 r4]
+ movs r0, 0
+ ;; size=2 bbWeight=0.13 PerfScore 0.13
+G_M64659_IG15: ; bbWeight=0.13, epilog, nogc, extend
+ pop {r3,r4,r11,pc}
+ ;; size=4 bbWeight=0.13 PerfScore 0.13
+G_M64659_IG16: ; bbWeight=0.37, gcVars=00000000 {}, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[r1 r4]
+ ldr r0, [r4]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r0, r3
+ bne SHORT G_M64659_IG22
+ ;; size=14 bbWeight=0.37 PerfScore 1.85
+G_M64659_IG17: ; bbWeight=0.19, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref, isz
ldr r0, [r1]
movw r3, 0xd1ff
movt r3, 0xd1ff
cmp r0, r3
- beq SHORT G_M64659_IG11
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- cmp r5, r0
- bne SHORT G_M64659_IG15
- ;; size=26 bbWeight=0.37 PerfScore 3.33
-G_M64659_IG08: ; bbWeight=0.19, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref, isz
+ bne SHORT G_M64659_IG24
+ ;; size=14 bbWeight=0.19 PerfScore 0.94
+G_M64659_IG18: ; bbWeight=0.19, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref, isz
+ cmp r4, r1
+ beq SHORT G_M64659_IG19
+ movs r0, 0
+ b SHORT G_M64659_IG20
+ ;; size=8 bbWeight=0.19 PerfScore 0.76
+G_M64659_IG19: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r1 r4]
+ movs r0, 1
+ ;; size=2 bbWeight=0.19 PerfScore 0.19
+G_M64659_IG20: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ uxtb r0, r0
+ ;; size=2 bbWeight=0.19 PerfScore 0.19
+G_M64659_IG21: ; bbWeight=0.19, epilog, nogc, extend
+ pop {r3,r4,r11,pc}
+ ;; size=4 bbWeight=0.19 PerfScore 0.19
+G_M64659_IG22: ; bbWeight=0.18, gcVars=00000000 {}, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[r1 r4]
+ mov r0, r4
+ ; gcrRegs +[r0]
+ ldr r3, [r4]
+ ldr r3, [r3+0x60]
+ ldr r3, [r3+0x0C]
+ ;; size=8 bbWeight=0.18 PerfScore 0.73
+G_M64659_IG23: ; bbWeight=0.18, epilog, nogc, extend
+ add sp, 4
+ pop {r4,r11,lr}
+ bx r3 // System.Type:Equals(System.Type):ubyte:this
+ ; gcr arg pop 0
+ ;; size=8 bbWeight=0.18 PerfScore 0.54
+G_M64659_IG24: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[r0]
mov r0, r1
; gcrRegs +[r0]
ldr r3, [r1]
@@ -75,45 +154,12 @@ G_M64659_IG08: ; bbWeight=0.19, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}
blx r3 // <unknown method>
; gcrRegs -[r1]
; gcr arg pop 0
- cmp r4, r0
- beq SHORT G_M64659_IG09
- movs r6, 0
- b SHORT G_M64659_IG10
- ;; size=18 bbWeight=0.19 PerfScore 1.70
-G_M64659_IG09: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r0 r4]
- movs r6, 1
- ;; size=2 bbWeight=0.19 PerfScore 0.19
-G_M64659_IG10: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M64659_IG13
- ;; size=2 bbWeight=0.19 PerfScore 0.19
-G_M64659_IG11: ; bbWeight=0.37, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movs r0, 0
- ;; size=2 bbWeight=0.37 PerfScore 0.37
-G_M64659_IG12: ; bbWeight=0.37, epilog, nogc, extend
- pop {r3,r4,r5,r6,r11,pc}
- ;; size=4 bbWeight=0.37 PerfScore 0.37
-G_M64659_IG13: ; bbWeight=0.19, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- uxtb r0, r6
- ;; size=2 bbWeight=0.19 PerfScore 0.19
-G_M64659_IG14: ; bbWeight=0.19, epilog, nogc, extend
- pop {r3,r4,r5,r6,r11,pc}
- ;; size=4 bbWeight=0.19 PerfScore 0.19
-G_M64659_IG15: ; bbWeight=0.18, gcVars=00000000 {}, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[r1 r4]
- mov r0, r4
- ; gcrRegs +[r0]
- ldr r3, [r5+0x60]
- ldr r3, [r3+0x0C]
- ;; size=6 bbWeight=0.18 PerfScore 0.54
-G_M64659_IG16: ; bbWeight=0.18, epilog, nogc, extend
- add sp, 4
- pop {r4,r5,r6,r11,lr}
- bx r3 // System.Type:Equals(System.Type):ubyte:this
- ; gcr arg pop 0
- ;; size=8 bbWeight=0.18 PerfScore 0.54
+ mov r1, r0
+ ; gcrRegs +[r1]
+ b SHORT G_M64659_IG18
+ ;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 116, prolog size 10, PerfScore 18.11, instruction count 46, allocated bytes for code 116 (MethodHash=e754036c) for method System.Type:op_Equality(System.Type,System.Type):ubyte (Tier1)
+; Total bytes of code 160, prolog size 10, PerfScore 20.38, instruction count 66, allocated bytes for code 160 (MethodHash=e754036c) for method System.Type:op_Equality(System.Type,System.Type):ubyte (Tier1)
; ============================================================
Unwind Info:
@@ -125,7 +171,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 58 (0x0003a) Actual length = 116 (0x000074)
+ 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)
@@ -145,11 +191,11 @@ Unwind Info:
Epilog Start Index : 3 (0x03)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 78 pop {r3,r4,r5,r6,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 70 pop {r4,r5,r6,r11,lr} ; opsize 32
+ A8 10 pop {r4,r11,lr} ; opsize 32
FF end
FF end
librariestestsnotieredcompilation.run.linux.arm.Release.mch
-28 (-51.85%) : 87825.dasm - System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c11[System.__Canon]:<GetMetadataViewProvider>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
-28 (-51.85%) : 133585.dasm - System.Linq.ParallelQuery1+<>c__2
1[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%) : 48297.dasm - Microsoft.CodeAnalysis.Options.Option`1[System._Canon]:Microsoft.CodeAnalysis.Options.IOption.getDefaultValue():System.Object:this (FullOpts)
@@ -2,60 +2,42 @@
; 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.Option`1[System.__Canon]>
+; V00 this [V00,T00] ( 4, 4 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.Options.Option`1[System.__Canon]>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> r1 single-def "CASTCLASS eval op1"
-; V03 tmp2 [V03,T03] ( 3, 1.25) int -> r2 "fgMakeTemp is creating a new local variable"
-; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> r0 class-hnd "spilling QMark2" <System.__Canon>
-;* V05 tmp4 [V05 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V02 tmp1 [V02 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M2598_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_M2598_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ;; size=6 bbWeight=1 PerfScore 3.00
+G_M2598_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_M2598_IG05
- ;; size=8 bbWeight=1 PerfScore 4.00
-G_M2598_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_M2598_IG05
- ;; size=14 bbWeight=0.25 PerfScore 1.75
-G_M2598_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_M2598_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_M2598_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=bcbdf5d9) for method Microsoft.CodeAnalysis.Options.Option`1[System.__Canon]:Microsoft.CodeAnalysis.Options.IOption.get_DefaultValue():System.Object:this (FullOpts)
+; Total bytes of code 28, prolog size 4, PerfScore 12.00, instruction count 12, allocated bytes for code 28 (MethodHash=bcbdf5d9) for method Microsoft.CodeAnalysis.Options.Option`1[System.__Canon]:Microsoft.CodeAnalysis.Options.IOption.get_DefaultValue():System.Object:this (FullOpts)
; ============================================================
Unwind Info:
@@ -67,11 +49,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%) : 92381.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
+26 (+43.33%) : 93602.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
+30 (+88.24%) : 95719.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%) : 35944.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
+6 (+2.36%) : 13998.dasm - FSharp.Compiler.SyntaxTreeOps:unionBindingAndMembers(Microsoft.FSharp.Collections.FSharpList1[FSharp.Compiler.Syntax.SynBinding],Microsoft.FSharp.Collections.FSharpList
1[FSharp.Compiler.Syntax.SynMemberDefn]):Microsoft.FSharp.Collections.FSharpList`1FSharp.Compiler.Syntax.SynBinding
@@ -8,24 +8,24 @@
; 0 inlinees with PGO data; 3 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 3, 3 ) ref -> r2 class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding]>
-; V01 arg1 [V01,T01] ( 3, 3 ) ref -> r4 class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynMemberDefn]>
+; V00 arg0 [V00,T01] ( 3, 3 ) ref -> r2 class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding]>
+; V01 arg1 [V01,T02] ( 3, 3 ) ref -> r4 class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynMemberDefn]>
; V02 loc0 [V02 ] ( 12, 6.50) struct ( 8) [sp+0x08] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.FSharp.Core.CompilerServices.ListCollector`1[FSharp.Compiler.Syntax.SynBinding]>
;# 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 exact "Inlining Arg" <<unknown class>>
-; V05 tmp2 [V05,T05] ( 3, 2 ) ref -> r0 class-hnd "Inline return value spill temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding]>
-; V06 tmp3 [V06,T02] ( 3, 5 ) ref -> r2 class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
-;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding]>
-; V08 tmp5 [V08,T04] ( 5, 3.25) ref -> r1 class-hnd exact "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding]>
-;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding]>
-; V10 tmp7 [V10,T07] ( 3, 1.50) ref -> r0
-;* V11 tmp8 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding]>
-; V12 tmp9 [V12,T08] ( 3, 1.50) ref -> r0 class-hnd "Inline return value spill temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding]>
-; V13 tmp10 [V13,T06] ( 2, 2 ) ref -> [sp+0x04] class-hnd exact spill-single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
-; V14 tmp11 [V14,T09] ( 2, 1 ) ref -> r0 class-hnd single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding]>
-; V15 tmp12 [V15 ] ( 8, 4.50) ref -> [sp+0x08] do-not-enreg[X] addr-exposed "field V02.Result (fldOffset=0x0)" P-DEP
-; V16 tmp13 [V16 ] ( 6, 3.50) ref -> [sp+0x0C] do-not-enreg[X] addr-exposed "field V02.LastCons (fldOffset=0x4)" P-DEP
-; V17 tmp14 [V17,T03] ( 2, 4 ) ref -> r1 single-def "argument with side effect"
+; V05 tmp2 [V05,T06] ( 3, 2 ) ref -> r0 class-hnd "Inline return value spill temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding]>
+; V06 tmp3 [V06,T03] ( 3, 5 ) ref -> r2 class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
+; V07 tmp4 [V07,T05] ( 4, 3 ) ref -> r1 class-hnd exact single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding]>
+;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding]>
+; V09 tmp6 [V09,T08] ( 3, 1.50) ref -> r0
+;* V10 tmp7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding]>
+; V11 tmp8 [V11,T09] ( 3, 1.50) ref -> r0 class-hnd "Inline return value spill temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding]>
+; V12 tmp9 [V12,T07] ( 2, 2 ) ref -> [sp+0x04] class-hnd exact spill-single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
+; V13 tmp10 [V13,T10] ( 2, 1 ) ref -> r0 class-hnd single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding]>
+; V14 tmp11 [V14 ] ( 8, 4.50) ref -> [sp+0x08] do-not-enreg[X] addr-exposed "field V02.Result (fldOffset=0x0)" P-DEP
+; V15 tmp12 [V15 ] ( 6, 3.50) ref -> [sp+0x0C] do-not-enreg[X] addr-exposed "field V02.LastCons (fldOffset=0x4)" P-DEP
+; V16 tmp13 [V16,T04] ( 2, 4 ) ref -> r1 single-def "argument with side effect"
+; V17 rat0 [V17,T00] ( 5, 7.50) ref -> r1 "replacement local"
;
; Lcl frame size = 20
@@ -55,7 +55,7 @@ G_M4830_IG02: ; bbWeight=1, gcrefRegs=0014 {r2 r4}, byrefRegs=0000 {}, by
ldr r1, [r1]
and r1, r1, 1
cmp r1, 1
- bne SHORT G_M4830_IG13
+ bne SHORT G_M4830_IG15
;; size=40 bbWeight=1 PerfScore 13.00
G_M4830_IG03: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
movw r1, 0xd1ff
@@ -76,26 +76,35 @@ G_M4830_IG03: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
mov r1, r2
; gcrRegs +[r1]
cmp r1, 0
- beq SHORT G_M4830_IG09
+ beq SHORT G_M4830_IG06
;; size=40 bbWeight=1 PerfScore 14.00
-G_M4830_IG04: ; bbWeight=0.25, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz
+G_M4830_IG04: ; bbWeight=0.50, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
ldr r0, [r1]
movw r3, 0xd1ff
movt r3, 0xd1ff
cmp r0, r3
- bne SHORT G_M4830_IG09
- ;; size=14 bbWeight=0.25 PerfScore 1.25
-G_M4830_IG05: ; bbWeight=0.50, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
+ beq SHORT G_M4830_IG06
+ ;; size=14 bbWeight=0.50 PerfScore 2.50
+G_M4830_IG05: ; bbWeight=0.25, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r1]
+ movs r1, 0
+ ;; size=2 bbWeight=0.25 PerfScore 0.25
+G_M4830_IG06: ; bbWeight=1, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r1]
+ cmp r1, 0
+ beq SHORT G_M4830_IG11
+ ;; size=4 bbWeight=1 PerfScore 2.00
+G_M4830_IG07: ; bbWeight=0.50, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r2]
ldr r0, [sp+0x08]
; gcrRegs +[r0]
cmp r0, 0
- bne SHORT G_M4830_IG06
+ bne SHORT G_M4830_IG08
mov r0, r1
- b SHORT G_M4830_IG07
+ b SHORT G_M4830_IG09
;; size=10 bbWeight=0.50 PerfScore 2.50
-G_M4830_IG06: ; bbWeight=0.50, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
+G_M4830_IG08: ; bbWeight=0.50, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
ldr r0, [sp+0x0C]
; gcrRegs +[r0]
@@ -110,15 +119,15 @@ G_M4830_IG06: ; bbWeight=0.50, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, by
ldr r0, [sp+0x08]
; gcrRegs +[r0]
;; size=16 bbWeight=0.50 PerfScore 3.00
-G_M4830_IG07: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
+G_M4830_IG09: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
movs r2, 0
- str r2, [sp+0x08] // [V15 tmp12]
+ str r2, [sp+0x08] // [V14 tmp11]
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M4830_IG08: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
- str r2, [sp+0x0C] // [V16 tmp13]
- b SHORT G_M4830_IG12
+G_M4830_IG10: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ str r2, [sp+0x0C] // [V15 tmp12]
+ b SHORT G_M4830_IG14
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M4830_IG09: ; bbWeight=0.50, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref, isz
+G_M4830_IG11: ; bbWeight=0.50, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0] +[r2]
add r0, sp, 8 // [V02 loc0]
movw r1, 0xd1ff
@@ -128,50 +137,50 @@ G_M4830_IG09: ; bbWeight=0.50, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, by
ldr r3, [r3]
blx r3 // <unknown method>
; gcrRegs -[r2]
- ldr r1, [sp+0x08] // [V15 tmp12]
+ ldr r1, [sp+0x08] // [V14 tmp11]
; gcrRegs +[r1]
cmp r1, 0
- bne SHORT G_M4830_IG10
+ bne SHORT G_M4830_IG12
movw r1, 0xd1ff
; gcrRegs -[r1]
movt r1, 0xd1ff
ldr r0, [r1]
; gcrRegs +[r0]
- b SHORT G_M4830_IG12
+ b SHORT G_M4830_IG14
;; size=40 bbWeight=0.50 PerfScore 7.00
-G_M4830_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M4830_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
- ldr r1, [sp+0x0C] // [V16 tmp13]
+ ldr r1, [sp+0x0C] // [V15 tmp12]
; gcrRegs +[r1]
- str r1, [sp+0x04] // [V13 tmp10]
- ; GC ptr vars +{V13}
+ str r1, [sp+0x04] // [V12 tmp9]
+ ; GC ptr vars +{V12}
movw r0, 0xd1ff
movt r0, 0xd1ff
ldr r1, [r0]
- ldr r0, [sp+0x04] // [V13 tmp10]
+ ldr r0, [sp+0x04] // [V12 tmp9]
; gcrRegs +[r0]
adds r0, 8
; gcrRegs -[r0]
; byrRegs +[r0]
movw r12, 0xd1ff
movt r12, 0xd1ff
- ; GC ptr vars -{V13}
+ ; GC ptr vars -{V12}
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0]
- ldr r0, [sp+0x08] // [V15 tmp12]
+ ldr r0, [sp+0x08] // [V14 tmp11]
; gcrRegs +[r0]
movs r1, 0
- str r1, [sp+0x08] // [V15 tmp12]
+ str r1, [sp+0x08] // [V14 tmp11]
;; size=34 bbWeight=0.50 PerfScore 6.50
-G_M4830_IG11: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
- str r1, [sp+0x0C] // [V16 tmp13]
+G_M4830_IG13: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
+ str r1, [sp+0x0C] // [V15 tmp12]
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M4830_IG12: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M4830_IG14: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
add sp, 20
pop {r4,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00
-G_M4830_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M4830_IG15: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0] +[r4]
movw r0, 0xd1ff
movt r0, 0xd1ff
@@ -182,7 +191,7 @@ G_M4830_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byre
b SHORT G_M4830_IG03
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 254, prolog size 16, PerfScore 59.75, instruction count 92, allocated bytes for code 254 (MethodHash=e3d9ed21) for method FSharp.Compiler.SyntaxTreeOps:unionBindingAndMembers(Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynMemberDefn]):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding] (FullOpts)
+; Total bytes of code 260, prolog size 16, PerfScore 63.25, instruction count 95, allocated bytes for code 260 (MethodHash=e3d9ed21) for method FSharp.Compiler.SyntaxTreeOps:unionBindingAndMembers(Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynMemberDefn]):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding] (FullOpts)
; ============================================================
Unwind Info:
@@ -194,7 +203,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 127 (0x0007f) Actual length = 254 (0x0000fe)
+ Function Length : 130 (0x00082) Actual length = 260 (0x000104)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+10 (+2.60%) : 36091.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]
...
+36 (+2.64%) : 20912.dasm - Microsoft.CodeAnalysis.CSharp.CSharpParseOptions:.ctor(int,ubyte,int,System.Collections.Immutable.ImmutableArray1[System.String],System.Collections.Generic.IReadOnlyDictionary
2[System.String,System.String]):this (FullOpts)
@@ -13,122 +13,122 @@
; V02 arg2 [V02,T16] ( 3, 3 ) ubyte -> r2 single-def
; V03 arg3 [V03,T17] ( 3, 3 ) int -> r3 single-def
; V04 arg4 [V04 ] ( 1, 1 ) struct ( 4) [sp+0x48] single-def <System.Collections.Immutable.ImmutableArray`1[System.String]>
-; V05 arg5 [V05,T32] ( 4, 2.50) ref -> r6 class-hnd single-def <System.Collections.Generic.IReadOnlyDictionary`2[System.String,System.String]>
+; V05 arg5 [V05,T40] ( 3, 2 ) ref -> r6 class-hnd single-def <System.Collections.Generic.IReadOnlyDictionary`2[System.String,System.String]>
; V06 OutArgs [V06 ] ( 1, 1 ) struct ( 8) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T13] ( 3, 6 ) ref -> r2 class-hnd exact single-def "Single-def Box Helper" <System.Collections.Immutable.ImmutableArray`1[System.String]>
;* V08 tmp2 [V08 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
-;* V09 tmp3 [V09,T72] ( 0, 0 ) ref -> zero-ref single-def
-;* V10 tmp4 [V10,T61] ( 0, 0 ) ref -> zero-ref
-; V11 tmp5 [V11,T40] ( 3, 2 ) ref -> r1
+;* V09 tmp3 [V09,T73] ( 0, 0 ) ref -> zero-ref single-def
+;* V10 tmp4 [V10,T62] ( 0, 0 ) ref -> zero-ref
+; V11 tmp5 [V11,T41] ( 3, 2 ) ref -> r1
;* V12 tmp6 [V12 ] ( 0, 0 ) ref -> zero-ref single-def
-; V13 tmp7 [V13,T22] ( 4, 3.50) ref -> r1
+; V13 tmp7 [V13,T24] ( 4, 3.50) ref -> r1
; V14 tmp8 [V14,T21] ( 2, 4 ) int -> r0 "Inlining Arg"
;* V15 tmp9 [V15 ] ( 0, 0 ) struct ( 4) zero-ref single-def "Inline return value spill temp" <System.Collections.Immutable.ImmutableArray`1[System.String]>
; V16 tmp10 [V16,T20] ( 2, 4 ) ref -> r2 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[System.String]>
;* V17 tmp11 [V17 ] ( 0, 0 ) struct ( 4) zero-ref "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[System.String]>
-; V18 tmp12 [V18,T48] ( 3, 1.50) ref -> registers class-hnd "Inline return value spill temp" <<unknown class>>
-;* V19 tmp13 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-; V20 tmp14 [V20,T23] ( 6, 3 ) ref -> r6 class-hnd exact "Inline stloc first use temp" <<unknown class>>
-; V21 tmp15 [V21,T33] ( 4, 2 ) ref -> r6 class-hnd "Inline return value spill temp" <<unknown class>>
-; V22 tmp16 [V22,T25] ( 3, 3 ) ref -> r1 class-hnd "Inlining Arg" <<unknown class>>
-; V23 tmp17 [V23,T14] ( 5, 5 ) ref -> r2 class-hnd "Inlining Arg" <<unknown class>>
-; V24 tmp18 [V24,T62] ( 2, 1 ) ref -> r8 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
-; V25 tmp19 [V25,T00] ( 12, 12 ) ref -> r9 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-;* V26 tmp20 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-;* V27 tmp21 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
-; V28 tmp22 [V28,T07] ( 6, 6 ) ref -> r5 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V18 tmp12 [V18,T49] ( 3, 1.50) ref -> registers class-hnd "Inline return value spill temp" <<unknown class>>
+; V19 tmp13 [V19,T23] ( 7, 3.50) ref -> r5 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+; V20 tmp14 [V20,T33] ( 4, 2 ) ref -> r5 class-hnd "Inline return value spill temp" <<unknown class>>
+; V21 tmp15 [V21,T26] ( 3, 3 ) ref -> r1 class-hnd "Inlining Arg" <<unknown class>>
+; V22 tmp16 [V22,T14] ( 5, 5 ) ref -> r2 class-hnd "Inlining Arg" <<unknown class>>
+; V23 tmp17 [V23,T63] ( 2, 1 ) ref -> r7 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+; V24 tmp18 [V24,T00] ( 12, 12 ) ref -> r9 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;* V25 tmp19 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+;* V26 tmp20 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+; V27 tmp21 [V27,T07] ( 6, 6 ) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;* V28 tmp22 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]>
;* V29 tmp23 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]>
-;* V30 tmp24 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]>
-; V31 tmp25 [V31,T49] ( 3, 1.50) ref -> r8 class-hnd "Inline return value spill temp" <<unknown class>>
-; V32 tmp26 [V32,T41] ( 2, 2 ) ref -> r0 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]>
-; V33 tmp27 [V33,T18] ( 4, 4 ) ref -> r9 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]>
-; V34 tmp28 [V34,T44] ( 2, 2 ) int -> r6 "Inlining Arg"
-;* V35 tmp29 [V35 ] ( 0, 0 ) ref -> zero-ref single-def
-; V36 tmp30 [V36,T63] ( 2, 1 ) ref -> r1
-;* V37 tmp31 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
-;* V38 tmp32 [V38 ] ( 0, 0 ) ref -> zero-ref single-def
-; V39 tmp33 [V39,T34] ( 4, 2 ) ref -> r1
-;* V40 tmp34 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
-;* V41 tmp35 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <<unknown class>>
-;* V42 tmp36 [V42 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]>
-; V43 tmp37 [V43 ] ( 3, 1.50) struct ( 8) [sp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.String,System.String]>
-;* V44 tmp38 [V44 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]>
-; V45 tmp39 [V45,T08] ( 6, 6 ) ref -> r6 class-hnd exact single-def "impAppendStmt" <<unknown class>>
-;* V46 tmp40 [V46 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V47 tmp41 [V47,T29] ( 5, 2.50) ref -> r6 class-hnd "Inline return value spill temp" <<unknown class>>
-; V48 tmp42 [V48,T45] ( 2, 2 ) int -> r10 "Inlining Arg"
-; V49 tmp43 [V49,T04] ( 6, 6 ) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V50 tmp44 [V50,T50] ( 3, 1.50) ref -> r0 class-hnd "Inline return value spill temp" <<unknown class>>
-; V51 tmp45 [V51,T26] ( 3, 3 ) ref -> r1 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]>
-;* V52 tmp46 [V52,T74] ( 0, 0 ) ref -> zero-ref single-def
-; V53 tmp47 [V53,T64] ( 2, 1 ) ref -> r1 single-def
-;* V54 tmp48 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
-; V55 tmp49 [V55,T51] ( 3, 1.50) ref -> r6 class-hnd "Inline return value spill temp" <<unknown class>>
-; V56 tmp50 [V56,T30] ( 5, 2.50) ref -> r0 class-hnd "Inline return value spill temp" <<unknown class>>
-; V57 tmp51 [V57,T27] ( 3, 3 ) ref -> r1 class-hnd "Inlining Arg" <<unknown class>>
-; V58 tmp52 [V58,T15] ( 5, 5 ) ref -> r2 class-hnd "Inlining Arg" <<unknown class>>
-; V59 tmp53 [V59,T09] ( 6, 6 ) ref -> r8 class-hnd exact single-def "Inlining Arg" <<unknown class>>
-; V60 tmp54 [V60,T65] ( 2, 1 ) ref -> r9 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
-; V61 tmp55 [V61,T01] ( 12, 12 ) ref -> r10 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-;* V62 tmp56 [V62 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-;* V63 tmp57 [V63 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
-; V64 tmp58 [V64,T10] ( 6, 6 ) ref -> r5 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V30 tmp24 [V30,T50] ( 3, 1.50) ref -> r7 class-hnd "Inline return value spill temp" <<unknown class>>
+; V31 tmp25 [V31,T42] ( 2, 2 ) ref -> r0 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]>
+; V32 tmp26 [V32,T18] ( 4, 4 ) ref -> r9 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]>
+; V33 tmp27 [V33,T45] ( 2, 2 ) int -> r5 "Inlining Arg"
+;* V34 tmp28 [V34 ] ( 0, 0 ) ref -> zero-ref single-def
+; V35 tmp29 [V35,T64] ( 2, 1 ) ref -> r1
+;* V36 tmp30 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
+;* V37 tmp31 [V37 ] ( 0, 0 ) ref -> zero-ref single-def
+; V38 tmp32 [V38,T34] ( 4, 2 ) ref -> r1
+;* V39 tmp33 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
+;* V40 tmp34 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <<unknown class>>
+;* V41 tmp35 [V41 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]>
+; V42 tmp36 [V42 ] ( 3, 1.50) struct ( 8) [sp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.String,System.String]>
+;* V43 tmp37 [V43 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]>
+; V44 tmp38 [V44,T08] ( 6, 6 ) ref -> r5 class-hnd exact single-def "impAppendStmt" <<unknown class>>
+;* V45 tmp39 [V45 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
+; V46 tmp40 [V46,T30] ( 5, 2.50) ref -> r5 class-hnd "Inline return value spill temp" <<unknown class>>
+; V47 tmp41 [V47,T46] ( 2, 2 ) int -> r10 "Inlining Arg"
+; V48 tmp42 [V48,T04] ( 6, 6 ) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V49 tmp43 [V49,T51] ( 3, 1.50) ref -> r0 class-hnd "Inline return value spill temp" <<unknown class>>
+; V50 tmp44 [V50,T27] ( 3, 3 ) ref -> r1 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]>
+;* V51 tmp45 [V51,T75] ( 0, 0 ) ref -> zero-ref single-def
+; V52 tmp46 [V52,T65] ( 2, 1 ) ref -> r1 single-def
+;* V53 tmp47 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
+; V54 tmp48 [V54,T52] ( 3, 1.50) ref -> r5 class-hnd "Inline return value spill temp" <<unknown class>>
+; V55 tmp49 [V55,T31] ( 5, 2.50) ref -> r0 class-hnd "Inline return value spill temp" <<unknown class>>
+; V56 tmp50 [V56,T28] ( 3, 3 ) ref -> r1 class-hnd "Inlining Arg" <<unknown class>>
+; V57 tmp51 [V57,T15] ( 5, 5 ) ref -> r2 class-hnd "Inlining Arg" <<unknown class>>
+; V58 tmp52 [V58,T09] ( 6, 6 ) ref -> r5 class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V59 tmp53 [V59,T66] ( 2, 1 ) ref -> r8 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+; V60 tmp54 [V60,T01] ( 12, 12 ) ref -> r10 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;* V61 tmp55 [V61 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+;* V62 tmp56 [V62 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+; V63 tmp57 [V63,T10] ( 6, 6 ) ref -> r9 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;* V64 tmp58 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]>
;* V65 tmp59 [V65 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]>
-;* V66 tmp60 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]>
-; V67 tmp61 [V67,T52] ( 3, 1.50) ref -> r9 class-hnd "Inline return value spill temp" <<unknown class>>
-; V68 tmp62 [V68,T42] ( 2, 2 ) ref -> r0 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]>
-; V69 tmp63 [V69,T19] ( 4, 4 ) ref -> r10 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]>
-; V70 tmp64 [V70,T46] ( 2, 2 ) int -> r8 "Inlining Arg"
-;* V71 tmp65 [V71 ] ( 0, 0 ) ref -> zero-ref single-def
-; V72 tmp66 [V72,T66] ( 2, 1 ) ref -> r1
-;* V73 tmp67 [V73 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
-;* V74 tmp68 [V74 ] ( 0, 0 ) ref -> zero-ref single-def
-; V75 tmp69 [V75,T35] ( 4, 2 ) ref -> r1
-;* V76 tmp70 [V76 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
-;* V77 tmp71 [V77 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <<unknown class>>
-;* V78 tmp72 [V78 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]>
-; V79 tmp73 [V79 ] ( 3, 1.50) struct ( 8) [sp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.String,System.String]>
-;* V80 tmp74 [V80 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]>
-; V81 tmp75 [V81,T11] ( 6, 6 ) ref -> r8 class-hnd exact single-def "impAppendStmt" <<unknown class>>
-;* V82 tmp76 [V82 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V83 tmp77 [V83,T31] ( 5, 2.50) ref -> r0 class-hnd "Inline return value spill temp" <<unknown class>>
-; V84 tmp78 [V84,T47] ( 2, 2 ) int -> [sp+0x0C] spill-single-def "Inlining Arg"
-; V85 tmp79 [V85,T05] ( 6, 6 ) ref -> r9 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V86 tmp80 [V86,T53] ( 3, 1.50) ref -> r0 class-hnd "Inline return value spill temp" <<unknown class>>
-; V87 tmp81 [V87,T28] ( 3, 3 ) ref -> r1 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]>
-;* V88 tmp82 [V88,T75] ( 0, 0 ) ref -> zero-ref single-def
-; V89 tmp83 [V89,T67] ( 2, 1 ) ref -> r1 single-def
-;* V90 tmp84 [V90 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
-; V91 tmp85 [V91,T54] ( 3, 1.50) ref -> r0 class-hnd "Inline return value spill temp" <<unknown class>>
-; V92 tmp86 [V92,T73] ( 1, 1 ) ref -> [sp+0x48] do-not-enreg[] single-def "field V04.array (fldOffset=0x0)" P-DEP
-;* V93 tmp87 [V93 ] ( 0, 0 ) ref -> zero-ref "field V08.array (fldOffset=0x0)" P-INDEP
-; V94 tmp88 [V94,T43] ( 2, 2 ) ref -> r1 single-def "field V15.array (fldOffset=0x0)" P-INDEP
-;* V95 tmp89 [V95 ] ( 0, 0 ) ref -> zero-ref "field V17.array (fldOffset=0x0)" P-INDEP
-;* V96 tmp90 [V96 ] ( 0, 0 ) ref -> zero-ref "field V42._root (fldOffset=0x0)" P-INDEP
-;* V97 tmp91 [V97 ] ( 0, 0 ) ref -> zero-ref "field V42._comparers (fldOffset=0x4)" P-INDEP
-; V98 tmp92 [V98 ] ( 2, 1 ) ref -> [sp+0x18] do-not-enreg[X] addr-exposed "field V43._root (fldOffset=0x0)" P-DEP
-; V99 tmp93 [V99 ] ( 2, 1 ) int -> [sp+0x1C] do-not-enreg[X] addr-exposed "field V43._countAdjustment (fldOffset=0x4)" P-DEP
-; V100 tmp94 [V100,T68] ( 2, 1 ) ref -> r3 single-def "field V44._root (fldOffset=0x0)" P-INDEP
-; V101 tmp95 [V101,T69] ( 2, 1 ) ref -> r0 single-def "field V44._comparers (fldOffset=0x4)" P-INDEP
-;* V102 tmp96 [V102 ] ( 0, 0 ) ref -> zero-ref "field V78._root (fldOffset=0x0)" P-INDEP
-;* V103 tmp97 [V103 ] ( 0, 0 ) ref -> zero-ref "field V78._comparers (fldOffset=0x4)" P-INDEP
-; V104 tmp98 [V104 ] ( 2, 1 ) ref -> [sp+0x10] do-not-enreg[X] addr-exposed "field V79._root (fldOffset=0x0)" P-DEP
-; V105 tmp99 [V105 ] ( 2, 1 ) int -> [sp+0x14] do-not-enreg[X] addr-exposed "field V79._countAdjustment (fldOffset=0x4)" P-DEP
-; V106 tmp100 [V106,T70] ( 2, 1 ) ref -> r3 single-def "field V80._root (fldOffset=0x0)" P-INDEP
-; V107 tmp101 [V107,T71] ( 2, 1 ) ref -> r0 single-def "field V80._comparers (fldOffset=0x4)" P-INDEP
-; V108 cse0 [V108,T55] ( 3, 1.50) ref -> r3 "CSE - conservative"
-; V109 cse1 [V109,T56] ( 3, 1.50) ref -> r3 "CSE - conservative"
-; V110 cse2 [V110,T24] ( 6, 3 ) ref -> r2 multi-def "CSE - moderate"
-; V111 cse3 [V111,T57] ( 3, 1.50) ref -> r1 "CSE - conservative"
-; V112 cse4 [V112,T58] ( 3, 1.50) ref -> r1 "CSE - conservative"
-; V113 cse5 [V113,T59] ( 3, 1.50) ref -> r1 "CSE - conservative"
-; V114 cse6 [V114,T60] ( 3, 1.50) ref -> r1 "CSE - conservative"
-; V115 cse7 [V115,T36] ( 4, 2 ) ref -> r0 "CSE - conservative"
-; V116 cse8 [V116,T38] ( 4, 2 ) int -> r8 "CSE - conservative"
-; V117 cse9 [V117,T37] ( 4, 2 ) ref -> r0 "CSE - conservative"
-; V118 cse10 [V118,T39] ( 4, 2 ) int -> r9 "CSE - conservative"
-; V119 cse11 [V119,T06] ( 12, 6 ) int -> r7 multi-def "CSE - aggressive"
-; V120 cse12 [V120,T03] ( 14, 7 ) int -> r5 "CSE - moderate"
+; V66 tmp60 [V66,T53] ( 3, 1.50) ref -> r8 class-hnd "Inline return value spill temp" <<unknown class>>
+; V67 tmp61 [V67,T43] ( 2, 2 ) ref -> r0 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]>
+; V68 tmp62 [V68,T19] ( 4, 4 ) ref -> r10 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]>
+; V69 tmp63 [V69,T47] ( 2, 2 ) int -> r5 "Inlining Arg"
+;* V70 tmp64 [V70 ] ( 0, 0 ) ref -> zero-ref single-def
+; V71 tmp65 [V71,T67] ( 2, 1 ) ref -> r1
+;* V72 tmp66 [V72 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
+;* V73 tmp67 [V73 ] ( 0, 0 ) ref -> zero-ref single-def
+; V74 tmp68 [V74,T35] ( 4, 2 ) ref -> r1
+;* V75 tmp69 [V75 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
+;* V76 tmp70 [V76 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <<unknown class>>
+;* V77 tmp71 [V77 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]>
+; V78 tmp72 [V78 ] ( 3, 1.50) struct ( 8) [sp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.String,System.String]>
+;* V79 tmp73 [V79 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]>
+; V80 tmp74 [V80,T11] ( 6, 6 ) ref -> r5 class-hnd exact single-def "impAppendStmt" <<unknown class>>
+;* V81 tmp75 [V81 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
+; V82 tmp76 [V82,T32] ( 5, 2.50) ref -> r0 class-hnd "Inline return value spill temp" <<unknown class>>
+; V83 tmp77 [V83,T48] ( 2, 2 ) int -> [sp+0x0C] spill-single-def "Inlining Arg"
+; V84 tmp78 [V84,T05] ( 6, 6 ) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V85 tmp79 [V85,T54] ( 3, 1.50) ref -> r0 class-hnd "Inline return value spill temp" <<unknown class>>
+; V86 tmp80 [V86,T29] ( 3, 3 ) ref -> r1 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]>
+;* V87 tmp81 [V87,T76] ( 0, 0 ) ref -> zero-ref single-def
+; V88 tmp82 [V88,T68] ( 2, 1 ) ref -> r1 single-def
+;* V89 tmp83 [V89 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
+; V90 tmp84 [V90,T55] ( 3, 1.50) ref -> r0 class-hnd "Inline return value spill temp" <<unknown class>>
+; V91 tmp85 [V91,T74] ( 1, 1 ) ref -> [sp+0x48] do-not-enreg[] single-def "field V04.array (fldOffset=0x0)" P-DEP
+;* V92 tmp86 [V92 ] ( 0, 0 ) ref -> zero-ref "field V08.array (fldOffset=0x0)" P-INDEP
+; V93 tmp87 [V93,T44] ( 2, 2 ) ref -> r1 single-def "field V15.array (fldOffset=0x0)" P-INDEP
+;* V94 tmp88 [V94 ] ( 0, 0 ) ref -> zero-ref "field V17.array (fldOffset=0x0)" P-INDEP
+;* V95 tmp89 [V95 ] ( 0, 0 ) ref -> zero-ref "field V41._root (fldOffset=0x0)" P-INDEP
+;* V96 tmp90 [V96 ] ( 0, 0 ) ref -> zero-ref "field V41._comparers (fldOffset=0x4)" P-INDEP
+; V97 tmp91 [V97 ] ( 2, 1 ) ref -> [sp+0x18] do-not-enreg[X] addr-exposed "field V42._root (fldOffset=0x0)" P-DEP
+; V98 tmp92 [V98 ] ( 2, 1 ) int -> [sp+0x1C] do-not-enreg[X] addr-exposed "field V42._countAdjustment (fldOffset=0x4)" P-DEP
+; V99 tmp93 [V99,T69] ( 2, 1 ) ref -> r3 single-def "field V43._root (fldOffset=0x0)" P-INDEP
+; V100 tmp94 [V100,T70] ( 2, 1 ) ref -> r0 single-def "field V43._comparers (fldOffset=0x4)" P-INDEP
+;* V101 tmp95 [V101 ] ( 0, 0 ) ref -> zero-ref "field V77._root (fldOffset=0x0)" P-INDEP
+;* V102 tmp96 [V102 ] ( 0, 0 ) ref -> zero-ref "field V77._comparers (fldOffset=0x4)" P-INDEP
+; V103 tmp97 [V103 ] ( 2, 1 ) ref -> [sp+0x10] do-not-enreg[X] addr-exposed "field V78._root (fldOffset=0x0)" P-DEP
+; V104 tmp98 [V104 ] ( 2, 1 ) int -> [sp+0x14] do-not-enreg[X] addr-exposed "field V78._countAdjustment (fldOffset=0x4)" P-DEP
+; V105 tmp99 [V105,T71] ( 2, 1 ) ref -> r3 single-def "field V79._root (fldOffset=0x0)" P-INDEP
+; V106 tmp100 [V106,T72] ( 2, 1 ) ref -> r0 single-def "field V79._comparers (fldOffset=0x4)" P-INDEP
+; V107 cse0 [V107,T56] ( 3, 1.50) ref -> r3 "CSE - conservative"
+; V108 cse1 [V108,T57] ( 3, 1.50) ref -> r3 "CSE - conservative"
+; V109 cse2 [V109,T25] ( 6, 3 ) ref -> r2 multi-def "CSE - moderate"
+; V110 cse3 [V110,T58] ( 3, 1.50) ref -> r1 "CSE - conservative"
+; V111 cse4 [V111,T59] ( 3, 1.50) ref -> r1 "CSE - conservative"
+; V112 cse5 [V112,T60] ( 3, 1.50) ref -> r1 "CSE - conservative"
+; V113 cse6 [V113,T61] ( 3, 1.50) ref -> r1 "CSE - conservative"
+; V114 cse7 [V114,T36] ( 4, 2 ) ref -> r0 "CSE - conservative"
+; V115 cse8 [V115,T38] ( 4, 2 ) int -> r7 "CSE - conservative"
+; V116 cse9 [V116,T37] ( 4, 2 ) ref -> r0 "CSE - conservative"
+; V117 cse10 [V117,T39] ( 4, 2 ) int -> r8 "CSE - conservative"
+; V118 cse11 [V118,T06] ( 12, 6 ) int -> registers multi-def "CSE - aggressive"
+; V119 cse12 [V119,T03] ( 16, 8 ) int -> registers multi-def "CSE - aggressive"
+; V120 rat0 [V120,T22] ( 5, 3.75) ref -> r5 "replacement local"
;
; Lcl frame size = 36
@@ -137,10 +137,10 @@ G_M31688_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
sub sp, 36
add r11, sp, 64
movs r4, 0
- str r4, [sp+0x18] // [V43 tmp37]
- str r4, [sp+0x1C] // [V43 tmp37+0x04]
- str r4, [sp+0x10] // [V79 tmp73]
- str r4, [sp+0x14] // [V79 tmp73+0x04]
+ str r4, [sp+0x18] // [V42 tmp36]
+ str r4, [sp+0x1C] // [V42 tmp36+0x04]
+ str r4, [sp+0x10] // [V78 tmp72]
+ str r4, [sp+0x14] // [V78 tmp72+0x04]
mov r4, r0
; gcrRegs +[r4]
mov r5, r1
@@ -207,37 +207,53 @@ G_M31688_IG02: ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, b
G_M31688_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r6]
movs r1, 0
- b SHORT G_M31688_IG29
+ b SHORT G_M31688_IG32
...
Details
Improvements/regressions per collection
Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
benchmarks.run.linux.arm.checked.mch |
127 |
81 |
45 |
1 |
-1,398 |
+1,320 |
benchmarks.run_pgo.linux.arm.checked.mch |
2,510 |
2,111 |
346 |
53 |
-32,866 |
+7,288 |
benchmarks.run_tiered.linux.arm.checked.mch |
74 |
58 |
15 |
1 |
-1,014 |
+422 |
coreclr_tests.run.linux.arm.checked.mch |
648 |
263 |
289 |
96 |
-4,012 |
+148,338 |
libraries.crossgen2.linux.arm.checked.mch |
684 |
678 |
5 |
1 |
-16,206 |
+12 |
libraries.pmi.linux.arm.checked.mch |
548 |
482 |
43 |
23 |
-11,166 |
+1,938 |
libraries_tests.run.linux.arm.Release.mch |
5,401 |
1,621 |
3,476 |
304 |
-25,542 |
+71,786 |
librariestestsnotieredcompilation.run.linux.arm.Release.mch |
775 |
611 |
147 |
17 |
-14,936 |
+8,974 |
realworld.run.linux.arm.checked.mch |
139 |
124 |
10 |
5 |
-2,478 |
+160 |
|
10,906 |
6,029 |
4,376 |
501 |
-109,618 |
+240,238 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
benchmarks.run.linux.arm.checked.mch |
41,772 |
5,344 |
36,428 |
1,203 (2.55%) |
5,395 (11.44%) |
benchmarks.run_pgo.linux.arm.checked.mch |
141,946 |
56,729 |
85,217 |
3,201 (1.97%) |
20,768 (12.76%) |
benchmarks.run_tiered.linux.arm.checked.mch |
75,781 |
43,607 |
32,174 |
1,086 (1.34%) |
5,404 (6.66%) |
coreclr_tests.run.linux.arm.checked.mch |
462,307 |
259,195 |
203,112 |
7,171 (1.50%) |
16,856 (3.52%) |
libraries.crossgen2.linux.arm.checked.mch |
188,186 |
14 |
188,172 |
0 (0.00%) |
5 (0.00%) |
libraries.pmi.linux.arm.checked.mch |
245,328 |
6 |
245,322 |
7,786 (2.78%) |
34,818 (12.43%) |
libraries_tests.run.linux.arm.Release.mch |
672,736 |
442,672 |
230,064 |
16,195 (2.23%) |
53,689 (7.39%) |
librariestestsnotieredcompilation.run.linux.arm.Release.mch |
240,780 |
21,604 |
219,176 |
33,224 (10.79%) |
67,077 (21.79%) |
realworld.run.linux.arm.checked.mch |
31,973 |
157 |
31,816 |
1,408 (3.72%) |
5,842 (15.45%) |
|
2,100,809 |
829,328 |
1,271,481 |
71,274 (3.08%) |
209,854 (9.08%) |
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: 9047232 (overridden on cmd)
Total bytes of diff: 9047154 (overridden on cmd)
Total bytes of delta: -78 (-0.00 % of base)
diff is a regression.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
202 : 8113.dasm (8.84 % of base)
110 : 33424.dasm (8.90 % of base)
110 : 23939.dasm (40.44 % of base)
56 : 45917.dasm (7.69 % of base)
54 : 45308.dasm (8.21 % of base)
46 : 44707.dasm (9.06 % of base)
46 : 40486.dasm (13.53 % of base)
44 : 42566.dasm (10.14 % of base)
44 : 8903.dasm (13.84 % of base)
42 : 27818.dasm (12.50 % of base)
42 : 38070.dasm (15.56 % of base)
42 : 13067.dasm (14.48 % of base)
42 : 39957.dasm (13.38 % of base)
30 : 41613.dasm (6.38 % of base)
18 : 37356.dasm (1.10 % of base)
18 : 9880.dasm (1.10 % of base)
18 : 32415.dasm (1.10 % of base)
18 : 33988.dasm (1.10 % of base)
18 : 35792.dasm (1.10 % of base)
18 : 40732.dasm (1.10 % of base)
Top file improvements (bytes):
-56 : 7579.dasm (-9.86 % of base)
-46 : 3065.dasm (-8.24 % of base)
-36 : 3263.dasm (-10.59 % of base)
-32 : 22021.dasm (-36.36 % of base)
-32 : 437.dasm (-41.03 % of base)
-30 : 776.dasm (-20.55 % of base)
-28 : 15183.dasm (-40.00 % of base)
-28 : 8646.dasm (-8.81 % of base)
-28 : 27688.dasm (-13.33 % of base)
-28 : 24289.dasm (-5.36 % of base)
-28 : 4416.dasm (-51.85 % of base)
-28 : 8616.dasm (-4.02 % of base)
-26 : 15899.dasm (-8.39 % of base)
-26 : 25509.dasm (-12.26 % of base)
-26 : 28110.dasm (-13.54 % of base)
-24 : 26699.dasm (-6.63 % of base)
-24 : 979.dasm (-31.58 % of base)
-24 : 10319.dasm (-26.67 % of base)
-24 : 27973.dasm (-13.64 % of base)
-22 : 5379.dasm (-47.83 % of base)
61 total files with Code Size differences (35 improved, 26 regressed), 1 unchanged.
Top method regressions (bytes):
202 (8.84 % of base) : 8113.dasm - System.Collections.Perf_SubstringFrozenDictionary:Setup():this (FullOpts)
110 (8.90 % of base) : 33424.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderSimpleStructWithProperties:Read2_SimpleStructWithProperties(ubyte):MicroBenchmarks.Serializers.SimpleStructWithProperties:this (FullOpts)
110 (40.44 % of base) : 23939.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[Interop.StructureToPtr+NonBlittableStruct](int):Interop.StructureToPtr+NonBlittableStruct (FullOpts)
56 (7.69 % of base) : 45917.dasm - System.Tests.Perf_Array:SetupArrayCopy3D():this (FullOpts)
54 (8.21 % of base) : 45308.dasm - System.Tests.Perf_Array:SetupArrayCopy2D():this (FullOpts)
46 (13.53 % of base) : 40486.dasm - System.Tests.Perf_Array:SetupArrayAssign3D():this (FullOpts)
46 (9.06 % of base) : 44707.dasm - System.Tests.Perf_Array:SetupArrayRetrieve3D():this (FullOpts)
44 (13.84 % of base) : 8903.dasm - System.Tests.Perf_Array:ArrayCreate3D():System.Array:this (FullOpts)
44 (10.14 % of base) : 42566.dasm - System.Tests.Perf_Array:SetupArrayRetrieve2D():this (FullOpts)
42 (15.56 % of base) : 38070.dasm - System.Tests.Perf_Array:ArrayCreate1D():System.Array:this (FullOpts)
42 (13.38 % of base) : 39957.dasm - System.Tests.Perf_Array:ArrayCreate2D():System.Array:this (FullOpts)
42 (14.48 % of base) : 13067.dasm - System.Tests.Perf_Array:SetupArrayAssign1D():this (FullOpts)
42 (12.50 % of base) : 27818.dasm - System.Tests.Perf_Array:SetupArrayAssign2D():this (FullOpts)
30 (6.38 % of base) : 41613.dasm - System.Tests.Perf_Array:SetupArrayRetrieve1D():this (FullOpts)
18 (1.10 % of base) : 37356.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
18 (1.10 % of base) : 9880.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
18 (1.10 % of base) : 32415.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
18 (1.10 % of base) : 33988.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
18 (1.10 % of base) : 35792.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
18 (1.10 % of base) : 40732.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
Top method improvements (bytes):
-56 (-9.86 % of base) : 7579.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) : 3065.dasm - System.Xml.Serialization.ContextAwareTables`1[System.__Canon]:GetOrCreateValue(System.Type,System.Func`2[System.__Canon,System.__Canon]):System.__Canon:this (FullOpts)
-36 (-10.59 % of base) : 3263.dasm - System.Xml.Serialization.XmlSerializationWriterILGen:GenerateElement(System.Xml.Serialization.XmlMapping):System.String:this (FullOpts)
-32 (-36.36 % of base) : 22021.dasm - Newtonsoft.Json.JsonConvert:DeserializeObject[System.__Canon](System.String,Newtonsoft.Json.JsonSerializerSettings):System.__Canon (FullOpts)
-32 (-41.03 % of base) : 437.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
-30 (-20.55 % of base) : 776.dasm - BenchmarkDotNet.Characteristics.Characteristic`1[System.__Canon]:ResolveValueCore(BenchmarkDotNet.Characteristics.CharacteristicObject,System.Object):System.Object:this (FullOpts)
-28 (-5.36 % of base) : 24289.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) : 8616.dasm - Newtonsoft.Json.Utilities.ReflectionUtils:GetAttributes(System.Object,System.Type,ubyte):System.Attribute[] (FullOpts)
-28 (-13.33 % of base) : 27688.dasm - System.Collections.Generic.List`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
-28 (-51.85 % of base) : 4416.dasm - System.Collections.TryGetValueFalse`2+<>c[System.__Canon,System.__Canon]:<Setup>b__10_1(System.__Canon):System.__Canon:this (FullOpts)
-28 (-8.81 % of base) : 8646.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (FullOpts)
-28 (-40.00 % of base) : 15183.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (FullOpts)
-26 (-13.54 % of base) : 28110.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-26 (-12.26 % of base) : 25509.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-26 (-8.39 % of base) : 15899.dasm - System.Collections.Generic.Dictionary`2[int,System.__Canon]:System.Collections.IDictionary.set_Item(System.Object,System.Object):this (FullOpts)
-24 (-31.58 % of base) : 979.dasm - BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:Freeze():System.__Canon:this (FullOpts)
-24 (-13.64 % of base) : 27973.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-24 (-26.67 % of base) : 10319.dasm - Sigil.NonGeneric.Emit:CreateDelegate[System.__Canon](byref,int):System.__Canon:this (FullOpts)
-24 (-6.63 % of base) : 26699.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (FullOpts)
-22 (-31.43 % of base) : 5485.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
Top method regressions (percentages):
110 (40.44 % of base) : 23939.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[Interop.StructureToPtr+NonBlittableStruct](int):Interop.StructureToPtr+NonBlittableStruct (FullOpts)
42 (15.56 % of base) : 38070.dasm - System.Tests.Perf_Array:ArrayCreate1D():System.Array:this (FullOpts)
42 (14.48 % of base) : 13067.dasm - System.Tests.Perf_Array:SetupArrayAssign1D():this (FullOpts)
44 (13.84 % of base) : 8903.dasm - System.Tests.Perf_Array:ArrayCreate3D():System.Array:this (FullOpts)
46 (13.53 % of base) : 40486.dasm - System.Tests.Perf_Array:SetupArrayAssign3D():this (FullOpts)
42 (13.38 % of base) : 39957.dasm - System.Tests.Perf_Array:ArrayCreate2D():System.Array:this (FullOpts)
42 (12.50 % of base) : 27818.dasm - System.Tests.Perf_Array:SetupArrayAssign2D():this (FullOpts)
10 (10.64 % of base) : 44703.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (FullOpts)
10 (10.64 % of base) : 40912.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (FullOpts)
10 (10.42 % of base) : 42593.dasm - PerfLabTests.CastingPerf:FooObjIsFoo():this (FullOpts)
10 (10.42 % of base) : 13794.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (FullOpts)
10 (10.42 % of base) : 16727.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (FullOpts)
10 (10.42 % of base) : 19148.dasm - PerfLabTests.CastingPerf:IntObj():this (FullOpts)
44 (10.14 % of base) : 42566.dasm - System.Tests.Perf_Array:SetupArrayRetrieve2D():this (FullOpts)
46 (9.06 % of base) : 44707.dasm - System.Tests.Perf_Array:SetupArrayRetrieve3D():this (FullOpts)
110 (8.90 % of base) : 33424.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderSimpleStructWithProperties:Read2_SimpleStructWithProperties(ubyte):MicroBenchmarks.Serializers.SimpleStructWithProperties:this (FullOpts)
202 (8.84 % of base) : 8113.dasm - System.Collections.Perf_SubstringFrozenDictionary:Setup():this (FullOpts)
54 (8.21 % of base) : 45308.dasm - System.Tests.Perf_Array:SetupArrayCopy2D():this (FullOpts)
56 (7.69 % of base) : 45917.dasm - System.Tests.Perf_Array:SetupArrayCopy3D():this (FullOpts)
30 (6.38 % of base) : 41613.dasm - System.Tests.Perf_Array:SetupArrayRetrieve1D():this (FullOpts)
Top method improvements (percentages):
-28 (-51.85 % of base) : 4416.dasm - System.Collections.TryGetValueFalse`2+<>c[System.__Canon,System.__Canon]:<Setup>b__10_1(System.__Canon):System.__Canon:this (FullOpts)
-22 (-47.83 % of base) : 5379.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
-32 (-41.03 % of base) : 437.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
-28 (-40.00 % of base) : 15183.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (FullOpts)
-32 (-36.36 % of base) : 22021.dasm - Newtonsoft.Json.JsonConvert:DeserializeObject[System.__Canon](System.String,Newtonsoft.Json.JsonSerializerSettings):System.__Canon (FullOpts)
-24 (-31.58 % of base) : 979.dasm - BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:Freeze():System.__Canon:this (FullOpts)
-22 (-31.43 % of base) : 5485.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
-24 (-26.67 % of base) : 10319.dasm - Sigil.NonGeneric.Emit:CreateDelegate[System.__Canon](byref,int):System.__Canon:this (FullOpts)
-18 (-24.32 % of base) : 23505.dasm - System.Xml.Base64Decoder:SetNextOutputBuffer(System.Array,int,int):this (FullOpts)
-18 (-23.68 % of base) : 2031.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
-30 (-20.55 % of base) : 776.dasm - BenchmarkDotNet.Characteristics.Characteristic`1[System.__Canon]:ResolveValueCore(BenchmarkDotNet.Characteristics.CharacteristicObject,System.Object):System.Object:this (FullOpts)
-16 (-18.18 % of base) : 11517.dasm - MicroBenchmarks.Serializers.Json_FromStream`1[System.__Canon]:DataContractJsonSerializer_():System.__Canon:this (FullOpts)
-16 (-18.18 % of base) : 14486.dasm - MicroBenchmarks.Serializers.Xml_FromStream`1[System.__Canon]:DataContractSerializer_():System.__Canon:this (FullOpts)
-16 (-18.18 % of base) : 17555.dasm - MicroBenchmarks.Serializers.Xml_FromStream`1[System.__Canon]:XmlSerializer_():System.__Canon:this (FullOpts)
-20 (-17.24 % of base) : 9711.dasm - System.Text.Json.Serialization.Converters.ListOfTConverter`2[System.__Canon,System.__Canon]:Add(byref,byref):this (FullOpts)
-14 (-16.67 % of base) : 24499.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
-18 (-16.67 % of base) : 14677.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) : 40116.dasm - System.Diagnostics.Tracing.Statics:GetCustomAttribute[System.__Canon](System.Type):System.__Canon (FullOpts)
-16 (-14.81 % of base) : 26035.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (FullOpts)
-14 (-14.58 % of base) : 9636.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: 44462940 (overridden on cmd)
Total bytes of diff: 44437362 (overridden on cmd)
Total bytes of delta: -25578 (-0.06 % of base)
diff is a regression.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
110 : 120356.dasm (9.03 % of base)
64 : 67496.dasm (6.34 % of base)
62 : 58952.dasm (6.08 % of base)
60 : 117889.dasm (5.80 % of base)
52 : 162002.dasm (5.02 % of base)
52 : 60239.dasm (4.97 % of base)
52 : 73843.dasm (5.09 % of base)
50 : 130046.dasm (4.87 % of base)
50 : 109174.dasm (3.00 % of base)
50 : 57362.dasm (4.82 % of base)
48 : 158518.dasm (7.08 % of base)
46 : 124333.dasm (4.43 % of base)
46 : 152334.dasm (4.46 % of base)
46 : 15874.dasm (4.45 % of base)
46 : 160607.dasm (6.15 % of base)
46 : 24124.dasm (4.48 % of base)
46 : 72641.dasm (4.24 % of base)
46 : 55410.dasm (4.46 % of base)
46 : 73228.dasm (4.34 % of base)
46 : 87810.dasm (4.50 % of base)
Top file improvements (bytes):
-162 : 100156.dasm (-4.75 % of base)
-64 : 110895.dasm (-6.84 % of base)
-46 : 161549.dasm (-6.59 % of base)
-46 : 44634.dasm (-6.59 % of base)
-46 : 60852.dasm (-6.59 % of base)
-46 : 68144.dasm (-6.59 % of base)
-46 : 86846.dasm (-6.59 % of base)
-46 : 72617.dasm (-6.59 % of base)
-46 : 55378.dasm (-6.59 % of base)
-46 : 59828.dasm (-6.59 % of base)
-44 : 85076.dasm (-9.09 % of base)
-44 : 87039.dasm (-9.09 % of base)
-44 : 100937.dasm (-1.47 % of base)
-44 : 113171.dasm (-9.09 % of base)
-42 : 72947.dasm (-3.75 % of base)
-40 : 4476.dasm (-0.92 % of base)
-38 : 152817.dasm (-5.51 % of base)
-38 : 156252.dasm (-5.51 % of base)
-38 : 159768.dasm (-5.51 % of base)
-38 : 60200.dasm (-5.51 % of base)
83 total files with Code Size differences (43 improved, 40 regressed), 20 unchanged.
Top method regressions (bytes):
110 (9.03 % of base) : 120356.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderSimpleStructWithProperties:Read2_SimpleStructWithProperties(ubyte):MicroBenchmarks.Serializers.SimpleStructWithProperties:this (Tier0-FullOpts)
64 (6.34 % of base) : 67496.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
62 (6.08 % of base) : 58952.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
60 (5.80 % of base) : 117889.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
52 (5.02 % of base) : 162002.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
52 (4.97 % of base) : 60239.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
52 (5.09 % of base) : 73843.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
50 (3.00 % of base) : 109174.dasm - Newtonsoft.Json.Linq.JProperty:InsertItem(int,Newtonsoft.Json.Linq.JToken,ubyte,ubyte):ubyte:this (Tier1)
50 (4.87 % of base) : 130046.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
50 (4.82 % of base) : 57362.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
48 (7.08 % of base) : 158518.dasm - System.Tests.Perf_Array:SetupArrayCopy2D():this (Tier0-FullOpts)
46 (4.43 % of base) : 124333.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
46 (4.46 % of base) : 152334.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
46 (4.45 % of base) : 15874.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
46 (4.48 % of base) : 24124.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
46 (4.24 % of base) : 72641.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
46 (4.46 % of base) : 55410.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
46 (4.34 % of base) : 73228.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
46 (4.50 % of base) : 87810.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
46 (6.15 % of base) : 160607.dasm - System.Tests.Perf_Array:SetupArrayCopy3D():this (Tier0-FullOpts)
Top method improvements (bytes):
-162 (-4.75 % of base) : 100156.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
-64 (-6.84 % of base) : 110895.dasm - Microsoft.CodeAnalysis.CSharp.LocalBinderFactory:VisitLocalDeclarationStatement(Microsoft.CodeAnalysis.CSharp.Syntax.LocalDeclarationStatementSyntax):this (Tier0-FullOpts)
-46 (-6.59 % of base) : 161549.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) : 44634.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) : 60852.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) : 68144.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) : 86846.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) : 72617.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) : 55378.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) : 59828.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) : 100937.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) : 85076.dasm - System.ComponentModel.ReflectTypeDescriptionProvider+ReflectedTypeData:GetConverter(System.Object):System.ComponentModel.TypeConverter:this (Tier1)
-44 (-9.09 % of base) : 87039.dasm - System.ComponentModel.ReflectTypeDescriptionProvider+ReflectedTypeData:GetConverter(System.Object):System.ComponentModel.TypeConverter:this (Tier1)
-44 (-9.09 % of base) : 113171.dasm - System.ComponentModel.ReflectTypeDescriptionProvider+ReflectedTypeData:GetConverter(System.Object):System.ComponentModel.TypeConverter:this (Tier1)
-42 (-3.75 % of base) : 72947.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
-40 (-0.92 % of base) : 4476.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) : 152817.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) : 156252.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) : 159768.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) : 60200.dasm - System.Xml.Serialization.ContextAwareTables`1[System.__Canon]:GetOrCreateValue(System.Type,System.Func`2[System.__Canon,System.__Canon]):System.__Canon:this (Tier1)
Top method regressions (percentages):
28 (18.42 % of base) : 80736.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
26 (16.88 % of base) : 21560.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
26 (14.77 % of base) : 87019.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
26 (14.77 % of base) : 85040.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
26 (13.83 % of base) : 119653.dasm - System.Dynamic.Utils.CacheDict`2[System.__Canon,System.__Canon]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
30 (10.87 % of base) : 158731.dasm - Newtonsoft.Json.Serialization.JsonContract:set_CreatedType(System.Type):this (Tier1)
30 (10.87 % of base) : 53166.dasm - Newtonsoft.Json.Serialization.JsonContract:set_CreatedType(System.Type):this (Tier1)
10 (10.64 % of base) : 151952.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier0-FullOpts)
10 (10.64 % of base) : 143677.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier0-FullOpts)
10 (10.42 % of base) : 149912.dasm - PerfLabTests.CastingPerf:FooObjIsFoo():this (Tier0-FullOpts)
10 (10.42 % of base) : 51821.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier0-FullOpts)
10 (10.42 % of base) : 56307.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier0-FullOpts)
10 (10.42 % of base) : 70246.dasm - PerfLabTests.CastingPerf:IntObj():this (Tier0-FullOpts)
10 (10.42 % of base) : 81091.dasm - System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
44 (9.91 % of base) : 145166.dasm - System.Tests.Perf_Array:SetupArrayRetrieve2D():this (Tier0-FullOpts)
18 (9.68 % of base) : 15127.dasm - System.Dynamic.Utils.CacheDict`2[System.__Canon,System.__Canon]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
28 (9.09 % of base) : 116984.dasm - System.Text.Json.Reflection.ReflectionExtensions:GetUniqueCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
28 (9.09 % of base) : 51744.dasm - System.Text.Json.Reflection.ReflectionExtensions:GetUniqueCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
28 (9.09 % of base) : 69392.dasm - System.Text.Json.Reflection.ReflectionExtensions:GetUniqueCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
28 (9.09 % of base) : 75179.dasm - System.Text.Json.Reflection.ReflectionExtensions:GetUniqueCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
Top method improvements (percentages):
-22 (-47.83 % of base) : 123690.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
-22 (-47.83 % of base) : 130691.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
-22 (-47.83 % of base) : 134809.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
-22 (-47.83 % of base) : 150433.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
-22 (-47.83 % of base) : 31979.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
-22 (-47.83 % of base) : 83677.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
-32 (-41.03 % of base) : 12022.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-32 (-36.36 % of base) : 19847.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
-14 (-14.29 % of base) : 18686.dasm - System.Text.Json.Serialization.Converters.DictionaryOfTKeyTValueConverter`3[System.__Canon,System.__Canon,System.__Canon]:Add(System.__Canon,byref,System.Text.Json.JsonSerializerOptions,byref):this (Tier1)
-18 (-13.85 % of base) : 36178.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (Tier1)
-26 (-13.54 % of base) : 111043.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-14 (-12.07 % of base) : 111983.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
-18 (-11.84 % of base) : 54045.dasm - System.Text.Json.Serialization.Converters.IDictionaryConverter`1[System.__Canon]:Add(System.String,byref,System.Text.Json.JsonSerializerOptions,byref):this (Tier1)
-14 (-10.61 % of base) : 41992.dasm - BenchmarkDotNet.Characteristics.Characteristic`1[System.__Canon]:ResolveValueCore(BenchmarkDotNet.Characteristics.CharacteristicObject,System.Object):System.Object:this (Tier1)
-14 (-10.61 % of base) : 66986.dasm - BenchmarkDotNet.Characteristics.Characteristic`1[System.__Canon]:ResolveValueCore(BenchmarkDotNet.Characteristics.CharacteristicObject,System.Object):System.Object:this (Tier1)
-44 (-9.09 % of base) : 85076.dasm - System.ComponentModel.ReflectTypeDescriptionProvider+ReflectedTypeData:GetConverter(System.Object):System.ComponentModel.TypeConverter:this (Tier1)
-44 (-9.09 % of base) : 87039.dasm - System.ComponentModel.ReflectTypeDescriptionProvider+ReflectedTypeData:GetConverter(System.Object):System.ComponentModel.TypeConverter:this (Tier1)
-44 (-9.09 % of base) : 113171.dasm - System.ComponentModel.ReflectTypeDescriptionProvider+ReflectedTypeData:GetConverter(System.Object):System.ComponentModel.TypeConverter:this (Tier1)
-16 (-8.99 % of base) : 19342.dasm - Microsoft.Extensions.Options.OptionsMonitor`1[System.__Canon]:add__onChange(System.Action`2[System.__Canon,System.__Canon]):this (Tier0-FullOpts)
-10 (-8.93 % of base) : 45770.dasm - System.Xml.Linq.XDocument:GetFirstNode[System.__Canon]():System.__Canon: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: 14457706 (overridden on cmd)
Total bytes of diff: 14457114 (overridden on cmd)
Total bytes of delta: -592 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
110 : 64477.dasm (9.11 % of base)
56 : 79346.dasm (7.69 % of base)
54 : 77483.dasm (8.21 % of base)
46 : 77080.dasm (9.06 % of base)
44 : 76061.dasm (10.14 % of base)
30 : 71803.dasm (6.38 % of base)
10 : 35037.dasm (1.44 % of base)
10 : 77339.dasm (10.64 % of base)
10 : 30725.dasm (10.42 % of base)
10 : 32986.dasm (10.42 % of base)
10 : 38321.dasm (10.42 % of base)
10 : 72765.dasm (10.64 % of base)
10 : 75556.dasm (10.42 % of base)
6 : 12667.dasm (1.01 % of base)
6 : 53408.dasm (0.35 % of base)
Top file improvements (bytes):
-46 : 29279.dasm (-7.85 % of base)
-32 : 3209.dasm (-41.03 % of base)
-32 : 8950.dasm (-36.36 % of base)
-30 : 2642.dasm (-20.55 % of base)
-28 : 47227.dasm (-5.36 % of base)
-28 : 17816.dasm (-8.81 % of base)
-28 : 2198.dasm (-9.27 % of base)
-28 : 17310.dasm (-4.02 % of base)
-28 : 13832.dasm (-40.00 % of base)
-26 : 32939.dasm (-8.39 % of base)
-26 : 61013.dasm (-13.54 % of base)
-24 : 3007.dasm (-31.58 % of base)
-24 : 60772.dasm (-13.64 % of base)
-24 : 25501.dasm (-26.67 % of base)
-24 : 52625.dasm (-6.63 % of base)
-22 : 6512.dasm (-47.83 % of base)
-22 : 16704.dasm (-31.43 % of base)
-20 : 28681.dasm (-18.52 % of base)
-20 : 3293.dasm (-10.00 % of base)
-18 : 1834.dasm (-6.08 % of base)
55 total files with Code Size differences (40 improved, 15 regressed), 1 unchanged.
Top method regressions (bytes):
110 (9.11 % of base) : 64477.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderSimpleStructWithProperties:Read2_SimpleStructWithProperties(ubyte):MicroBenchmarks.Serializers.SimpleStructWithProperties:this (Tier0-FullOpts)
56 (7.69 % of base) : 79346.dasm - System.Tests.Perf_Array:SetupArrayCopy3D():this (Tier0-FullOpts)
54 (8.21 % of base) : 77483.dasm - System.Tests.Perf_Array:SetupArrayCopy2D():this (Tier0-FullOpts)
46 (9.06 % of base) : 77080.dasm - System.Tests.Perf_Array:SetupArrayRetrieve3D():this (Tier0-FullOpts)
44 (10.14 % of base) : 76061.dasm - System.Tests.Perf_Array:SetupArrayRetrieve2D():this (Tier0-FullOpts)
30 (6.38 % of base) : 71803.dasm - System.Tests.Perf_Array:SetupArrayRetrieve1D():this (Tier0-FullOpts)
10 (10.42 % of base) : 75556.dasm - PerfLabTests.CastingPerf:FooObjIsFoo():this (Tier0-FullOpts)
10 (10.64 % of base) : 77339.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier0-FullOpts)
10 (10.42 % of base) : 30725.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier0-FullOpts)
10 (10.42 % of base) : 32986.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier0-FullOpts)
10 (10.42 % of base) : 38321.dasm - PerfLabTests.CastingPerf:IntObj():this (Tier0-FullOpts)
10 (10.64 % of base) : 72765.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier0-FullOpts)
10 (1.44 % of base) : 35037.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 (0.35 % of base) : 53408.dasm - Microsoft.Cci.MetadataWriter:PopulateDeclSecurityTableRowsFor(System.Reflection.Metadata.EntityHandle,System.Collections.Generic.IEnumerable`1[Microsoft.Cci.SecurityAttribute]):this (Tier0-FullOpts)
6 (1.01 % of base) : 12667.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) : 29279.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) : 3209.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-32 (-36.36 % of base) : 8950.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
-30 (-20.55 % of base) : 2642.dasm - BenchmarkDotNet.Characteristics.Characteristic`1[System.__Canon]:ResolveValueCore(BenchmarkDotNet.Characteristics.CharacteristicObject,System.Object):System.Object:this (Tier1)
-28 (-5.36 % of base) : 47227.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) : 17310.dasm - Newtonsoft.Json.Utilities.ReflectionUtils:GetAttributes(System.Object,System.Type,ubyte):System.Attribute[] (Tier1)
-28 (-8.81 % of base) : 17816.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (Tier1)
-28 (-9.27 % of base) : 2198.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
-28 (-40.00 % of base) : 13832.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
-26 (-13.54 % of base) : 61013.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-26 (-8.39 % of base) : 32939.dasm - System.Collections.Generic.Dictionary`2[int,System.__Canon]:System.Collections.IDictionary.set_Item(System.Object,System.Object):this (Tier1)
-24 (-31.58 % of base) : 3007.dasm - BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:Freeze():System.__Canon:this (Tier1)
-24 (-13.64 % of base) : 60772.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-24 (-26.67 % of base) : 25501.dasm - Sigil.NonGeneric.Emit:CreateDelegate[System.__Canon](byref,int):System.__Canon:this (Tier1)
-24 (-6.63 % of base) : 52625.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (Tier0-FullOpts)
-22 (-31.43 % of base) : 16704.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (Tier1)
-22 (-47.83 % of base) : 6512.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
-20 (-10.00 % of base) : 3293.dasm - BenchmarkDotNet.Extensions.ValuesGenerator:GenerateValue[System.__Canon](System.Random):System.__Canon (Tier1)
-20 (-18.52 % of base) : 28681.dasm - System.Text.Json.Serialization.Converters.ListOfTConverter`2[System.__Canon,int]:Add(byref,byref):this (Tier1)
-18 (-6.08 % of base) : 1834.dasm - System.Linq.Enumerable+<OfTypeIterator>d__64`1[System.__Canon]:MoveNext():ubyte:this (Tier0-FullOpts)
Top method regressions (percentages):
10 (10.64 % of base) : 77339.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier0-FullOpts)
10 (10.64 % of base) : 72765.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier0-FullOpts)
10 (10.42 % of base) : 75556.dasm - PerfLabTests.CastingPerf:FooObjIsFoo():this (Tier0-FullOpts)
10 (10.42 % of base) : 30725.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier0-FullOpts)
10 (10.42 % of base) : 32986.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier0-FullOpts)
10 (10.42 % of base) : 38321.dasm - PerfLabTests.CastingPerf:IntObj():this (Tier0-FullOpts)
44 (10.14 % of base) : 76061.dasm - System.Tests.Perf_Array:SetupArrayRetrieve2D():this (Tier0-FullOpts)
110 (9.11 % of base) : 64477.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderSimpleStructWithProperties:Read2_SimpleStructWithProperties(ubyte):MicroBenchmarks.Serializers.SimpleStructWithProperties:this (Tier0-FullOpts)
46 (9.06 % of base) : 77080.dasm - System.Tests.Perf_Array:SetupArrayRetrieve3D():this (Tier0-FullOpts)
54 (8.21 % of base) : 77483.dasm - System.Tests.Perf_Array:SetupArrayCopy2D():this (Tier0-FullOpts)
56 (7.69 % of base) : 79346.dasm - System.Tests.Perf_Array:SetupArrayCopy3D():this (Tier0-FullOpts)
30 (6.38 % of base) : 71803.dasm - System.Tests.Perf_Array:SetupArrayRetrieve1D():this (Tier0-FullOpts)
10 (1.44 % of base) : 35037.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) : 12667.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)
6 (0.35 % of base) : 53408.dasm - Microsoft.Cci.MetadataWriter:PopulateDeclSecurityTableRowsFor(System.Reflection.Metadata.EntityHandle,System.Collections.Generic.IEnumerable`1[Microsoft.Cci.SecurityAttribute]):this (Tier0-FullOpts)
Top method improvements (percentages):
-22 (-47.83 % of base) : 6512.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
-32 (-41.03 % of base) : 3209.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-28 (-40.00 % of base) : 13832.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
-32 (-36.36 % of base) : 8950.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
-24 (-31.58 % of base) : 3007.dasm - BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:Freeze():System.__Canon:this (Tier1)
-22 (-31.43 % of base) : 16704.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (Tier1)
-24 (-26.67 % of base) : 25501.dasm - Sigil.NonGeneric.Emit:CreateDelegate[System.__Canon](byref,int):System.__Canon:this (Tier1)
-18 (-23.68 % of base) : 62092.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
-30 (-20.55 % of base) : 2642.dasm - BenchmarkDotNet.Characteristics.Characteristic`1[System.__Canon]:ResolveValueCore(BenchmarkDotNet.Characteristics.CharacteristicObject,System.Object):System.Object:this (Tier1)
-20 (-18.52 % of base) : 28681.dasm - System.Text.Json.Serialization.Converters.ListOfTConverter`2[System.__Canon,int]:Add(byref,byref):this (Tier1)
-18 (-16.67 % of base) : 30767.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) : 69239.dasm - System.Diagnostics.Tracing.Statics:GetCustomAttribute[System.__Canon](System.Type):System.__Canon (Tier1)
-16 (-14.81 % of base) : 54145.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (Tier1)
-14 (-14.58 % of base) : 6641.dasm - System.Text.Json.Serialization.Converters.IListConverter`1[System.__Canon]:Add(byref,byref):this (Tier1)
-18 (-14.29 % of base) : 22262.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (Tier1)
-14 (-14.29 % of base) : 17001.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) : 60772.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-26 (-13.54 % of base) : 61013.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-14 (-12.28 % of base) : 53635.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
-16 (-11.76 % of base) : 48118.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: 298554316 (overridden on cmd)
Total bytes of diff: 298698642 (overridden on cmd)
Total bytes of delta: 144326 (0.05 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
6758 : 459098.dasm (37.63 % of base)
6526 : 460132.dasm (36.68 % of base)
6422 : 460983.dasm (36.32 % of base)
6342 : 459033.dasm (35.10 % of base)
6192 : 460163.dasm (35.87 % of base)
6146 : 460392.dasm (34.94 % of base)
6128 : 459730.dasm (33.79 % of base)
6002 : 458967.dasm (32.59 % of base)
5982 : 460430.dasm (32.74 % of base)
5900 : 460951.dasm (32.09 % of base)
5852 : 459762.dasm (33.89 % of base)
5814 : 459132.dasm (30.82 % of base)
5774 : 458858.dasm (32.83 % of base)
5740 : 459065.dasm (32.67 % of base)
5700 : 460860.dasm (29.16 % of base)
5664 : 460238.dasm (31.64 % of base)
5628 : 460788.dasm (32.15 % of base)
5484 : 460194.dasm (30.59 % of base)
5394 : 460043.dasm (25.91 % of base)
5318 : 459001.dasm (28.34 % of base)
Top file improvements (bytes):
-64 : 148425.dasm (-6.84 % of base)
-40 : 411027.dasm (-18.87 % of base)
-36 : 167932.dasm (-20.00 % of base)
-36 : 416996.dasm (-29.03 % of base)
-32 : 474403.dasm (-41.03 % of base)
-32 : 1062.dasm (-41.03 % of base)
-30 : 382014.dasm (-4.07 % of base)
-30 : 475614.dasm (-44.12 % of base)
-30 : 367067.dasm (-20.83 % of base)
-28 : 377485.dasm (-5.36 % of base)
-28 : 138812.dasm (-5.30 % of base)
-28 : 307724.dasm (-9.27 % of base)
-28 : 382040.dasm (-8.81 % of base)
-26 : 369914.dasm (-10.32 % of base)
-26 : 381014.dasm (-13.54 % of base)
-26 : 146182.dasm (-7.14 % of base)
-26 : 155472.dasm (-2.08 % of base)
-26 : 369901.dasm (-10.32 % of base)
-26 : 378955.dasm (-12.26 % of base)
-24 : 464297.dasm (-10.17 % of base)
69 total files with Code Size differences (44 improved, 25 regressed), 20 unchanged.
Top method regressions (bytes):
6758 (37.63 % of base) : 459098.dasm - Generated907:CalliTest() (FullOpts)
6526 (36.68 % of base) : 460132.dasm - Generated937:CalliTest() (FullOpts)
6422 (36.32 % of base) : 460983.dasm - Generated963:CalliTest() (FullOpts)
6342 (35.10 % of base) : 459033.dasm - Generated905:CalliTest() (FullOpts)
6192 (35.87 % of base) : 460163.dasm - Generated938:CalliTest() (FullOpts)
6146 (34.94 % of base) : 460392.dasm - Generated945:CalliTest() (FullOpts)
6128 (33.79 % of base) : 459730.dasm - Generated925:CalliTest() (FullOpts)
6002 (32.59 % of base) : 458967.dasm - Generated903:CalliTest() (FullOpts)
5982 (32.74 % of base) : 460430.dasm - Generated946:CalliTest() (FullOpts)
5900 (32.09 % of base) : 460951.dasm - Generated962:CalliTest() (FullOpts)
5852 (33.89 % of base) : 459762.dasm - Generated926:CalliTest() (FullOpts)
5814 (30.82 % of base) : 459132.dasm - Generated908:CalliTest() (FullOpts)
5774 (32.83 % of base) : 458858.dasm - Generated900:CalliTest() (FullOpts)
5740 (32.67 % of base) : 459065.dasm - Generated906:CalliTest() (FullOpts)
5700 (29.16 % of base) : 460860.dasm - Generated959:CalliTest() (FullOpts)
5664 (31.64 % of base) : 460238.dasm - Generated940:CalliTest() (FullOpts)
5628 (32.15 % of base) : 460788.dasm - Generated957:CalliTest() (FullOpts)
5484 (30.59 % of base) : 460194.dasm - Generated939:CalliTest() (FullOpts)
5394 (25.91 % of base) : 460043.dasm - Generated934:CalliTest() (FullOpts)
5318 (28.34 % of base) : 459001.dasm - Generated904:CalliTest() (FullOpts)
Top method improvements (bytes):
-64 (-6.84 % of base) : 148425.dasm - Microsoft.CodeAnalysis.CSharp.LocalBinderFactory:VisitLocalDeclarationStatement(Microsoft.CodeAnalysis.CSharp.Syntax.LocalDeclarationStatementSyntax):this (Tier0-FullOpts)
-40 (-18.87 % of base) : 411027.dasm - JitTest_castclass_ldlen_array_il.Test:Main():int (FullOpts)
-36 (-29.03 % of base) : 416996.dasm - My:foo[System.__Canon](ubyte,System.Object):System.Object (FullOpts)
-36 (-20.00 % of base) : 167932.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
-32 (-41.03 % of base) : 474403.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
-32 (-41.03 % of base) : 1062.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-30 (-4.07 % of base) : 382014.dasm - Newtonsoft.Json.Utilities.ReflectionUtils:GetAttributes(System.Object,System.Type,ubyte):System.Attribute[] (FullOpts)
-30 (-44.12 % of base) : 475614.dasm - Program+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
-30 (-20.83 % of base) : 367067.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (FullOpts)
-28 (-5.36 % of base) : 377485.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) : 138812.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) : 382040.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (FullOpts)
-28 (-9.27 % of base) : 307724.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
-26 (-13.54 % of base) : 381014.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-26 (-12.26 % of base) : 378955.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-26 (-10.32 % of base) : 369914.dasm - MyCounter[System.__Canon]:Decrement[System.__Canon](int):this (FullOpts)
-26 (-10.32 % of base) : 369901.dasm - MyCounter`1[System.__Canon]:Decrement[System.__Canon](int):this (FullOpts)
-26 (-7.14 % of base) : 146182.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (Tier0-FullOpts)
-26 (-2.08 % of base) : 155472.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitExpression(System.Linq.Expressions.Expression,int):this (Tier1)
-24 (-10.17 % of base) : 464297.dasm - Gen`1[System.__Canon]:ExceptionTest(System.__Canon):this (FullOpts)
Top method regressions (percentages):
46 (766.67 % of base) : 374886.dasm - T:TestEntryPoint():int (FullOpts)
110 (42.64 % of base) : 366453.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[ComWrappersTests.Common.VtblPtr](int):ComWrappersTests.Common.VtblPtr (FullOpts)
204 (41.46 % of base) : 271029.dasm - System.Reflection.Emit.RuntimeTypeBuilder:IsSubclassOf(System.Type):ubyte:this (Tier1)
6758 (37.63 % of base) : 459098.dasm - Generated907:CalliTest() (FullOpts)
6526 (36.68 % of base) : 460132.dasm - Generated937:CalliTest() (FullOpts)
6422 (36.32 % of base) : 460983.dasm - Generated963:CalliTest() (FullOpts)
6192 (35.87 % of base) : 460163.dasm - Generated938:CalliTest() (FullOpts)
6342 (35.10 % of base) : 459033.dasm - Generated905:CalliTest() (FullOpts)
6146 (34.94 % of base) : 460392.dasm - Generated945:CalliTest() (FullOpts)
5852 (33.89 % of base) : 459762.dasm - Generated926:CalliTest() (FullOpts)
6128 (33.79 % of base) : 459730.dasm - Generated925:CalliTest() (FullOpts)
5774 (32.83 % of base) : 458858.dasm - Generated900:CalliTest() (FullOpts)
5982 (32.74 % of base) : 460430.dasm - Generated946:CalliTest() (FullOpts)
5740 (32.67 % of base) : 459065.dasm - Generated906:CalliTest() (FullOpts)
6002 (32.59 % of base) : 458967.dasm - Generated903:CalliTest() (FullOpts)
5628 (32.15 % of base) : 460788.dasm - Generated957:CalliTest() (FullOpts)
5900 (32.09 % of base) : 460951.dasm - Generated962:CalliTest() (FullOpts)
5664 (31.64 % of base) : 460238.dasm - Generated940:CalliTest() (FullOpts)
5814 (30.82 % of base) : 459132.dasm - Generated908:CalliTest() (FullOpts)
5484 (30.59 % of base) : 460194.dasm - Generated939:CalliTest() (FullOpts)
Top method improvements (percentages):
-30 (-44.12 % of base) : 475614.dasm - Program+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
-32 (-41.03 % of base) : 474403.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
-32 (-41.03 % of base) : 1062.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-22 (-31.43 % of base) : 398931.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
-14 (-30.43 % of base) : 156217.dasm - CastExpansionTests:CastToGeneric[System.__Canon](System.Object):System.Object:this (Tier1)
-36 (-29.03 % of base) : 416996.dasm - My:foo[System.__Canon](ubyte,System.Object):System.Object (FullOpts)
-30 (-20.83 % of base) : 367067.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (FullOpts)
-16 (-20.00 % of base) : 463327.dasm - Internal.TypeSystem.MetadataTypeSystemContext:ComputeHasStaticConstructor(Internal.TypeSystem.TypeDesc):ubyte:this (FullOpts)
-36 (-20.00 % of base) : 167932.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
-20 (-18.87 % of base) : 311730.dasm - Internal.TypeSystem.MetadataTypeSystemContext:ComputeHasStaticConstructor(Internal.TypeSystem.TypeDesc):ubyte:this (Tier1)
-20 (-18.87 % of base) : 305871.dasm - Internal.TypeSystem.MetadataTypeSystemContext:ComputeHasStaticConstructor(Internal.TypeSystem.TypeDesc):ubyte:this (Tier1)
-40 (-18.87 % of base) : 411027.dasm - JitTest_castclass_ldlen_array_il.Test:Main():int (FullOpts)
-18 (-18.00 % of base) : 367851.dasm - Xunit.Assert:Throws[System.__Canon](System.Action):System.__Canon (FullOpts)
-18 (-18.00 % of base) : 116899.dasm - Xunit.Assert:Throws[System.__Canon](System.Action):System.__Canon (Tier1)
-16 (-17.39 % of base) : 382031.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (FullOpts)
-14 (-16.67 % of base) : 377696.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
-18 (-16.67 % of base) : 367434.dasm - Xunit.Assert:Throws[System.__Canon](System.Func`1[System.Object]):System.__Canon (FullOpts)
-18 (-16.67 % of base) : 116885.dasm - Xunit.Assert:Throws[System.__Canon](System.Func`1[System.Object]):System.__Canon (Tier1)
-10 (-15.62 % of base) : 421351.dasm - Program+<>c__5`1[System.__Canon]:<GetCustomAttributes>b__5_0(Program+CustomAttributeData):System.__Canon:this (FullOpts)
-16 (-14.81 % of base) : 379499.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: 34520558 (overridden on cmd)
Total bytes of diff: 34504364 (overridden on cmd)
Total bytes of delta: -16194 (-0.05 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
4 : 154907.dasm (1.10 % of base)
2 : 66643.dasm (0.90 % of base)
2 : 99916.dasm (0.88 % of base)
2 : 100101.dasm (0.46 % of base)
2 : 137204.dasm (0.85 % of base)
Top file improvements (bytes):
-224 : 173954.dasm (-15.20 % of base)
-210 : 173953.dasm (-15.11 % of base)
-196 : 173951.dasm (-15.01 % of base)
-182 : 173949.dasm (-14.89 % of base)
-168 : 173947.dasm (-14.76 % of base)
-164 : 100029.dasm (-9.27 % of base)
-164 : 159612.dasm (-15.05 % of base)
-154 : 173945.dasm (-14.61 % of base)
-148 : 137622.dasm (-6.74 % of base)
-140 : 173943.dasm (-14.43 % of base)
-126 : 173941.dasm (-14.22 % of base)
-112 : 173939.dasm (-13.97 % of base)
-106 : 183331.dasm (-16.88 % of base)
-106 : 183327.dasm (-17.55 % of base)
-98 : 173937.dasm (-13.65 % of base)
-86 : 137581.dasm (-7.75 % of base)
-84 : 173718.dasm (-7.14 % of base)
-84 : 173935.dasm (-13.25 % of base)
-76 : 67028.dasm (-14.18 % of base)
-74 : 137413.dasm (-8.53 % of base)
82 total files with Code Size differences (77 improved, 5 regressed), 1 unchanged.
Top method regressions (bytes):
4 (1.10 % of base) : 154907.dasm - Microsoft.Internal.Collections.WeakReferenceCollection`1[System.__Canon]:AliveItemsToList():System.Collections.Generic.List`1[System.__Canon]:this (FullOpts)
2 (0.90 % of base) : 66643.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+<GetMembers>d__187`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
2 (0.88 % of base) : 99916.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PENamedTypeSymbol+VB$StateMachine_156_GetMembers`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
2 (0.46 % of base) : 100101.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)
2 (0.85 % of base) : 137204.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet+Enumerator[System.__Canon,System.__Canon]:.ctor(Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]):this (FullOpts)
Top method improvements (bytes):
-224 (-15.20 % of base) : 173954.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) : 173953.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) : 173951.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) : 173949.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) : 173947.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) : 100029.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
-164 (-15.05 % of base) : 159612.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
-154 (-14.61 % of base) : 173945.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)
-148 (-6.74 % of base) : 137622.dasm - Microsoft.CodeAnalysis.Emit.NoPia.EmbeddedTypesManager`21+CommonEmbeddedType[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,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:GetAttributes(System.__Canon,System.__Canon,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
-140 (-14.43 % of base) : 173943.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) : 173941.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)
-112 (-13.97 % of base) : 173939.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) : 183327.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) : 183331.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)
-98 (-13.65 % of base) : 173937.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)
-86 (-7.75 % of base) : 137581.dasm - Microsoft.CodeAnalysis.Emit.NoPia.EmbeddedTypesManager`21+CommonEmbeddedParameter[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,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:GetAttributes(System.__Canon,System.__Canon,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
-84 (-13.25 % of base) : 173935.dasm - CommandLine.ParserResultExtensions:MapResult[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.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
-84 (-7.14 % of base) : 173718.dasm - RailwaySharp.ErrorHandling.Trial+<>c__13`2[System.__Canon,System.__Canon]:<Collect>b__13_0(RailwaySharp.ErrorHandling.Result`2[System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon],RailwaySharp.ErrorHandling.Result`2[System.__Canon,System.__Canon]):RailwaySharp.ErrorHandling.Result`2[System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon]:this (FullOpts)
-76 (-14.18 % of base) : 67028.dasm - Microsoft.CodeAnalysis.CSharp.NullabilityRewriter:GetUpdatedSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.BoundNode,System.__Canon):System.__Canon:this (FullOpts)
-74 (-8.53 % of base) : 137413.dasm - Microsoft.CodeAnalysis.MetadataDecoder`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:GetSymbolForILToken(System.Reflection.Metadata.EntityHandle):System.__Canon:this (FullOpts)
Top method regressions (percentages):
4 (1.10 % of base) : 154907.dasm - Microsoft.Internal.Collections.WeakReferenceCollection`1[System.__Canon]:AliveItemsToList():System.Collections.Generic.List`1[System.__Canon]:this (FullOpts)
2 (0.90 % of base) : 66643.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+<GetMembers>d__187`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
2 (0.88 % of base) : 99916.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PENamedTypeSymbol+VB$StateMachine_156_GetMembers`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
2 (0.85 % of base) : 137204.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet+Enumerator[System.__Canon,System.__Canon]:.ctor(Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]):this (FullOpts)
2 (0.46 % of base) : 100101.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) : 144370.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) : 180393.dasm - System.Linq.ParallelQuery`1+<>c__1`1[System.__Canon,System.__Canon]:<Cast>b__1_0(System.__Canon):System.__Canon:this (FullOpts)
-30 (-40.54 % of base) : 173430.dasm - CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]:<Cast>b__0():System.__Canon:this (FullOpts)
-32 (-35.56 % of base) : 185021.dasm - Microsoft.Extensions.Primitives.ChangeToken+ChangeTokenRegistration`1+<>c[System.__Canon]:<RegisterChangeTokenCallback>b__7_0(System.Object):this (FullOpts)
-32 (-35.56 % of base) : 115811.dasm - System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]:<StartAsyncOperation>b__11_1(System.Object):this (FullOpts)
-32 (-35.56 % of base) : 171807.dasm - System.Threading.Channels.AsyncOperation`1+<>c[System.__Canon]:<SignalCompletion>b__35_0(System.Object):this (FullOpts)
-32 (-35.56 % of base) : 168227.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) : 168077.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) : 168229.dasm - System.Threading.Tasks.Dataflow.BroadcastBlock`1+<>c[System.__Canon]:<ConsumeAsyncIfNecessary>b__18_0(System.Object):this (FullOpts)
-32 (-35.56 % of base) : 168288.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) : 168254.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) : 168279.dasm - System.Threading.Tasks.Dataflow.BufferBlock`1+<>c[System.__Canon]:<ConsumeAsyncIfNecessary>b__23_0(System.Object):this (FullOpts)
-32 (-35.56 % of base) : 168129.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+SendAsyncSource`1+<>c[System.__Canon]:<OfferToTargetAsync>b__16_0(System.Object):this (FullOpts)
-32 (-35.56 % of base) : 168282.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) : 168240.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) : 168163.dasm - System.Threading.Tasks.Dataflow.Internal.SpscTargetCore`1+<>c[System.__Canon]:<ScheduleConsumerIfNecessary>b__13_0(System.Object):this (FullOpts)
-32 (-35.56 % of base) : 168285.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) : 168247.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) : 167965.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+ReceiveTarget`1+<>c[System.__Canon]:<.cctor>b__26_0(System.Object):this (FullOpts)
-32 (-34.78 % of base) : 167966.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+ReceiveTarget`1+<>c[System.__Canon]:<.cctor>b__26_1(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: 36667164 (overridden on cmd)
Total bytes of diff: 36657936 (overridden on cmd)
Total bytes of delta: -9228 (-0.03 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
112 : 248778.dasm (9.88 % of base)
110 : 164891.dasm (67.07 % of base)
110 : 164892.dasm (67.07 % of base)
110 : 24750.dasm (37.93 % of base)
110 : 24751.dasm (34.81 % of base)
110 : 164893.dasm (66.27 % of base)
110 : 164894.dasm (67.07 % of base)
110 : 24748.dasm (37.93 % of base)
110 : 24749.dasm (38.46 % of base)
110 : 164889.dasm (67.07 % of base)
110 : 164890.dasm (67.07 % of base)
110 : 24747.dasm (38.46 % of base)
110 : 24752.dasm (37.67 % of base)
72 : 260021.dasm (2.44 % of base)
46 : 128131.dasm (2.41 % of base)
44 : 105981.dasm (5.71 % of base)
36 : 215694.dasm (1.78 % of base)
30 : 143594.dasm (7.11 % of base)
30 : 233563.dasm (7.01 % of base)
28 : 143902.dasm (11.76 % of base)
Top file improvements (bytes):
-400 : 253566.dasm (-23.92 % of base)
-240 : 76328.dasm (-10.06 % of base)
-214 : 217968.dasm (-8.47 % of base)
-194 : 116766.dasm (-7.90 % of base)
-164 : 113075.dasm (-12.97 % of base)
-164 : 249345.dasm (-12.50 % of base)
-124 : 243708.dasm (-20.46 % of base)
-108 : 112021.dasm (-36.73 % of base)
-102 : 111373.dasm (-7.70 % of base)
-96 : 16385.dasm (-14.95 % of base)
-96 : 16378.dasm (-15.24 % of base)
-82 : 166901.dasm (-2.05 % of base)
-68 : 87120.dasm (-17.09 % of base)
-64 : 25007.dasm (-8.18 % of base)
-60 : 16542.dasm (-12.35 % of base)
-60 : 16551.dasm (-12.30 % of base)
-58 : 104197.dasm (-15.76 % of base)
-50 : 111942.dasm (-34.25 % of base)
-48 : 221438.dasm (-13.48 % of base)
-46 : 110902.dasm (-7.85 % of base)
79 total files with Code Size differences (56 improved, 23 regressed), 20 unchanged.
Top method regressions (bytes):
112 (9.88 % of base) : 248778.dasm - System.Security.Cryptography.Pkcs.Asn1.PkiStatusInfo:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this (FullOpts)
110 (67.07 % of base) : 164892.dasm - Newtonsoft.Json.Utilities.EnumUtils:GetFlagsValues[double](double):System.Collections.Generic.IList`1[double] (FullOpts)
110 (67.07 % of base) : 164891.dasm - Newtonsoft.Json.Utilities.EnumUtils:GetFlagsValues[int](int):System.Collections.Generic.IList`1[int] (FullOpts)
110 (67.07 % of base) : 164894.dasm - Newtonsoft.Json.Utilities.EnumUtils:GetFlagsValues[long](long):System.Collections.Generic.IList`1[long] (FullOpts)
110 (67.07 % of base) : 164890.dasm - Newtonsoft.Json.Utilities.EnumUtils:GetFlagsValues[short](short):System.Collections.Generic.IList`1[short] (FullOpts)
110 (66.27 % of base) : 164893.dasm - Newtonsoft.Json.Utilities.EnumUtils:GetFlagsValues[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float]):System.Collections.Generic.IList`1[System.Numerics.Vector`1[float]] (FullOpts)
110 (67.07 % of base) : 164889.dasm - Newtonsoft.Json.Utilities.EnumUtils:GetFlagsValues[ubyte](ubyte):System.Collections.Generic.IList`1[ubyte] (FullOpts)
110 (37.93 % of base) : 24750.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[double](int):double (FullOpts)
110 (38.46 % of base) : 24749.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[int](int):int (FullOpts)
110 (37.67 % of base) : 24752.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[long](int):long (FullOpts)
110 (37.93 % of base) : 24748.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[short](int):short (FullOpts)
110 (34.81 % of base) : 24751.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[System.Numerics.Vector`1[float]](int):System.Numerics.Vector`1[float] (FullOpts)
110 (38.46 % of base) : 24747.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[ubyte](int):ubyte (FullOpts)
72 (2.44 % of base) : 260021.dasm - System.Linq.Expressions.Expression:ValidateNewArgs(System.Reflection.ConstructorInfo,byref,byref) (FullOpts)
46 (2.41 % of base) : 128131.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanXmlStringUnQuoted():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
44 (5.71 % of base) : 105981.dasm - System.Xml.Schema.XmlSchemaValidator:GetExpectedAttributes():System.Xml.Schema.XmlSchemaAttribute[]:this (FullOpts)
36 (1.78 % of base) : 215694.dasm - Microsoft.CodeAnalysis.CodeGen.CompilationTestData:GetMethodsByName():System.Collections.Immutable.ImmutableDictionary`2[System.String,Microsoft.CodeAnalysis.CodeGen.CompilationTestData+MethodData]:this (FullOpts)
30 (7.11 % of base) : 143594.dasm - System.Reflection.Emit.EnumBuilderImpl:DefineLiteralCore(System.String,System.Object):System.Reflection.Emit.FieldBuilder:this (FullOpts)
30 (7.01 % of base) : 233563.dasm - Xunit.Sdk.CollectionException:FormatInnerException(System.Exception):System.String (FullOpts)
28 (11.76 % of base) : 143902.dasm - System.Reflection.Emit.TypeBuilderImpl:CreateTypeInfoCore():System.Reflection.TypeInfo:this (FullOpts)
Top method improvements (bytes):
-400 (-23.92 % of base) : 253566.dasm - System.CodeDom.Compiler.CodeGenerator:GenerateExpression(System.CodeDom.CodeExpression):this (FullOpts)
-240 (-10.06 % of base) : 76328.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:AppendUseSiteDiagnostics(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
-214 (-8.47 % of base) : 217968.dasm - Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers+<CreateAndInitializeDriverAsync>d__42:MoveNext():this (FullOpts)
-194 (-7.90 % of base) : 116766.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:AppendUseSiteInfo(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
-164 (-12.97 % of base) : 113075.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
-164 (-12.50 % of base) : 249345.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
-124 (-20.46 % of base) : 243708.dasm - System.Runtime.Serialization.Formatters.Binary.PrimitiveArray:.ctor(int,System.Array):this (FullOpts)
-108 (-36.73 % of base) : 112021.dasm - System.Xml.Serialization.XmlSchemas:ItemName(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
-102 (-7.70 % of base) : 111373.dasm - System.Xml.Serialization.SchemaObjectWriter:Write54_XmlSchemaSequence(System.Xml.Schema.XmlSchemaSequence):this (FullOpts)
-96 (-15.24 % of base) : 16378.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2520[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
-96 (-14.95 % of base) : 16385.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) : 166901.dasm - Newtonsoft.Json.JsonTextReader+<DoReadAsBytesAsync>d__42:MoveNext():this (FullOpts)
-68 (-17.09 % of base) : 87120.dasm - System.Data.XSDSchema:GetParticleItems(System.Xml.Schema.XmlSchemaParticle):System.Xml.Schema.XmlSchemaObjectCollection (FullOpts)
-64 (-8.18 % of base) : 25007.dasm - System.Runtime.InteropServices.Marshalling.ComVariant:As[System.__Canon]():System.__Canon:this (FullOpts)
-60 (-12.30 % of base) : 16551.dasm - Microsoft.FSharp.Core.LanguagePrimitives+GenericOneDynamicImplTable`1[System.__Canon]:.cctor() (FullOpts)
-60 (-12.35 % of base) : 16542.dasm - Microsoft.FSharp.Core.LanguagePrimitives+GenericZeroDynamicImplTable`1[System.__Canon]:.cctor() (FullOpts)
-58 (-15.76 % of base) : 104197.dasm - System.Xml.Schema.Compiler:CanonicalizeParticle(System.Xml.Schema.XmlSchemaParticle,ubyte):System.Xml.Schema.XmlSchemaParticle:this (FullOpts)
-50 (-34.25 % of base) : 111942.dasm - System.Xml.Serialization.XmlSchemaImporter:IsMixed(System.Xml.Schema.XmlSchemaType):ubyte (FullOpts)
-48 (-13.48 % of base) : 221438.dasm - System.Security.Cryptography.Xml.XmlDsigBase64Transform:LoadInput(System.Object):this (FullOpts)
-46 (-7.85 % of base) : 110902.dasm - System.Xml.Serialization.ContextAwareTables`1[System.__Canon]:GetOrCreateValue(System.Type,System.Func`2[System.__Canon,System.__Canon]):System.__Canon:this (FullOpts)
Top method regressions (percentages):
110 (67.07 % of base) : 164892.dasm - Newtonsoft.Json.Utilities.EnumUtils:GetFlagsValues[double](double):System.Collections.Generic.IList`1[double] (FullOpts)
110 (67.07 % of base) : 164891.dasm - Newtonsoft.Json.Utilities.EnumUtils:GetFlagsValues[int](int):System.Collections.Generic.IList`1[int] (FullOpts)
110 (67.07 % of base) : 164894.dasm - Newtonsoft.Json.Utilities.EnumUtils:GetFlagsValues[long](long):System.Collections.Generic.IList`1[long] (FullOpts)
110 (67.07 % of base) : 164890.dasm - Newtonsoft.Json.Utilities.EnumUtils:GetFlagsValues[short](short):System.Collections.Generic.IList`1[short] (FullOpts)
110 (67.07 % of base) : 164889.dasm - Newtonsoft.Json.Utilities.EnumUtils:GetFlagsValues[ubyte](ubyte):System.Collections.Generic.IList`1[ubyte] (FullOpts)
110 (66.27 % of base) : 164893.dasm - Newtonsoft.Json.Utilities.EnumUtils:GetFlagsValues[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float]):System.Collections.Generic.IList`1[System.Numerics.Vector`1[float]] (FullOpts)
110 (38.46 % of base) : 24749.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[int](int):int (FullOpts)
110 (38.46 % of base) : 24747.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[ubyte](int):ubyte (FullOpts)
110 (37.93 % of base) : 24750.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[double](int):double (FullOpts)
110 (37.93 % of base) : 24748.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[short](int):short (FullOpts)
110 (37.67 % of base) : 24752.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[long](int):long (FullOpts)
110 (34.81 % of base) : 24751.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[System.Numerics.Vector`1[float]](int):System.Numerics.Vector`1[float] (FullOpts)
28 (22.22 % of base) : 143941.dasm - System.Reflection.Emit.TypeBuilderImpl:get_UnderlyingSystemType():System.Type:this (FullOpts)
28 (11.76 % of base) : 143902.dasm - System.Reflection.Emit.TypeBuilderImpl:CreateTypeInfoCore():System.Reflection.TypeInfo:this (FullOpts)
112 (9.88 % of base) : 248778.dasm - System.Security.Cryptography.Pkcs.Asn1.PkiStatusInfo:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this (FullOpts)
28 (7.82 % of base) : 143912.dasm - System.Reflection.Emit.TypeBuilderImpl:DefineFieldCore(System.String,System.Type,System.Type[],System.Type[],int):System.Reflection.Emit.FieldBuilder:this (FullOpts)
30 (7.11 % of base) : 143594.dasm - System.Reflection.Emit.EnumBuilderImpl:DefineLiteralCore(System.String,System.Object):System.Reflection.Emit.FieldBuilder:this (FullOpts)
30 (7.01 % of base) : 233563.dasm - Xunit.Sdk.CollectionException:FormatInnerException(System.Exception):System.String (FullOpts)
44 (5.71 % of base) : 105981.dasm - System.Xml.Schema.XmlSchemaValidator:GetExpectedAttributes():System.Xml.Schema.XmlSchemaAttribute[]:this (FullOpts)
4 (4.55 % of base) : 197562.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
Top method improvements (percentages):
-28 (-51.85 % of base) : 277457.dasm - System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]:<GetMetadataViewProvider>b__1_0(System.Collections.Generic.IDictionary`2[System.String,System.Object]):System.__Canon:this (FullOpts)
-28 (-50.00 % of base) : 252417.dasm - CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]:<Cast>b__0():System.__Canon:this (FullOpts)
-22 (-47.83 % of base) : 16094.dasm - Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
-22 (-47.83 % of base) : 94296.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
-30 (-42.86 % of base) : 188790.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) : 255994.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) : 257685.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) : 256925.dasm - System.Collections.Immutable.ImmutableList`1+Builder[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
-26 (-37.14 % of base) : 25334.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) : 112021.dasm - System.Xml.Serialization.XmlSchemas:ItemName(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
-32 (-36.36 % of base) : 275212.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:CreateInstance[System.__Canon](System.IServiceProvider,System.Object[]):System.__Canon (FullOpts)
-32 (-36.36 % of base) : 163545.dasm - Newtonsoft.Json.JsonConvert:DeserializeObject[System.__Canon](System.String,Newtonsoft.Json.JsonSerializerSettings):System.__Canon (FullOpts)
-32 (-36.36 % of base) : 166309.dasm - Newtonsoft.Json.Linq.JToken:ToObject[System.__Canon](Newtonsoft.Json.JsonSerializer):System.__Canon:this (FullOpts)
-26 (-36.11 % of base) : 270101.dasm - Microsoft.Extensions.Hosting.Internal.ConfigureContainerAdapter`1[System.__Canon]:ConfigureContainer(Microsoft.Extensions.Hosting.HostBuilderContext,System.Object):this (FullOpts)
-26 (-36.11 % of base) : 255808.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) : 96424.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) : 96433.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) : 109198.dasm - System.Xml.Xsl.Runtime.XmlQuerySequence`1[System.__Canon]:System.Collections.IList.IndexOf(System.Object):int:this (FullOpts)
-28 (-35.90 % of base) : 47288.dasm - Microsoft.Diagnostics.Tracing.AutomatedAnalysis.Process:Equals(System.Object):ubyte:this (FullOpts)
-30 (-35.71 % of base) : 109197.dasm - System.Xml.Xsl.Runtime.XmlQuerySequence`1[System.__Canon]:System.Collections.IList.Contains(System.Object):ubyte:this (FullOpts)
libraries_tests.run.linux.arm.Release.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 211844980 (overridden on cmd)
Total bytes of diff: 211891224 (overridden on cmd)
Total bytes of delta: 46244 (0.02 % of base)
diff is a regression.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
498 : 434486.dasm (19.32 % of base)
448 : 472922.dasm (4.30 % of base)
436 : 330779.dasm (4.32 % of base)
350 : 251122.dasm (3.54 % of base)
336 : 297334.dasm (3.27 % of base)
336 : 434373.dasm (13.53 % of base)
326 : 489556.dasm (3.19 % of base)
292 : 199864.dasm (2.76 % of base)
272 : 432315.dasm (13.70 % of base)
268 : 435314.dasm (15.12 % of base)
266 : 475375.dasm (2.60 % of base)
264 : 700225.dasm (2.61 % of base)
256 : 432791.dasm (10.16 % of base)
248 : 374257.dasm (2.47 % of base)
244 : 366267.dasm (2.18 % of base)
224 : 217055.dasm (2.21 % of base)
214 : 566623.dasm (2.05 % of base)
212 : 576636.dasm (37.06 % of base)
194 : 718258.dasm (2.04 % of base)
180 : 380959.dasm (1.95 % of base)
Top file improvements (bytes):
-286 : 178033.dasm (-8.99 % of base)
-258 : 518153.dasm (-6.24 % of base)
-218 : 434978.dasm (-12.84 % of base)
-216 : 435006.dasm (-13.20 % of base)
-198 : 432555.dasm (-10.53 % of base)
-184 : 434986.dasm (-14.42 % of base)
-182 : 91871.dasm (-10.86 % of base)
-180 : 144761.dasm (-10.80 % of base)
-174 : 61172.dasm (-10.93 % of base)
-164 : 68353.dasm (-4.80 % of base)
-162 : 172983.dasm (-4.78 % of base)
-162 : 182958.dasm (-4.78 % of base)
-140 : 434974.dasm (-7.99 % of base)
-126 : 159368.dasm (-9.89 % of base)
-126 : 18883.dasm (-10.02 % of base)
-104 : 395962.dasm (-5.90 % of base)
-96 : 316948.dasm (-0.85 % of base)
-94 : 504197.dasm (-7.83 % of base)
-94 : 434146.dasm (-7.63 % of base)
-92 : 435000.dasm (-10.11 % of base)
90 total files with Code Size differences (52 improved, 38 regressed), 20 unchanged.
Top method regressions (bytes):
498 (19.32 % of base) : 434486.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderInt32Array:Read1_ArrayOfArrayOfInt():System.Object:this (Tier0-FullOpts)
448 (4.30 % of base) : 472922.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
436 (4.32 % of base) : 330779.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
350 (3.54 % of base) : 251122.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
336 (13.53 % of base) : 434373.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderTypeWithArrayPropertyHavingChoice:Read3_Item(ubyte,ubyte):SerializationTypes.TypeWithArrayPropertyHavingChoice:this (Tier0-FullOpts)
336 (3.27 % of base) : 297334.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
326 (3.19 % of base) : 489556.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
292 (2.76 % of base) : 199864.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
272 (13.70 % of base) : 432315.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderOrchestra:Read5_Orchestra(ubyte,ubyte):Orchestra:this (Tier0-FullOpts)
268 (15.12 % of base) : 435314.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1:Read2_Item(ubyte,ubyte):XmlMembersMappingTypeHavingIntArray:this (Tier0-FullOpts)
266 (2.60 % of base) : 475375.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
264 (2.61 % of base) : 700225.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
256 (10.16 % of base) : 432791.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderPurchaseOrder:Read4_PurchaseOrder(ubyte,ubyte):PurchaseOrder:this (Tier0-FullOpts)
248 (2.47 % of base) : 374257.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
244 (2.18 % of base) : 366267.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
224 (2.21 % of base) : 217055.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
214 (2.05 % of base) : 566623.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
212 (37.06 % of base) : 576636.dasm - System.Reflection.Emit.RuntimeTypeBuilder:DefineFieldCore(System.String,System.Type,System.Type[],System.Type[],int):System.Reflection.Emit.FieldBuilder:this (Tier1)
194 (2.04 % of base) : 718258.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
180 (1.95 % of base) : 380959.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
Top method improvements (bytes):
-286 (-8.99 % of base) : 178033.dasm - Microsoft.CodeAnalysis.CSharp.RefSafetyAnalysis:GetValEscape(Microsoft.CodeAnalysis.CSharp.BoundExpression,uint):uint:this (Tier1)
-258 (-6.24 % of base) : 518153.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)
-218 (-12.84 % of base) : 434978.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) : 435006.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write28_XmlSchemaSimpleTypeRestriction(System.String,System.String,System.Xml.Schema.XmlSchemaSimpleTypeRestriction,ubyte,ubyte):this (Tier0-FullOpts)
-198 (-10.53 % of base) : 432555.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) : 434986.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write57_Item(System.String,System.String,System.Xml.Schema.XmlSchemaComplexContentExtension,ubyte,ubyte):this (Tier0-FullOpts)
-182 (-10.86 % of base) : 91871.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)
-180 (-10.80 % of base) : 144761.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:AppendUseSiteDiagnostics(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,byref):ubyte (Tier0-FullOpts)
-174 (-10.93 % of base) : 61172.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) : 68353.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) : 172983.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) : 182958.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) : 434974.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write51_XmlSchemaElement(System.String,System.String,System.Xml.Schema.XmlSchemaElement,ubyte,ubyte):this (Tier0-FullOpts)
-126 (-9.89 % of base) : 159368.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:AppendUseSiteDiagnostics(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,byref):ubyte (Tier0-FullOpts)
-126 (-10.02 % of base) : 18883.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:AppendUseSiteDiagnostics(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,byref):ubyte (Tier0-FullOpts)
-104 (-5.90 % of base) : 395962.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1)
-96 (-0.85 % of base) : 316948.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
-94 (-7.63 % of base) : 434146.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterAliasedTestType:Write2_AliasedTestType(System.String,System.String,AliasedTestType,ubyte,ubyte):this (Tier0-FullOpts)
-94 (-7.83 % of base) : 504197.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write54_XmlSchemaChoice(System.String,System.String,System.Xml.Schema.XmlSchemaChoice,ubyte,ubyte):this (Tier0-FullOpts)
-92 (-10.11 % of base) : 435000.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write31_XmlSchemaSimpleType(System.String,System.String,System.Xml.Schema.XmlSchemaSimpleType,ubyte,ubyte):this (Tier0-FullOpts)
Top method regressions (percentages):
110 (107.84 % of base) : 229143.dasm - System.Collections.Tests.List_Generic_Tests`1+<>c[System.__Canon]:<Find_VerifyVanilla>b__59_1(System.__Canon):ubyte:this (Tier1)
44 (37.93 % of base) : 472906.dasm - System.Type:op_Equality(System.Type,System.Type):ubyte (Tier1)
212 (37.06 % of base) : 576636.dasm - System.Reflection.Emit.RuntimeTypeBuilder:DefineFieldCore(System.String,System.Type,System.Type[],System.Type[],int):System.Reflection.Emit.FieldBuilder:this (Tier1)
156 (34.36 % of base) : 576637.dasm - System.Reflection.Emit.RuntimeTypeBuilder:IsSubclassOf(System.Type):ubyte:this (Tier1)
112 (24.45 % of base) : 553688.dasm - System.Formats.Asn1.AsnWriter:WriteNamedBitList[int](int,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (Tier1)
114 (21.51 % of base) : 553687.dasm - System.Security.Cryptography.X509Certificates.ManagedX509ExtensionProcessor:EncodeX509KeyUsageExtension(int):ubyte[]:this (Tier1)
32 (20.51 % of base) : 497533.dasm - System.Type:get_IsSerializable():ubyte:this (Tier1)
78 (20.10 % of base) : 191123.dasm - Microsoft.VisualBasic.CompilerServices.ConversionResolution:ClassifyConversion(System.Type,System.Type,byref):byte (Tier1)
106 (20.08 % of base) : 431442.dasm - System.Reflection.Emit.RuntimeTypeBuilder:IsSubclassOf(System.Type):ubyte:this (Tier1)
104 (19.70 % of base) : 519571.dasm - System.Reflection.Emit.RuntimeTypeBuilder:IsSubclassOf(System.Type):ubyte:this (Tier1)
498 (19.32 % of base) : 434486.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderInt32Array:Read1_ArrayOfArrayOfInt():System.Object:this (Tier0-FullOpts)
80 (18.60 % of base) : 431499.dasm - System.Reflection.RuntimeModule:ConvertToTypeHandleArray(System.Type[]):System.RuntimeTypeHandle[] (Tier1)
56 (18.30 % of base) : 630344.dasm - System.Linq.Expressions.ConditionalExpression:Make(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Type):System.Linq.Expressions.ConditionalExpression (Tier1)
40 (17.09 % of base) : 355748.dasm - System.Linq.Enumerable:Concat[System.Nullable`1[int]](System.Collections.Generic.IEnumerable`1[System.Nullable`1[int]],System.Collections.Generic.IEnumerable`1[System.Nullable`1[int]]):System.Collections.Generic.IEnumerable`1[System.Nullable`1[int]] (Tier1)
24 (16.90 % of base) : 605037.dasm - System.Text.Json.JsonSerializer:ValidateInputType(System.Object,System.Type) (Tier1)
24 (16.90 % of base) : 626144.dasm - System.Text.Json.JsonSerializer:ValidateInputType(System.Object,System.Type) (Tier1)
18 (16.67 % of base) : 508287.dasm - System.ComponentModel.AttributeCollection:Contains(System.Attribute):ubyte:this (Tier1)
110 (16.22 % of base) : 553689.dasm - System.Formats.Asn1.AsnWriter:WriteNamedBitList(System.Nullable`1[System.Formats.Asn1.Asn1Tag],System.Type,System.Enum):this (Tier1)
66 (16.18 % of base) : 282062.dasm - System.Dynamic.Utils.TypeUtils:HasReferenceEquality(System.Type,System.Type):ubyte (Tier1)
40 (16.00 % of base) : 660410.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder:GetSmallestSourceLocationOrNull(Microsoft.CodeAnalysis.CSharp.Symbol):Microsoft.CodeAnalysis.Location:this (Tier0-FullOpts)
Top method improvements (percentages):
-22 (-47.83 % of base) : 596078.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
-22 (-47.83 % of base) : 624167.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
-28 (-41.18 % of base) : 332151.dasm - System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]:<StartAsyncOperation>b__11_1(System.Object):this (Tier1)
-32 (-41.03 % of base) : 1313.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-20 (-40.00 % of base) : 59981.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (Tier1)
-28 (-40.00 % of base) : 130734.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
-40 (-39.22 % of base) : 435555.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) : 123715.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:CreateInstance[System.__Canon](System.IServiceProvider,System.Object[]):System.__Canon (Tier1)
-32 (-36.36 % of base) : 621113.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
-32 (-36.36 % of base) : 100542.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.ParameterInfo,ubyte):System.__Canon (Tier1)
-30 (-34.88 % of base) : 617701.dasm - System.Text.Json.Serialization.Tests.StructDictionary`2[System.__Canon,System.Text.Json.JsonElement]:Contains(System.Object):ubyte:this (Tier1)
-30 (-34.88 % of base) : 627099.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) : 576402.dasm - Moq.Mock`1[System.__Canon]:get_Object():System.__Canon:this (Tier1)
-24 (-30.77 % of base) : 62698.dasm - Xunit.Assert:IsAssignableFrom[System.__Canon](System.Object):System.__Canon (Tier1)
-24 (-30.77 % of base) : 122791.dasm - Xunit.Assert:IsType[System.__Canon](System.Object):System.__Canon (Tier1)
-22 (-29.73 % of base) : 149280.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) : 109084.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) : 122746.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) : 617211.dasm - System.Text.Json.Serialization.Converters.ConcurrentStackOfTConverter`2[System.__Canon,int]:Add(byref,byref):this (Tier1)
-20 (-26.32 % of base) : 605738.dasm - System.Text.Json.Serialization.Converters.QueueOfTConverter`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: 76532706 (overridden on cmd)
Total bytes of diff: 76526744 (overridden on cmd)
Total bytes of delta: -5962 (-0.01 % of base)
diff is a regression.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
494 : 167039.dasm (19.36 % of base)
336 : 166987.dasm (13.69 % of base)
272 : 166105.dasm (13.70 % of base)
272 : 167498.dasm (15.58 % of base)
256 : 166304.dasm (10.48 % of base)
218 : 180156.dasm (22.43 % of base)
152 : 209557.dasm (35.51 % of base)
152 : 209798.dasm (35.51 % of base)
148 : 207559.dasm (32.03 % of base)
128 : 139332.dasm (10.03 % of base)
128 : 167061.dasm (3.38 % of base)
126 : 166047.dasm (4.12 % of base)
126 : 166735.dasm (4.12 % of base)
116 : 166734.dasm (2.79 % of base)
116 : 115461.dasm (11.44 % of base)
116 : 166046.dasm (2.79 % of base)
116 : 115428.dasm (10.88 % of base)
116 : 166911.dasm (4.35 % of base)
114 : 115423.dasm (20.36 % of base)
114 : 115443.dasm (18.75 % of base)
Top file improvements (bytes):
-400 : 62266.dasm (-23.92 % of base)
-266 : 305645.dasm (-5.03 % of base)
-234 : 207883.dasm (-5.18 % of base)
-220 : 167306.dasm (-13.41 % of base)
-218 : 167300.dasm (-12.84 % of base)
-202 : 16103.dasm (-12.63 % of base)
-202 : 16159.dasm (-12.78 % of base)
-202 : 166189.dasm (-10.73 % of base)
-200 : 8216.dasm (-8.35 % of base)
-186 : 2977.dasm (-7.23 % of base)
-182 : 22964.dasm (-7.76 % of base)
-178 : 14526.dasm (-16.79 % of base)
-158 : 167302.dasm (-12.64 % of base)
-148 : 23285.dasm (-8.49 % of base)
-140 : 51168.dasm (-6.98 % of base)
-138 : 45318.dasm (-6.91 % of base)
-138 : 204195.dasm (-11.46 % of base)
-134 : 6473.dasm (-6.75 % of base)
-122 : 204182.dasm (-9.47 % of base)
-120 : 167298.dasm (-6.96 % of base)
91 total files with Code Size differences (55 improved, 36 regressed), 17 unchanged.
Top method regressions (bytes):
494 (19.36 % of base) : 167039.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderInt32Array:Read1_ArrayOfArrayOfInt():System.Object:this (FullOpts)
336 (13.69 % of base) : 166987.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderTypeWithArrayPropertyHavingChoice:Read3_Item(ubyte,ubyte):SerializationTypes.TypeWithArrayPropertyHavingChoice:this (FullOpts)
272 (15.58 % of base) : 167498.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1:Read2_Item(ubyte,ubyte):XmlMembersMappingTypeHavingIntArray:this (FullOpts)
272 (13.70 % of base) : 166105.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderOrchestra:Read5_Orchestra(ubyte,ubyte):Orchestra:this (FullOpts)
256 (10.48 % of base) : 166304.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderPurchaseOrder:Read4_PurchaseOrder(ubyte,ubyte):PurchaseOrder:this (FullOpts)
218 (22.43 % of base) : 180156.dasm - System.Reflection.Emit.Tests.TypeBuilderDefineEvent:DefineEvent_CalledMultipleTimes_Works():this (FullOpts)
152 (35.51 % of base) : 209798.dasm - System.Tests.Int32Tests_GenericMath:CreateCheckedFromIntPtrTest() (FullOpts)
152 (35.51 % of base) : 209557.dasm - System.Tests.UInt32Tests_GenericMath:CreateCheckedFromUIntPtrTest() (FullOpts)
148 (32.03 % of base) : 207559.dasm - System.Tests.Int64Tests_GenericMath:CreateCheckedFromUIntPtrTest() (FullOpts)
128 (3.38 % of base) : 167061.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderInt32Array:Read1_ArrayOfArrayOfArrayOfInt():System.Object:this (FullOpts)
128 (10.03 % of base) : 139332.dasm - System.Linq.Tests.ToLookupTests+<DebuggerAttributesValid_Data>d__25:MoveNext():ubyte:this (FullOpts)
126 (4.12 % of base) : 166047.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderXmlSerializerAttributes:Read2_Object(ubyte,ubyte):System.Object:this (FullOpts)
126 (4.12 % of base) : 166735.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderXmlSerializerAttributes:Read2_Object(ubyte,ubyte):System.Object:this (FullOpts)
116 (4.35 % of base) : 166911.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderTypeWith2DArrayProperty2:Read3_TypeWith2DArrayProperty2(ubyte,ubyte):SerializationTypes.TypeWith2DArrayProperty2:this (FullOpts)
116 (2.79 % of base) : 166734.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderXmlSerializerAttributes:Read3_XmlSerializerAttributes(ubyte,ubyte):SerializationTypes.XmlSerializerAttributes:this (FullOpts)
116 (2.79 % of base) : 166046.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderXmlSerializerAttributes:Read3_XmlSerializerAttributes(ubyte,ubyte):SerializationTypes.XmlSerializerAttributes:this (FullOpts)
116 (11.44 % of base) : 115461.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList:VerifyWriteNamedBitList_Generic(int) (FullOpts)
116 (10.88 % of base) : 115428.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList:VerifyWriteNamedBitList_Generic_WithTag(int) (FullOpts)
114 (20.36 % of base) : 115423.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList:VerifyWriteNamedBitList(int,System.String,System.Enum) (FullOpts)
114 (18.75 % of base) : 115443.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList:VerifyWriteNamedBitList_WithTag(int,System.String,System.Enum) (FullOpts)
Top method improvements (bytes):
-400 (-23.92 % of base) : 62266.dasm - System.CodeDom.Compiler.CodeGenerator:GenerateExpression(System.CodeDom.CodeExpression):this (FullOpts)
-266 (-5.03 % of base) : 305645.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) : 207883.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) : 167306.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) : 167300.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write59_XmlSchemaComplexType(System.String,System.String,System.Xml.Schema.XmlSchemaComplexType,ubyte,ubyte):this (FullOpts)
-202 (-12.63 % of base) : 16103.dasm - Microsoft.CodeAnalysis.ProjectDependencyGraph:GetProjectsThatThisProjectTransitivelyDependsOn_NoLock(Microsoft.CodeAnalysis.ProjectId):System.Collections.Immutable.ImmutableHashSet`1[Microsoft.CodeAnalysis.ProjectId]:this (FullOpts)
-202 (-12.78 % of base) : 16159.dasm - Microsoft.CodeAnalysis.ProjectDependencyGraph:GetProjectsThatTransitivelyDependOnThisProject_NoLock(Microsoft.CodeAnalysis.ProjectId):System.Collections.Immutable.ImmutableHashSet`1[Microsoft.CodeAnalysis.ProjectId]:this (FullOpts)
-202 (-10.73 % of base) : 166189.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write63_XmlSchema(System.String,System.String,System.Xml.Schema.XmlSchema,ubyte,ubyte):this (FullOpts)
-200 (-8.35 % of base) : 8216.dasm - Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers+<CreateAndInitializeDriverAsync>d__41:MoveNext():this (FullOpts)
-186 (-7.23 % of base) : 2977.dasm - Microsoft.VisualStudio.Composition.CompositionConfiguration:ComputeSharingBoundaryMetadata(System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.CompositionConfiguration+PartBuilder]):System.Collections.Immutable.ImmutableDictionary`2[System.String,Microsoft.VisualStudio.Composition.CompositionConfiguration+SharingBoundaryMetadata] (FullOpts)
-182 (-7.76 % of base) : 22964.dasm - Microsoft.CodeAnalysis.FindSymbols.DependentTypeFinder+<GetProjectsThatCouldReferenceTypeAsync>d__10:MoveNext():this (FullOpts)
-178 (-16.79 % of base) : 14526.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) : 167302.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write57_Item(System.String,System.String,System.Xml.Schema.XmlSchemaComplexContentExtension,ubyte,ubyte):this (FullOpts)
-148 (-8.49 % of base) : 23285.dasm - Microsoft.CodeAnalysis.FindSymbols.FindReferencesSearchEngine:GetProjectsToSearchAsync(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISymbol],System.Threading.CancellationToken):System.Threading.Tasks.Task`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Project]]:this (FullOpts)
-140 (-6.98 % of base) : 51168.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:AppendUseSiteDiagnostics(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
-138 (-6.91 % of base) : 45318.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:AppendUseSiteDiagnostics(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
-138 (-11.46 % of base) : 204195.dasm - System.Tests.ArrayTests:Sort_Array_Generic[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon[]) (FullOpts)
-134 (-6.75 % of base) : 6473.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:AppendUseSiteDiagnostics(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
-122 (-9.47 % of base) : 204182.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) : 167298.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write51_XmlSchemaElement(System.String,System.String,System.Xml.Schema.XmlSchemaElement,ubyte,ubyte):this (FullOpts)
Top method regressions (percentages):
30 (88.24 % of base) : 95719.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0:<Insert>b__2():this (FullOpts)
26 (43.33 % of base) : 92381.dasm - System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
26 (43.33 % of base) : 93602.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
110 (37.41 % of base) : 189305.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[System.Runtime.InteropServices.Tests.PtrToStructureTests+SomeTestStruct](int):System.Runtime.InteropServices.Tests.PtrToStructureTests+SomeTestStruct (FullOpts)
152 (35.51 % of base) : 209798.dasm - System.Tests.Int32Tests_GenericMath:CreateCheckedFromIntPtrTest() (FullOpts)
152 (35.51 % of base) : 209557.dasm - System.Tests.UInt32Tests_GenericMath:CreateCheckedFromUIntPtrTest() (FullOpts)
148 (32.03 % of base) : 207559.dasm - System.Tests.Int64Tests_GenericMath:CreateCheckedFromUIntPtrTest() (FullOpts)
112 (24.67 % of base) : 115421.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass5_0:<VerifyWriteNamedBitList_FlagsEnumRequired>b__2():this (FullOpts)
112 (24.45 % of base) : 115417.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass5_0:<VerifyWriteNamedBitList_FlagsEnumRequired>b__0():this (FullOpts)
218 (22.43 % of base) : 180156.dasm - System.Reflection.Emit.Tests.TypeBuilderDefineEvent:DefineEvent_CalledMultipleTimes_Works():this (FullOpts)
28 (22.22 % of base) : 180069.dasm - System.Reflection.Emit.TypeBuilderImpl:get_UnderlyingSystemType():System.Type:this (FullOpts)
112 (21.37 % of base) : 115959.dasm - System.Formats.Asn1.AsnWriter:WriteEnumeratedValue[byte](byte,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (FullOpts)
112 (21.37 % of base) : 115944.dasm - System.Formats.Asn1.AsnWriter:WriteEnumeratedValue[int](int,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (FullOpts)
112 (21.37 % of base) : 115953.dasm - System.Formats.Asn1.AsnWriter:WriteEnumeratedValue[short](short,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (FullOpts)
112 (21.37 % of base) : 115948.dasm - System.Formats.Asn1.AsnWriter:WriteEnumeratedValue[ubyte](ubyte,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (FullOpts)
112 (21.37 % of base) : 115941.dasm - System.Formats.Asn1.AsnWriter:WriteEnumeratedValue[uint](uint,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (FullOpts)
112 (21.37 % of base) : 115951.dasm - System.Formats.Asn1.AsnWriter:WriteEnumeratedValue[ushort](ushort,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (FullOpts)
112 (21.37 % of base) : 115398.dasm - System.Security.Cryptography.X509Certificates.ManagedX509ExtensionProcessor:EncodeX509KeyUsageExtension(int):ubyte[]:this (FullOpts)
110 (20.52 % of base) : 115956.dasm - System.Formats.Asn1.AsnWriter:WriteEnumeratedValue[long](long,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (FullOpts)
110 (20.52 % of base) : 115967.dasm - System.Formats.Asn1.AsnWriter:WriteEnumeratedValue[ulong](ulong,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (FullOpts)
Top method improvements (percentages):
-28 (-51.85 % of base) : 87825.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) : 133585.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) : 42664.dasm - Microsoft.CodeAnalysis.Options.Option`1[System.__Canon]:Microsoft.CodeAnalysis.Options.IOption.get_DefaultValue():System.Object:this (FullOpts)
-28 (-50.00 % of base) : 48297.dasm - Microsoft.CodeAnalysis.Options.Option`1[System.__Canon]:Microsoft.CodeAnalysis.Options.IOption.get_DefaultValue():System.Object:this (FullOpts)
-28 (-50.00 % of base) : 42660.dasm - Microsoft.CodeAnalysis.Options.Option2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
-28 (-50.00 % of base) : 48290.dasm - Microsoft.CodeAnalysis.Options.Option2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
-28 (-50.00 % of base) : 42656.dasm - Microsoft.CodeAnalysis.Options.PerLanguageOption2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
-28 (-50.00 % of base) : 48292.dasm - Microsoft.CodeAnalysis.Options.PerLanguageOption2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
-22 (-47.83 % of base) : 35741.dasm - LamarCodeGeneration.Util.TypeExtensions:As[System.__Canon](System.Object):System.__Canon (FullOpts)
-22 (-47.83 % of base) : 142114.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
-20 (-43.48 % of base) : 30420.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) : 194934.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) : 194936.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) : 70422.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,int]:System.Collections.IDictionary.Remove(System.Object):this (FullOpts)
-30 (-41.67 % of base) : 70896.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,int]:System.Collections.IDictionary.Remove(System.Object):this (FullOpts)
-28 (-41.18 % of base) : 98544.dasm - System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]:<StartAsyncOperation>b__11_1(System.Object):this (FullOpts)
-40 (-39.22 % of base) : 165342.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) : 186860.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) : 39590.dasm - Microsoft.Extensions.Hosting.Internal.ConfigureContainerAdapter`1[System.__Canon]:ConfigureContainer(Microsoft.Extensions.Hosting.HostBuilderContext,System.Object):this (FullOpts)
-26 (-36.11 % of base) : 67306.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
realworld.run.linux.arm.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 10176194 (overridden on cmd)
Total bytes of diff: 10173876 (overridden on cmd)
Total bytes of delta: -2318 (-0.02 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
36 : 20912.dasm (2.64 % of base)
28 : 17574.dasm (0.72 % of base)
18 : 2647.dasm (1.10 % of base)
18 : 115.dasm (1.10 % of base)
18 : 16241.dasm (1.10 % of base)
18 : 16085.dasm (1.10 % of base)
10 : 36091.dasm (2.60 % of base)
6 : 33756.dasm (0.35 % of base)
6 : 13998.dasm (2.36 % of base)
2 : 30109.dasm (0.24 % of base)
Top file improvements (bytes):
-138 : 24643.dasm (-6.91 % of base)
-62 : 37661.dasm (-22.79 % of base)
-52 : 37297.dasm (-3.02 % of base)
-44 : 37763.dasm (-20.37 % of base)
-42 : 8591.dasm (-1.10 % of base)
-40 : 36131.dasm (-8.58 % of base)
-38 : 37320.dasm (-23.46 % of base)
-36 : 14910.dasm (-18.18 % of base)
-36 : 10813.dasm (-6.36 % of base)
-36 : 32573.dasm (-5.41 % of base)
-36 : 9430.dasm (-27.69 % of base)
-32 : 435.dasm (-41.03 % of base)
-30 : 37690.dasm (-28.30 % of base)
-30 : 7667.dasm (-2.07 % of base)
-30 : 5907.dasm (-19.23 % of base)
-30 : 773.dasm (-20.55 % of base)
-28 : 10764.dasm (-24.56 % of base)
-28 : 35854.dasm (-15.56 % of base)
-28 : 35944.dasm (-51.85 % of base)
-28 : 5579.dasm (-27.45 % of base)
57 total files with Code Size differences (47 improved, 10 regressed), 5 unchanged.
Top method regressions (bytes):
36 (2.64 % of base) : 20912.dasm - Microsoft.CodeAnalysis.CSharp.CSharpParseOptions:.ctor(int,ubyte,int,System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Generic.IReadOnlyDictionary`2[System.String,System.String]):this (FullOpts)
28 (0.72 % of base) : 17574.dasm - Microsoft.ML.Data.TextLoader+Bindings:.ctor(Microsoft.ML.Data.TextLoader,Microsoft.ML.Data.TextLoader+Column[],Microsoft.ML.Data.IMultiStreamSource,Microsoft.ML.Data.IMultiStreamSource):this (FullOpts)
18 (1.10 % of base) : 2647.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
18 (1.10 % of base) : 115.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
18 (1.10 % of base) : 16241.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
18 (1.10 % of base) : 16085.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
10 (2.60 % of base) : 36091.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]:<.cctor>b__4_0(System.Object):this (FullOpts)
6 (2.36 % of base) : 13998.dasm - FSharp.Compiler.SyntaxTreeOps:unionBindingAndMembers(Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynMemberDefn]):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding] (FullOpts)
6 (0.35 % of base) : 33756.dasm - Microsoft.Cci.MetadataWriter:PopulateDeclSecurityTableRowsFor(System.Reflection.Metadata.EntityHandle,System.Collections.Generic.IEnumerable`1[Microsoft.Cci.SecurityAttribute]):this (FullOpts)
2 (0.24 % of base) : 30109.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitAwaitableInfo(Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
Top method improvements (bytes):
-138 (-6.91 % of base) : 24643.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:AppendUseSiteDiagnostics(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
-62 (-22.79 % of base) : 37661.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) : 37297.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) : 37763.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) : 8591.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) : 36131.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) : 37320.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) : 10813.dasm - FSharp.Compiler.CheckDeclarations+TcDeclarations:SplitTyconDefn(FSharp.Compiler.Syntax.SynTypeDefn):System.Tuple`2[FSharp.Compiler.CheckDeclarations+MutRecDefnsPhase1DataForTycon,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynMemberDefn]] (FullOpts)
-36 (-18.18 % of base) : 14910.dasm - FSharp.Compiler.CompilerDiagnostics:GetWarningLevel(FSharp.Compiler.ErrorLogger+PhasedDiagnostic):int (FullOpts)
-36 (-27.69 % of base) : 9430.dasm - FSharp.Compiler.TypedTreeOps:targetOfSuccessDecisionTree(FSharp.Compiler.TypedTree+DecisionTree):Microsoft.FSharp.Core.FSharpOption`1[int] (FullOpts)
-36 (-5.41 % of base) : 32573.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) : 7667.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) : 37690.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`1[System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-30 (-19.23 % of base) : 5907.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)
-28 (-27.45 % of base) : 5579.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) : 10764.dasm - FSharp.Compiler.TypedTreeBasics:ccuOfTyconRef(FSharp.Compiler.TypedTree+EntityRef):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk] (FullOpts)
-28 (-23.73 % of base) : 10394.dasm - FSharp.Compiler.TypedTreeOps:remapAttribKind(FSharp.Compiler.TypedTreeOps+Remap,FSharp.Compiler.TypedTree+AttribKind):FSharp.Compiler.TypedTree+AttribKind (FullOpts)
-28 (-15.56 % of base) : 35854.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)
Top method regressions (percentages):
36 (2.64 % of base) : 20912.dasm - Microsoft.CodeAnalysis.CSharp.CSharpParseOptions:.ctor(int,ubyte,int,System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Generic.IReadOnlyDictionary`2[System.String,System.String]):this (FullOpts)
10 (2.60 % of base) : 36091.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]:<.cctor>b__4_0(System.Object):this (FullOpts)
6 (2.36 % of base) : 13998.dasm - FSharp.Compiler.SyntaxTreeOps:unionBindingAndMembers(Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynMemberDefn]):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding] (FullOpts)
18 (1.10 % of base) : 2647.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
18 (1.10 % of base) : 115.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
18 (1.10 % of base) : 16241.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
18 (1.10 % of base) : 16085.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
28 (0.72 % of base) : 17574.dasm - Microsoft.ML.Data.TextLoader+Bindings:.ctor(Microsoft.ML.Data.TextLoader,Microsoft.ML.Data.TextLoader+Column[],Microsoft.ML.Data.IMultiStreamSource,Microsoft.ML.Data.IMultiStreamSource):this (FullOpts)
6 (0.35 % of base) : 33756.dasm - Microsoft.Cci.MetadataWriter:PopulateDeclSecurityTableRowsFor(System.Reflection.Metadata.EntityHandle,System.Collections.Generic.IEnumerable`1[Microsoft.Cci.SecurityAttribute]):this (FullOpts)
2 (0.24 % of base) : 30109.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) : 35944.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) : 35157.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
-30 (-28.30 % of base) : 37690.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`1[System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-36 (-27.69 % of base) : 9430.dasm - FSharp.Compiler.TypedTreeOps:targetOfSuccessDecisionTree(FSharp.Compiler.TypedTree+DecisionTree):Microsoft.FSharp.Core.FSharpOption`1[int] (FullOpts)
-28 (-27.45 % of base) : 5579.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) : 10764.dasm - FSharp.Compiler.TypedTreeBasics:ccuOfTyconRef(FSharp.Compiler.TypedTree+EntityRef):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk] (FullOpts)
-28 (-23.73 % of base) : 10394.dasm - FSharp.Compiler.TypedTreeOps:remapAttribKind(FSharp.Compiler.TypedTreeOps+Remap,FSharp.Compiler.TypedTree+AttribKind):FSharp.Compiler.TypedTree+AttribKind (FullOpts)
-18 (-23.68 % of base) : 23503.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
-38 (-23.46 % of base) : 37320.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) : 37661.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) : 21777.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) : 37763.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) : 5907.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)
-36 (-18.18 % of base) : 14910.dasm - FSharp.Compiler.CompilerDiagnostics:GetWarningLevel(FSharp.Compiler.ErrorLogger+PhasedDiagnostic):int (FullOpts)
-22 (-17.46 % of base) : 37325.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) : 21481.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
-26 (-16.25 % of base) : 37293.dasm - System.Management.Automation.LanguagePrimitives:ConvertTo[System.__Canon](System.Object):System.__Canon (FullOpts)
windows x86
Diffs are based on 2,168,453 contexts (839,658 MinOpts, 1,328,795 FullOpts).
MISSED contexts: base: 45 (0.00%), diff: 125,043 (5.45%)
Overall (+32,962 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.windows.x86.checked.mch |
5,993,081 |
-607 |
benchmarks.run_pgo.windows.x86.checked.mch |
28,623,124 |
-12,075 |
benchmarks.run_tiered.windows.x86.checked.mch |
8,552,866 |
-505 |
coreclr_tests.run.windows.x86.checked.mch |
291,617,193 |
+67,598 |
libraries.crossgen2.windows.x86.checked.mch |
31,700,815 |
-29,760 |
libraries.pmi.windows.x86.checked.mch |
36,478,439 |
-8,621 |
libraries_tests.run.windows.x86.Release.mch |
160,677,288 |
+27,801 |
librariestestsnotieredcompilation.run.windows.x86.Release.mch |
89,509,872 |
-8,447 |
realworld.run.windows.x86.checked.mch |
7,942,301 |
-2,422 |
FullOpts (+32,962 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.windows.x86.checked.mch |
5,992,800 |
-607 |
benchmarks.run_pgo.windows.x86.checked.mch |
22,034,493 |
-12,075 |
benchmarks.run_tiered.windows.x86.checked.mch |
4,283,045 |
-505 |
coreclr_tests.run.windows.x86.checked.mch |
89,829,059 |
+67,598 |
libraries.crossgen2.windows.x86.checked.mch |
31,699,755 |
-29,760 |
libraries.pmi.windows.x86.checked.mch |
36,383,206 |
-8,621 |
libraries_tests.run.windows.x86.Release.mch |
62,403,588 |
+27,801 |
librariestestsnotieredcompilation.run.windows.x86.Release.mch |
80,829,808 |
-8,447 |
realworld.run.windows.x86.checked.mch |
7,646,587 |
-2,422 |
Example diffs
benchmarks.run.windows.x86.checked.mch
-14 (-41.18%) : 7181.dasm - System.Collections.ContainsKeyTrue`2+<>c[System.Canon,System.Canon]:b10_1(System.Canon):System.__Canon:this (FullOpts)
@@ -2,51 +2,35 @@
; Emitting BLENDED_CODE for X86 with AVX512 - Windows
; FullOpts code
; optimized code
-; ebp based frame
+; esp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 2.25) ref -> esi this class-hnd single-def <System.Collections.ContainsKeyTrue`2+<>c[System.__Canon,System.__Canon]>
-; V01 arg1 [V01,T01] ( 4, 3.12) ref -> edx class-hnd single-def <System.__Canon>
-; V02 tmp0 [V02,T03] ( 3, 1.25) int -> ecx "fgMakeTemp is creating a new local variable"
-; V03 tmp1 [V03,T00] ( 5, 6.75) ref -> eax class-hnd "spilling QMark2" <System.__Canon>
+; V00 this [V00,T00] ( 3, 3 ) ref -> esi this class-hnd single-def <System.Collections.ContainsKeyTrue`2+<>c[System.__Canon,System.__Canon]>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> edx class-hnd single-def <System.__Canon>
;
; Lcl frame size = 0
G_M11807_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- push ebp
- mov ebp, esp
push esi
mov esi, ecx
- ; gcrRegs +[esi]
- ;; size=6 bbWeight=1 PerfScore 2.50
-G_M11807_IG02: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[edx]
- mov eax, edx
- ; gcrRegs +[eax]
- test eax, eax
- je SHORT G_M11807_IG05
- ;; size=6 bbWeight=1 PerfScore 1.50
-G_M11807_IG03: ; bbWeight=0.25, gcrefRegs=00000045 {eax edx esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=3 bbWeight=1 PerfScore 1.25
+G_M11807_IG02: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs +[edx esi]
mov ecx, dword ptr [esi]
mov ecx, dword ptr [ecx+0x24]
mov ecx, dword ptr [ecx]
mov ecx, dword ptr [ecx+0x04]
- cmp dword ptr [eax], ecx
- je SHORT G_M11807_IG05
- ;; size=14 bbWeight=0.25 PerfScore 3.00
-G_M11807_IG04: ; bbWeight=0.12, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[edx] +[eax]
- ;; size=5 bbWeight=0.12 PerfScore 0.12
-G_M11807_IG05: ; bbWeight=1, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ; gcr arg pop 0
+ ;; size=15 bbWeight=1 PerfScore 9.00
+G_M11807_IG03: ; bbWeight=1, epilog, nogc, extend
pop esi
- pop ebp
ret
- ;; size=3 bbWeight=1 PerfScore 2.00
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 34, prolog size 4, PerfScore 9.12, instruction count 17, allocated bytes for code 34 (MethodHash=4ad6d1e0) for method System.Collections.ContainsKeyTrue`2+<>c[System.__Canon,System.__Canon]:<Setup>b__10_1(System.__Canon):System.__Canon:this (FullOpts)
+; Total bytes of code 20, prolog size 1, PerfScore 11.75, instruction count 9, allocated bytes for code 20 (MethodHash=4ad6d1e0) for method System.Collections.ContainsKeyTrue`2+<>c[System.__Canon,System.__Canon]:<Setup>b__10_1(System.__Canon):System.__Canon:this (FullOpts)
; ============================================================
-16 (-39.02%) : 1855.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%) : 11244.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)
; ============================================================
+40 (+14.60%) : 23420.dasm - System.Tests.Perf_Array:ArrayCreate2D():System.Array:this (FullOpts)
@@ -10,41 +10,40 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def ptr <System.Tests.Perf_Array>
;* V01 tmp0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Array>
-; V02 tmp1 [V02,T00] ( 4, 6 ) int -> edi "Inlining Arg"
-; V03 tmp2 [V03,T04] ( 2, 4 ) int -> eax "Inlining Arg"
-;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
-;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V06 tmp5 [V06,T13] ( 0, 0 ) ref -> zero-ref class-hnd exact ptr "Inline stloc first use temp" <System.RuntimeType>
-; V07 tmp6 [V07 ] ( 3, 3 ) struct ( 8) [ebp-0x18] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
-; V08 tmp7 [V08,T09] ( 2, 2 ) int -> eax "Inline stloc first use temp"
-; V09 tmp8 [V09,T14] ( 1, 1 ) int -> [ebp-0x1C] do-not-enreg[V] "GSCookie dummy for inlinee"
-; V10 tmp9 [V10,T07] ( 2, 2 ) ref -> eax class-hnd single-def "Inline return value spill temp" <System.Array>
-; V11 tmp10 [V11 ] ( 4, 4 ) ref -> [ebp-0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Array>
-; V12 tmp11 [V12 ] ( 3, 6 ) ref -> [ebp-0x24] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ptr "Inlining Arg" <System.RuntimeType>
-; V13 tmp12 [V13 ] ( 5, 10 ) struct ( 8) [ebp-0x2C] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallTypeHandle>
-;* V14 tmp13 [V14 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Runtime.CompilerServices.QCallTypeHandle>
-;* V15 tmp14 [V15 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Runtime.CompilerServices.ObjectHandleOnStack>
-; V16 tmp15 [V16,T02] ( 3, 5 ) ref -> edx class-hnd exact single-def "dup spill" <System.RuntimeType>
-; V17 tmp16 [V17,T08] ( 2, 2 ) byref -> ecx single-def
-;* V18 tmp17 [V18 ] ( 0, 0 ) ref -> zero-ref single-def ptr
-;* V19 tmp18 [V19 ] ( 0, 0 ) byref -> zero-ref single-def ptr
-; V20 tmp19 [V20,T06] ( 3, 2 ) int -> edi
-;* V21 tmp20 [V21 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ObjectHandleOnStack>
-;* V22 tmp21 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V23 tmp22 [V23 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V24 tmp23 [V24,T03] ( 2, 4 ) ref -> eax single-def "Single return block return value"
-; V25 FramesRoot [V25,T01] ( 5, 5 ) int -> esi "Pinvoke FrameListRoot"
-; V26 PInvokeFrame [V26 ] ( 8, 8 ) struct (32) [ebp-0x4C] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
-; V27 tmp26 [V27 ] ( 4, 6 ) int -> [ebp-0x2C] do-not-enreg[X] addr-exposed "field V13._ptr (fldOffset=0x0)" P-DEP
-; V28 tmp27 [V28 ] ( 3, 5 ) int -> [ebp-0x28] do-not-enreg[X] addr-exposed "field V13._handle (fldOffset=0x4)" P-DEP
-; V29 tmp28 [V29,T10] ( 2, 2 ) int -> edx "field V14._ptr (fldOffset=0x0)" P-INDEP
-; V30 tmp29 [V30,T11] ( 2, 2 ) int -> ecx "field V14._handle (fldOffset=0x4)" P-INDEP
-;* V31 tmp30 [V31 ] ( 0, 0 ) int -> zero-ref "field V15._ptr (fldOffset=0x0)" P-INDEP
-; V32 tmp31 [V32,T12] ( 2, 2 ) int -> edi "field V21._ptr (fldOffset=0x0)" P-INDEP
-; V33 tmp32 [V33,T15] ( 2, 0 ) ref -> edx single-def "argument with side effect"
-;* V34 tmp33 [V34 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V35 GsCookie [V35 ] ( 1, 1 ) int -> [ebp-0x10] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V36 cse0 [V36,T05] ( 3, 3 ) int -> eax "CSE - moderate"
+; V02 tmp1 [V02,T01] ( 4, 6 ) int -> edi "Inlining Arg"
+; V03 tmp2 [V03,T05] ( 2, 4 ) int -> eax "Inlining Arg"
+; V04 tmp3 [V04,T06] ( 3, 3 ) ref -> edx class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
+; V05 tmp4 [V05 ] ( 3, 3 ) struct ( 8) [ebp-0x18] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
+; V06 tmp5 [V06,T11] ( 2, 2 ) int -> eax "Inline stloc first use temp"
+; V07 tmp6 [V07,T15] ( 1, 1 ) int -> [ebp-0x1C] do-not-enreg[V] "GSCookie dummy for inlinee"
+; V08 tmp7 [V08,T09] ( 2, 2 ) ref -> eax class-hnd single-def "Inline return value spill temp" <System.Array>
+; V09 tmp8 [V09 ] ( 4, 4 ) ref -> [ebp-0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Array>
+; V10 tmp9 [V10 ] ( 3, 6 ) ref -> [ebp-0x24] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ptr "Inlining Arg" <System.RuntimeType>
+; V11 tmp10 [V11 ] ( 5, 10 ) struct ( 8) [ebp-0x2C] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallTypeHandle>
+;* V12 tmp11 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Runtime.CompilerServices.QCallTypeHandle>
+;* V13 tmp12 [V13 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Runtime.CompilerServices.ObjectHandleOnStack>
+; V14 tmp13 [V14,T03] ( 3, 5 ) ref -> edx class-hnd exact single-def "dup spill" <System.RuntimeType>
+; V15 tmp14 [V15,T10] ( 2, 2 ) byref -> ecx single-def
+;* V16 tmp15 [V16 ] ( 0, 0 ) ref -> zero-ref single-def ptr
+;* V17 tmp16 [V17 ] ( 0, 0 ) byref -> zero-ref single-def ptr
+; V18 tmp17 [V18,T08] ( 3, 2 ) int -> edi
+;* V19 tmp18 [V19 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ObjectHandleOnStack>
+;* V20 tmp19 [V20 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V21 tmp20 [V21 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V22 tmp21 [V22,T04] ( 2, 4 ) ref -> eax single-def "Single return block return value"
+; V23 FramesRoot [V23,T02] ( 5, 5 ) int -> esi "Pinvoke FrameListRoot"
+; V24 PInvokeFrame [V24 ] ( 8, 8 ) struct (32) [ebp-0x4C] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+; V25 tmp24 [V25 ] ( 4, 6 ) int -> [ebp-0x2C] do-not-enreg[X] addr-exposed "field V11._ptr (fldOffset=0x0)" P-DEP
+; V26 tmp25 [V26 ] ( 3, 5 ) int -> [ebp-0x28] do-not-enreg[X] addr-exposed "field V11._handle (fldOffset=0x4)" P-DEP
+; V27 tmp26 [V27,T12] ( 2, 2 ) int -> edx "field V12._ptr (fldOffset=0x0)" P-INDEP
+; V28 tmp27 [V28,T13] ( 2, 2 ) int -> ecx "field V12._handle (fldOffset=0x4)" P-INDEP
+;* V29 tmp28 [V29 ] ( 0, 0 ) int -> zero-ref "field V13._ptr (fldOffset=0x0)" P-INDEP
+; V30 tmp29 [V30,T14] ( 2, 2 ) int -> edi "field V19._ptr (fldOffset=0x0)" P-INDEP
+; V31 tmp30 [V31,T16] ( 2, 0 ) ref -> edx single-def "argument with side effect"
+;* V32 tmp31 [V32 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V33 GsCookie [V33 ] ( 1, 1 ) int -> [ebp-0x10] do-not-enreg[X] addr-exposed "GSSecurityCookie"
+; V34 cse0 [V34,T07] ( 3, 3 ) int -> eax "CSE - moderate"
+; V35 rat0 [V35,T00] ( 5, 7.50) ref -> edx "replacement local"
;
; Lcl frame size = 64
@@ -66,22 +65,38 @@ G_M41785_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov eax, ebp
mov dword ptr [ebp-0x34], eax
test byte ptr [D1FFAB1EH], 1 ; global ptr
- je G_M41785_IG13
+ je G_M41785_IG16
;; size=26 bbWeight=1 PerfScore 6.75
-G_M41785_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M41785_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, dword ptr [D1FFAB1EH] ; static handle
mov edi, eax
test edi, edi
- jl G_M41785_IG14
+ jl G_M41785_IG17
+ mov edx, 0xD1FFAB1E
+ ; gcrRegs +[edx]
+ test edx, edx
+ je SHORT G_M41785_IG06
+ ;; size=24 bbWeight=1 PerfScore 5.00
+G_M41785_IG04: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ cmp dword ptr [edx], 0xD1FFAB1E
+ je SHORT G_M41785_IG06
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M41785_IG05: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[edx]
+ xor edx, edx
+ ; gcrRegs +[edx]
+ ;; size=2 bbWeight=0.25 PerfScore 0.06
+G_M41785_IG06: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
+ test edx, edx
+ je G_M41785_IG18
mov dword ptr [ebp-0x18], edi
mov dword ptr [ebp-0x14], eax
lea eax, [ebp-0x18]
- mov gword ptr [ebp-0x24], 0xD1FFAB1E
+ mov gword ptr [ebp-0x24], edx
xor edx, edx
- ; gcrRegs +[edx]
mov gword ptr [ebp-0x20], edx
- ;; size=36 bbWeight=1 PerfScore 8.25
-G_M41785_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ;; size=25 bbWeight=1 PerfScore 6.00
+G_M41785_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edx]
mov dword ptr [ebp-0x2C], edx
mov dword ptr [ebp-0x28], edx
@@ -92,18 +107,18 @@ G_M41785_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
lea ecx, bword ptr [ebp-0x2C]
; byrRegs +[ecx]
test edx, edx
- jne SHORT G_M41785_IG06
+ jne SHORT G_M41785_IG09
;; size=22 bbWeight=1 PerfScore 6.25
-G_M41785_IG05: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, byref, isz
+G_M41785_IG08: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, byref, isz
; gcrRegs -[edx]
xor edi, edi
- jmp SHORT G_M41785_IG07
+ jmp SHORT G_M41785_IG10
;; size=4 bbWeight=0.50 PerfScore 1.12
-G_M41785_IG06: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref
+G_M41785_IG09: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref
; gcrRegs +[edx]
mov edi, dword ptr [edx+0x0C]
;; size=3 bbWeight=0.50 PerfScore 1.00
-G_M41785_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, byref
+G_M41785_IG10: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, byref
; gcrRegs -[edx]
mov dword ptr [ecx+0x04], edi
mov edx, dword ptr [ebp-0x2C]
@@ -120,23 +135,23 @@ G_M41785_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000002 {e
mov dword ptr [ebp-0x40], 0xD1FFAB1E
mov eax, esp
mov dword ptr [ebp-0x3C], eax
- lea eax, G_M41785_IG10
+ lea eax, G_M41785_IG13
mov dword ptr [ebp-0x38], eax
mov byte ptr [esi+0x08], 0
;; size=47 bbWeight=1 PerfScore 15.75
-G_M41785_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M41785_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, 0xD1FFAB1E ; function address
;; size=5 bbWeight=1 PerfScore 0.25
-G_M41785_IG09: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M41785_IG12: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
call eax ; <unknown method>
;; size=2 bbWeight=1 PerfScore 3.00
-G_M41785_IG10: ; bbWeight=1, isz, extend
+G_M41785_IG13: ; bbWeight=1, isz, extend
mov byte ptr [esi+0x08], 1
cmp dword ptr [D1FFAB1EH], 0
- je SHORT G_M41785_IG11
+ je SHORT G_M41785_IG14
call CORINFO_HELP_STOP_FOR_GC
;; size=18 bbWeight=1 PerfScore 6.00
-G_M41785_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M41785_IG14: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
xor eax, eax
mov dword ptr [ebp-0x38], eax
mov eax, gword ptr [ebp-0x20]
@@ -149,12 +164,12 @@ G_M41785_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; byrRegs +[ecx]
mov dword ptr [esi+0x0C], ecx
cmp dword ptr [ebp-0x10], 0xD1FFAB1E
- je SHORT G_M41785_IG12
+ je SHORT G_M41785_IG15
call CORINFO_HELP_FAIL_FAST
; gcrRegs -[eax]
; byrRegs -[ecx]
;; size=33 bbWeight=1 PerfScore 9.50
-G_M41785_IG12: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M41785_IG15: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs +[eax]
lea esp, [ebp-0x0C]
pop ebx
@@ -163,14 +178,14 @@ G_M41785_IG12: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000
pop ebp
ret
;; size=8 bbWeight=1 PerfScore 3.50
-G_M41785_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M41785_IG16: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax]
mov ecx, 0xD1FFAB1E
mov edx, 417
call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
jmp G_M41785_IG03
;; size=20 bbWeight=0 PerfScore 0.00
-G_M41785_IG14: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M41785_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 0x784
mov edx, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
@@ -182,7 +197,13 @@ G_M41785_IG14: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; gcrRegs -[eax edx]
int3
;; size=26 bbWeight=0 PerfScore 0.00
+G_M41785_IG18: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ mov ecx, 57
+ mov edx, 80
+ call [System.ThrowHelper:ThrowArgumentException(int,int)]
+ int3
+ ;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 274, prolog size 24, PerfScore 69.12, instruction count 87, allocated bytes for code 274 (MethodHash=69095cc6) for method System.Tests.Perf_Array:ArrayCreate2D():System.Array:this (FullOpts)
+; Total bytes of code 314, prolog size 24, PerfScore 73.94, instruction count 99, allocated bytes for code 314 (MethodHash=69095cc6) for method System.Tests.Perf_Array:ArrayCreate2D():System.Array:this (FullOpts)
; ============================================================
+40 (+15.21%) : 23759.dasm - System.Tests.Perf_Array:SetupArrayAssign1D():this (FullOpts)
@@ -8,36 +8,35 @@
; 0 inlinees with PGO data; 7 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 3, 3 ) ref -> [ebp-0x24] this class-hnd single-def <System.Tests.Perf_Array>
+; V00 this [V00,T02] ( 3, 3 ) ref -> [ebp-0x24] this class-hnd single-def <System.Tests.Perf_Array>
;* V01 tmp0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Array>
; V02 tmp1 [V02 ] ( 3, 6 ) int -> [ebp-0x10] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
-;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
-;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V05 tmp4 [V05,T10] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
-; V06 tmp5 [V06,T03] ( 3, 4 ) int -> edi "Inlining Arg"
-; V07 tmp6 [V07,T05] ( 2, 2 ) ref -> ecx class-hnd single-def "Inline return value spill temp" <System.Array>
-; V08 tmp7 [V08 ] ( 4, 4 ) ref -> [ebp-0x14] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Array>
-; V09 tmp8 [V09 ] ( 3, 6 ) ref -> [ebp-0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inlining Arg" <System.RuntimeType>
-; V10 tmp9 [V10 ] ( 5, 10 ) struct ( 8) [ebp-0x20] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallTypeHandle>
-;* V11 tmp10 [V11 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Runtime.CompilerServices.QCallTypeHandle>
-;* V12 tmp11 [V12 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Runtime.CompilerServices.ObjectHandleOnStack>
-; V13 tmp12 [V13,T02] ( 3, 5 ) ref -> eax class-hnd exact single-def "dup spill" <System.RuntimeType>
-; V14 tmp13 [V14,T06] ( 2, 2 ) byref -> edx single-def
-;* V15 tmp14 [V15 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V16 tmp15 [V16 ] ( 0, 0 ) byref -> zero-ref single-def
-; V17 tmp16 [V17,T04] ( 3, 2 ) int -> ecx
-;* V18 tmp17 [V18 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ObjectHandleOnStack>
-;* V19 tmp18 [V19 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V20 tmp19 [V20 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V21 FramesRoot [V21,T00] ( 5, 5 ) int -> esi "Pinvoke FrameListRoot"
-; V22 PInvokeFrame [V22 ] ( 8, 8 ) struct (32) [ebp-0x44] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
-; V23 tmp22 [V23 ] ( 4, 6 ) int -> [ebp-0x20] do-not-enreg[X] addr-exposed "field V10._ptr (fldOffset=0x0)" P-DEP
-; V24 tmp23 [V24 ] ( 3, 5 ) int -> [ebp-0x1C] do-not-enreg[X] addr-exposed "field V10._handle (fldOffset=0x4)" P-DEP
-; V25 tmp24 [V25,T07] ( 2, 2 ) int -> eax "field V11._ptr (fldOffset=0x0)" P-INDEP
-; V26 tmp25 [V26,T08] ( 2, 2 ) int -> edx "field V11._handle (fldOffset=0x4)" P-INDEP
-;* V27 tmp26 [V27 ] ( 0, 0 ) int -> zero-ref "field V12._ptr (fldOffset=0x0)" P-INDEP
-; V28 tmp27 [V28,T09] ( 2, 2 ) int -> ecx "field V18._ptr (fldOffset=0x0)" P-INDEP
-; V29 tmp28 [V29,T11] ( 2, 0 ) ref -> edx single-def "argument with side effect"
+; V03 tmp2 [V03,T05] ( 3, 3 ) ref -> eax class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
+; V04 tmp3 [V04,T04] ( 3, 4 ) int -> edi "Inlining Arg"
+; V05 tmp4 [V05,T07] ( 2, 2 ) ref -> ecx class-hnd single-def "Inline return value spill temp" <System.Array>
+; V06 tmp5 [V06 ] ( 4, 4 ) ref -> [ebp-0x14] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Array>
+; V07 tmp6 [V07 ] ( 3, 6 ) ref -> [ebp-0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inlining Arg" <System.RuntimeType>
+; V08 tmp7 [V08 ] ( 5, 10 ) struct ( 8) [ebp-0x20] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallTypeHandle>
+;* V09 tmp8 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Runtime.CompilerServices.QCallTypeHandle>
+;* V10 tmp9 [V10 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Runtime.CompilerServices.ObjectHandleOnStack>
+; V11 tmp10 [V11,T03] ( 3, 5 ) ref -> eax class-hnd exact single-def "dup spill" <System.RuntimeType>
+; V12 tmp11 [V12,T08] ( 2, 2 ) byref -> edx single-def
+;* V13 tmp12 [V13 ] ( 0, 0 ) ref -> zero-ref single-def
+;* V14 tmp13 [V14 ] ( 0, 0 ) byref -> zero-ref single-def
+; V15 tmp14 [V15,T06] ( 3, 2 ) int -> ecx
+;* V16 tmp15 [V16 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ObjectHandleOnStack>
+;* V17 tmp16 [V17 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V18 tmp17 [V18 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V19 FramesRoot [V19,T01] ( 5, 5 ) int -> esi "Pinvoke FrameListRoot"
+; V20 PInvokeFrame [V20 ] ( 8, 8 ) struct (32) [ebp-0x44] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+; V21 tmp20 [V21 ] ( 4, 6 ) int -> [ebp-0x20] do-not-enreg[X] addr-exposed "field V08._ptr (fldOffset=0x0)" P-DEP
+; V22 tmp21 [V22 ] ( 3, 5 ) int -> [ebp-0x1C] do-not-enreg[X] addr-exposed "field V08._handle (fldOffset=0x4)" P-DEP
+; V23 tmp22 [V23,T09] ( 2, 2 ) int -> eax "field V09._ptr (fldOffset=0x0)" P-INDEP
+; V24 tmp23 [V24,T10] ( 2, 2 ) int -> edx "field V09._handle (fldOffset=0x4)" P-INDEP
+;* V25 tmp24 [V25 ] ( 0, 0 ) int -> zero-ref "field V10._ptr (fldOffset=0x0)" P-INDEP
+; V26 tmp25 [V26,T11] ( 2, 2 ) int -> ecx "field V16._ptr (fldOffset=0x0)" P-INDEP
+; V27 tmp26 [V27,T12] ( 2, 0 ) ref -> edx single-def "argument with side effect"
+; V28 rat0 [V28,T00] ( 5, 7.50) ref -> eax "replacement local"
;
; Lcl frame size = 56
@@ -54,26 +53,42 @@ G_M58256_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov gword ptr [ebp-0x24], ecx
; GC ptr vars +{V00}
;; size=20 bbWeight=1 PerfScore 7.75
-G_M58256_IG02: ; bbWeight=1, gcVars=00000002 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M58256_IG02: ; bbWeight=1, gcVars=00000004 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
lea edi, [ebp-0x40]
call CORINFO_HELP_INIT_PINVOKE_FRAME
mov eax, ebp
mov dword ptr [ebp-0x2C], eax
test byte ptr [D1FFAB1EH], 1 ; global ptr
- je G_M58256_IG14
+ je G_M58256_IG17
;; size=26 bbWeight=1 PerfScore 6.75
-G_M58256_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M58256_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, dword ptr [D1FFAB1EH] ; static handle
mov dword ptr [ebp-0x10], eax
mov edi, dword ptr [ebp-0x10]
test edi, edi
- jl G_M58256_IG15
- mov gword ptr [ebp-0x18], 0xD1FFAB1E
+ jl G_M58256_IG18
+ mov eax, 0xD1FFAB1E
+ ; gcrRegs +[eax]
+ test eax, eax
+ je SHORT G_M58256_IG06
+ ;; size=28 bbWeight=1 PerfScore 6.75
+G_M58256_IG04: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
+ cmp dword ptr [eax], 0xD1FFAB1E
+ je SHORT G_M58256_IG06
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M58256_IG05: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax]
xor eax, eax
; gcrRegs +[eax]
+ ;; size=2 bbWeight=0.25 PerfScore 0.06
+G_M58256_IG06: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
+ test eax, eax
+ je G_M58256_IG19
+ mov gword ptr [ebp-0x18], eax
+ xor eax, eax
mov gword ptr [ebp-0x14], eax
- ;; size=31 bbWeight=1 PerfScore 7.50
-G_M58256_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ;; size=16 bbWeight=1 PerfScore 3.50
+G_M58256_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
mov dword ptr [ebp-0x20], eax
mov dword ptr [ebp-0x1C], eax
@@ -84,18 +99,18 @@ G_M58256_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
lea edx, bword ptr [ebp-0x20]
; byrRegs +[edx]
test eax, eax
- jne SHORT G_M58256_IG06
+ jne SHORT G_M58256_IG09
;; size=22 bbWeight=1 PerfScore 6.25
-G_M58256_IG05: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000004 {edx}, byref, isz
+G_M58256_IG08: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000004 {edx}, byref, isz
; gcrRegs -[eax]
xor ecx, ecx
- jmp SHORT G_M58256_IG07
+ jmp SHORT G_M58256_IG10
;; size=4 bbWeight=0.50 PerfScore 1.12
-G_M58256_IG06: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000004 {edx}, byref
+G_M58256_IG09: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000004 {edx}, byref
; gcrRegs +[eax]
mov ecx, dword ptr [eax+0x0C]
;; size=3 bbWeight=0.50 PerfScore 1.00
-G_M58256_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000004 {edx}, byref
+G_M58256_IG10: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000004 {edx}, byref
; gcrRegs -[eax]
mov dword ptr [edx+0x04], ecx
mov eax, dword ptr [ebp-0x20]
@@ -113,29 +128,29 @@ G_M58256_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000004 {e
mov dword ptr [ebp-0x38], 0xD1FFAB1E
mov eax, esp
mov dword ptr [ebp-0x34], eax
- lea eax, G_M58256_IG10
+ lea eax, G_M58256_IG13
mov dword ptr [ebp-0x30], eax
mov byte ptr [esi+0x08], 0
;; size=50 bbWeight=1 PerfScore 16.25
-G_M58256_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M58256_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, 0xD1FFAB1E ; function address
;; size=5 bbWeight=1 PerfScore 0.25
-G_M58256_IG09: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M58256_IG12: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
call eax ; <unknown method>
;; size=2 bbWeight=1 PerfScore 3.00
-G_M58256_IG10: ; bbWeight=1, isz, extend
+G_M58256_IG13: ; bbWeight=1, isz, extend
mov byte ptr [esi+0x08], 1
cmp dword ptr [D1FFAB1EH], 0
- je SHORT G_M58256_IG11
+ je SHORT G_M58256_IG14
call CORINFO_HELP_STOP_FOR_GC
;; size=18 bbWeight=1 PerfScore 6.00
-G_M58256_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M58256_IG14: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
xor edx, edx
mov dword ptr [ebp-0x30], edx
mov ecx, gword ptr [ebp-0x14]
; gcrRegs +[ecx]
;; size=8 bbWeight=1 PerfScore 2.25
-G_M58256_IG12: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
+G_M58256_IG15: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
mov gword ptr [ebp-0x14], edx
mov ebx, gword ptr [ebp-0x24]
; gcrRegs +[ebx]
@@ -149,7 +164,7 @@ G_M58256_IG12: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000
; byrRegs +[ecx]
mov dword ptr [esi+0x0C], ecx
;; size=20 bbWeight=1 PerfScore 5.50
-G_M58256_IG13: ; bbWeight=1, epilog, nogc, extend
+G_M58256_IG16: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -157,7 +172,7 @@ G_M58256_IG13: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret
;; size=8 bbWeight=1 PerfScore 3.50
-G_M58256_IG14: ; bbWeight=0, gcVars=00000002 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M58256_IG17: ; bbWeight=0, gcVars=00000004 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; byrRegs -[ecx]
; GC ptr vars +{V00}
mov ecx, 0xD1FFAB1E
@@ -165,7 +180,7 @@ G_M58256_IG14: ; bbWeight=0, gcVars=00000002 {V00}, gcrefRegs=00000000 {}
call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
jmp G_M58256_IG03
;; size=20 bbWeight=0 PerfScore 0.00
-G_M58256_IG15: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M58256_IG18: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; GC ptr vars -{V00}
mov ecx, 381
mov edx, 0xD1FFAB1E
@@ -178,7 +193,13 @@ G_M58256_IG15: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, b
; gcrRegs -[eax edx]
int3
;; size=26 bbWeight=0 PerfScore 0.00
+G_M58256_IG19: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ mov ecx, 57
+ mov edx, 80
+ call [System.ThrowHelper:ThrowArgumentException(int,int)]
+ int3
+ ;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 263, prolog size 17, PerfScore 67.12, instruction count 85, allocated bytes for code 263 (MethodHash=8f341c6f) for method System.Tests.Perf_Array:SetupArrayAssign1D():this (FullOpts)
+; Total bytes of code 303, prolog size 17, PerfScore 71.94, instruction count 97, allocated bytes for code 303 (MethodHash=8f341c6f) for method System.Tests.Perf_Array:SetupArrayAssign1D():this (FullOpts)
; ============================================================
+40 (+15.94%) : 23171.dasm - System.Tests.Perf_Array:ArrayCreate1D():System.Array:this (FullOpts)
@@ -11,34 +11,33 @@
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Tests.Perf_Array>
;* V01 tmp0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Array>
; V02 tmp1 [V02 ] ( 3, 6 ) int -> [ebp-0x10] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
-;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
-;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V05 tmp4 [V05,T10] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
-; V06 tmp5 [V06,T02] ( 3, 4 ) int -> edi "Inlining Arg"
-; V07 tmp6 [V07,T05] ( 2, 2 ) ref -> eax class-hnd single-def "Inline return value spill temp" <System.Array>
-; V08 tmp7 [V08 ] ( 4, 4 ) ref -> [ebp-0x14] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Array>
-; V09 tmp8 [V09 ] ( 3, 6 ) ref -> [ebp-0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inlining Arg" <System.RuntimeType>
-; V10 tmp9 [V10 ] ( 5, 10 ) struct ( 8) [ebp-0x20] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallTypeHandle>
-;* V11 tmp10 [V11 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Runtime.CompilerServices.QCallTypeHandle>
-;* V12 tmp11 [V12 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Runtime.CompilerServices.ObjectHandleOnStack>
-; V13 tmp12 [V13,T01] ( 3, 5 ) ref -> eax class-hnd exact single-def "dup spill" <System.RuntimeType>
-; V14 tmp13 [V14,T06] ( 2, 2 ) byref -> edx single-def
-;* V15 tmp14 [V15 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V16 tmp15 [V16 ] ( 0, 0 ) byref -> zero-ref single-def
-; V17 tmp16 [V17,T04] ( 3, 2 ) int -> ecx
-;* V18 tmp17 [V18 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ObjectHandleOnStack>
-;* V19 tmp18 [V19 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V20 tmp19 [V20 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V21 tmp20 [V21,T03] ( 2, 4 ) ref -> eax single-def "Single return block return value"
-; V22 FramesRoot [V22,T00] ( 5, 5 ) int -> esi "Pinvoke FrameListRoot"
-; V23 PInvokeFrame [V23 ] ( 8, 8 ) struct (32) [ebp-0x40] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
-; V24 tmp23 [V24 ] ( 4, 6 ) int -> [ebp-0x20] do-not-enreg[X] addr-exposed "field V10._ptr (fldOffset=0x0)" P-DEP
-; V25 tmp24 [V25 ] ( 3, 5 ) int -> [ebp-0x1C] do-not-enreg[X] addr-exposed "field V10._handle (fldOffset=0x4)" P-DEP
-; V26 tmp25 [V26,T07] ( 2, 2 ) int -> eax "field V11._ptr (fldOffset=0x0)" P-INDEP
-; V27 tmp26 [V27,T08] ( 2, 2 ) int -> edx "field V11._handle (fldOffset=0x4)" P-INDEP
-;* V28 tmp27 [V28 ] ( 0, 0 ) int -> zero-ref "field V12._ptr (fldOffset=0x0)" P-INDEP
-; V29 tmp28 [V29,T09] ( 2, 2 ) int -> ecx "field V18._ptr (fldOffset=0x0)" P-INDEP
-; V30 tmp29 [V30,T11] ( 2, 0 ) ref -> edx single-def "argument with side effect"
+; V03 tmp2 [V03,T05] ( 3, 3 ) ref -> eax class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
+; V04 tmp3 [V04,T03] ( 3, 4 ) int -> edi "Inlining Arg"
+; V05 tmp4 [V05,T07] ( 2, 2 ) ref -> eax class-hnd single-def "Inline return value spill temp" <System.Array>
+; V06 tmp5 [V06 ] ( 4, 4 ) ref -> [ebp-0x14] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Array>
+; V07 tmp6 [V07 ] ( 3, 6 ) ref -> [ebp-0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inlining Arg" <System.RuntimeType>
+; V08 tmp7 [V08 ] ( 5, 10 ) struct ( 8) [ebp-0x20] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallTypeHandle>
+;* V09 tmp8 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Runtime.CompilerServices.QCallTypeHandle>
+;* V10 tmp9 [V10 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Runtime.CompilerServices.ObjectHandleOnStack>
+; V11 tmp10 [V11,T02] ( 3, 5 ) ref -> eax class-hnd exact single-def "dup spill" <System.RuntimeType>
+; V12 tmp11 [V12,T08] ( 2, 2 ) byref -> edx single-def
+;* V13 tmp12 [V13 ] ( 0, 0 ) ref -> zero-ref single-def
+;* V14 tmp13 [V14 ] ( 0, 0 ) byref -> zero-ref single-def
+; V15 tmp14 [V15,T06] ( 3, 2 ) int -> ecx
+;* V16 tmp15 [V16 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ObjectHandleOnStack>
+;* V17 tmp16 [V17 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V18 tmp17 [V18 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V19 tmp18 [V19,T04] ( 2, 4 ) ref -> eax single-def "Single return block return value"
+; V20 FramesRoot [V20,T01] ( 5, 5 ) int -> esi "Pinvoke FrameListRoot"
+; V21 PInvokeFrame [V21 ] ( 8, 8 ) struct (32) [ebp-0x40] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+; V22 tmp21 [V22 ] ( 4, 6 ) int -> [ebp-0x20] do-not-enreg[X] addr-exposed "field V08._ptr (fldOffset=0x0)" P-DEP
+; V23 tmp22 [V23 ] ( 3, 5 ) int -> [ebp-0x1C] do-not-enreg[X] addr-exposed "field V08._handle (fldOffset=0x4)" P-DEP
+; V24 tmp23 [V24,T09] ( 2, 2 ) int -> eax "field V09._ptr (fldOffset=0x0)" P-INDEP
+; V25 tmp24 [V25,T10] ( 2, 2 ) int -> edx "field V09._handle (fldOffset=0x4)" P-INDEP
+;* V26 tmp25 [V26 ] ( 0, 0 ) int -> zero-ref "field V10._ptr (fldOffset=0x0)" P-INDEP
+; V27 tmp26 [V27,T11] ( 2, 2 ) int -> ecx "field V16._ptr (fldOffset=0x0)" P-INDEP
+; V28 tmp27 [V28,T12] ( 2, 0 ) ref -> edx single-def "argument with side effect"
+; V29 rat0 [V29,T00] ( 5, 7.50) ref -> eax "replacement local"
;
; Lcl frame size = 52
@@ -59,20 +58,36 @@ G_M36762_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov eax, ebp
mov dword ptr [ebp-0x28], eax
test byte ptr [D1FFAB1EH], 1 ; global ptr
- je G_M36762_IG13
+ je G_M36762_IG16
;; size=26 bbWeight=1 PerfScore 6.75
-G_M36762_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M36762_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, dword ptr [D1FFAB1EH] ; static handle
mov dword ptr [ebp-0x10], eax
mov edi, dword ptr [ebp-0x10]
test edi, edi
- jl G_M36762_IG14
- mov gword ptr [ebp-0x18], 0xD1FFAB1E
+ jl G_M36762_IG17
+ mov eax, 0xD1FFAB1E
+ ; gcrRegs +[eax]
+ test eax, eax
+ je SHORT G_M36762_IG06
+ ;; size=28 bbWeight=1 PerfScore 6.75
+G_M36762_IG04: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
+ cmp dword ptr [eax], 0xD1FFAB1E
+ je SHORT G_M36762_IG06
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M36762_IG05: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax]
xor eax, eax
; gcrRegs +[eax]
+ ;; size=2 bbWeight=0.25 PerfScore 0.06
+G_M36762_IG06: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
+ test eax, eax
+ je G_M36762_IG18
+ mov gword ptr [ebp-0x18], eax
+ xor eax, eax
mov gword ptr [ebp-0x14], eax
- ;; size=31 bbWeight=1 PerfScore 7.50
-G_M36762_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ;; size=16 bbWeight=1 PerfScore 3.50
+G_M36762_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
mov dword ptr [ebp-0x20], eax
mov dword ptr [ebp-0x1C], eax
@@ -83,18 +98,18 @@ G_M36762_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
lea edx, bword ptr [ebp-0x20]
; byrRegs +[edx]
test eax, eax
- jne SHORT G_M36762_IG06
+ jne SHORT G_M36762_IG09
;; size=22 bbWeight=1 PerfScore 6.25
-G_M36762_IG05: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000004 {edx}, byref, isz
+G_M36762_IG08: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000004 {edx}, byref, isz
; gcrRegs -[eax]
xor ecx, ecx
- jmp SHORT G_M36762_IG07
+ jmp SHORT G_M36762_IG10
;; size=4 bbWeight=0.50 PerfScore 1.12
-G_M36762_IG06: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000004 {edx}, byref
+G_M36762_IG09: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000004 {edx}, byref
; gcrRegs +[eax]
mov ecx, dword ptr [eax+0x0C]
;; size=3 bbWeight=0.50 PerfScore 1.00
-G_M36762_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000004 {edx}, byref
+G_M36762_IG10: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000004 {edx}, byref
; gcrRegs -[eax]
mov dword ptr [edx+0x04], ecx
mov eax, dword ptr [ebp-0x20]
@@ -112,23 +127,23 @@ G_M36762_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000004 {e
mov dword ptr [ebp-0x34], 0xD1FFAB1E
mov eax, esp
mov dword ptr [ebp-0x30], eax
- lea eax, G_M36762_IG10
+ lea eax, G_M36762_IG13
mov dword ptr [ebp-0x2C], eax
mov byte ptr [esi+0x08], 0
;; size=50 bbWeight=1 PerfScore 16.25
-G_M36762_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M36762_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, 0xD1FFAB1E ; function address
;; size=5 bbWeight=1 PerfScore 0.25
-G_M36762_IG09: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M36762_IG12: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
call eax ; <unknown method>
;; size=2 bbWeight=1 PerfScore 3.00
-G_M36762_IG10: ; bbWeight=1, isz, extend
+G_M36762_IG13: ; bbWeight=1, isz, extend
mov byte ptr [esi+0x08], 1
cmp dword ptr [D1FFAB1EH], 0
- je SHORT G_M36762_IG11
+ je SHORT G_M36762_IG14
call CORINFO_HELP_STOP_FOR_GC
;; size=18 bbWeight=1 PerfScore 6.00
-G_M36762_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M36762_IG14: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
xor eax, eax
mov dword ptr [ebp-0x2C], eax
mov eax, gword ptr [ebp-0x14]
@@ -141,7 +156,7 @@ G_M36762_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; byrRegs +[ecx]
mov dword ptr [esi+0x0C], ecx
;; size=19 bbWeight=1 PerfScore 5.50
-G_M36762_IG12: ; bbWeight=1, epilog, nogc, extend
+G_M36762_IG15: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -149,7 +164,7 @@ G_M36762_IG12: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret
;; size=8 bbWeight=1 PerfScore 3.50
-G_M36762_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M36762_IG16: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax]
; byrRegs -[ecx]
mov ecx, 0xD1FFAB1E
@@ -157,7 +172,7 @@ G_M36762_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, b
call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
jmp G_M36762_IG03
;; size=20 bbWeight=0 PerfScore 0.00
-G_M36762_IG14: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M36762_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 381
mov edx, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
@@ -169,7 +184,13 @@ G_M36762_IG14: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; gcrRegs -[eax edx]
int3
;; size=26 bbWeight=0 PerfScore 0.00
+G_M36762_IG18: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ mov ecx, 57
+ mov edx, 80
+ call [System.ThrowHelper:ThrowArgumentException(int,int)]
+ int3
+ ;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 251, prolog size 17, PerfScore 63.88, instruction count 82, allocated bytes for code 251 (MethodHash=b60d7065) for method System.Tests.Perf_Array:ArrayCreate1D():System.Array:this (FullOpts)
+; Total bytes of code 291, prolog size 17, PerfScore 68.69, instruction count 94, allocated bytes for code 291 (MethodHash=b60d7065) for method System.Tests.Perf_Array:ArrayCreate1D():System.Array:this (FullOpts)
; ============================================================
benchmarks.run_pgo.windows.x86.checked.mch
-19 (-32.76%) : 16351.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%) : 50343.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)
; ============================================================
-46 (-17.23%) : 1812.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttributeSystem.__Canon:System.__Canon (Tier1)
@@ -8,25 +8,19 @@
; 4 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 7, 5 ) ref -> esi class-hnd single-def <System.Reflection.Assembly>
-; V01 TypeCtx [V01,T03] ( 4, 4 ) int -> edx single-def
-;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
-; V03 tmp1 [V03,T10] ( 3, 1.25) int -> ecx "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T02] ( 5, 6.75) ref -> eax class-hnd "spilling QMark2" <System.__Canon>
-; V05 tmp3 [V05,T09] ( 4, 1.62) ref -> edx class-hnd "Inline return value spill temp" <System.Attribute>
-;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Attribute[]>
-; V07 tmp5 [V07,T12] ( 3, 1 ) ref -> edx class-hnd single-def "Inline stloc first use temp" <System.Attribute>
-;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
-; V09 tmp7 [V09,T11] ( 3, 1.25) int -> ecx "fgMakeTemp is creating a new local variable"
-; V10 tmp8 [V10,T00] ( 8, 7.75) ref -> edx class-hnd "spilling QMark2" <System.Attribute[]>
-; V11 tmp9 [V11,T13] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V12 tmp10 [V12,T08] ( 5, 2.12) ref -> eax "guarded devirt return temp"
-; V13 tmp11 [V13,T04] ( 3, 4 ) ref -> eax single-def "guarded devirt arg temp"
-;* V14 tmp12 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.RuntimeAssembly>
-; V15 tmp13 [V15,T05] ( 2, 4 ) ref -> ecx single-def "argument with side effect"
-; V16 tmp14 [V16,T14] ( 2, 0 ) ref -> edx single-def "argument with side effect"
-; V17 cse0 [V17,T06] ( 5, 3.25) int -> edi "CSE - moderate"
-; V18 cse1 [V18,T07] ( 3, 2.50) int -> ecx "CSE - moderate"
+; V00 arg0 [V00,T00] ( 7, 4.50) ref -> esi class-hnd single-def <System.Reflection.Assembly>
+; V01 TypeCtx [V01,T01] ( 4, 4 ) int -> edx single-def
+; V02 loc0 [V02,T06] ( 3, 1.50) ref -> edx class-hnd "Inline return value spill temp" <System.Attribute>
+; V03 tmp1 [V03,T04] ( 4, 3 ) ref -> eax class-hnd single-def "Inline stloc first use temp" <System.Attribute[]>
+; V04 tmp2 [V04,T09] ( 3, 1 ) ref -> edx class-hnd single-def "Inline stloc first use temp" <System.Attribute>
+; V05 tmp3 [V05,T10] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V06 tmp4 [V06,T07] ( 3, 1.50) ref -> eax "guarded devirt return temp"
+; V07 tmp5 [V07,T05] ( 3, 3 ) ref -> eax single-def "guarded devirt arg temp"
+;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.RuntimeAssembly>
+; V09 tmp7 [V09,T03] ( 2, 4 ) ref -> ecx single-def "argument with side effect"
+; V10 tmp8 [V10,T11] ( 2, 0 ) ref -> edx single-def "argument with side effect"
+; V11 cse0 [V11,T02] ( 5, 4 ) int -> edi "CSE - aggressive"
+; V12 cse1 [V12,T08] ( 3, 1.50) int -> ecx "CSE - moderate"
;
; Lcl frame size = 4
@@ -40,9 +34,9 @@ G_M12223_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov esi, ecx
; gcrRegs +[esi]
;; size=11 bbWeight=1 PerfScore 5.50
-G_M12223_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M12223_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
test esi, esi
- je G_M12223_IG12
+ je SHORT G_M12223_IG09
mov edi, dword ptr [edx+0x20]
mov ecx, dword ptr [edi]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
@@ -54,14 +48,16 @@ G_M12223_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
call [System.RuntimeType:IsSubclassOf(System.Type):ubyte:this]
; gcrRegs -[eax ecx edx]
test eax, eax
- je G_M12223_IG13
- ;; size=39 bbWeight=1 PerfScore 11.00
+ je SHORT G_M12223_IG10
+ ;; size=31 bbWeight=1 PerfScore 11.00
G_M12223_IG03: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, dword ptr [edi]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[eax]
cmp dword ptr [esi], 0xD1FFAB1E
- jne G_M12223_IG14
+ jne G_M12223_IG11
+ ;; size=19 bbWeight=1 PerfScore 7.00
+G_M12223_IG04: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
push 1
mov ecx, esi
; gcrRegs +[ecx]
@@ -69,63 +65,40 @@ G_M12223_IG03: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
; gcrRegs +[edx]
call [System.Reflection.RuntimeAssembly:GetCustomAttributes(System.Type,ubyte):System.Object[]:this]
; gcrRegs -[ecx edx esi]
+ ;; size=12 bbWeight=0.50 PerfScore 2.25
+G_M12223_IG05: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
mov edx, eax
; gcrRegs +[edx]
- test edx, edx
- je G_M12223_IG15
- ;; size=41 bbWeight=1 PerfScore 13.00
-G_M12223_IG04: ; bbWeight=0.25, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz
mov ecx, 0xD1FFAB1E ; System.Attribute[]
- cmp dword ptr [edx], ecx
- je SHORT G_M12223_IG06
- ;; size=9 bbWeight=0.25 PerfScore 1.06
-G_M12223_IG05: ; bbWeight=0.12, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[edx]
- mov edx, eax
- ; gcrRegs +[edx]
call CORINFO_HELP_CHKCASTARRAY
; gcrRegs -[edx]
+ test eax, eax
+ je SHORT G_M12223_IG12
+ ;; size=16 bbWeight=1 PerfScore 2.75
+G_M12223_IG06: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
+ mov ecx, dword ptr [eax+0x04]
+ test ecx, ecx
+ je SHORT G_M12223_IG12
+ mov eax, gword ptr [eax+0x08]
mov edx, eax
; gcrRegs +[edx]
- ;; size=9 bbWeight=0.12 PerfScore 0.19
-G_M12223_IG06: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
- mov ecx, dword ptr [edx+0x04]
- test ecx, ecx
- je G_M12223_IG15
- ;; size=11 bbWeight=1 PerfScore 3.25
-G_M12223_IG07: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
- mov eax, gword ptr [edx+0x08]
- ; gcrRegs +[eax]
- mov edx, eax
cmp ecx, 1
- jne SHORT G_M12223_IG16
- ;; size=10 bbWeight=0.50 PerfScore 1.75
-G_M12223_IG08: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ jne SHORT G_M12223_IG13
+ ;; size=17 bbWeight=0.50 PerfScore 3.38
+G_M12223_IG07: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax]
- mov eax, edx
- ; gcrRegs +[eax]
- test eax, eax
- je SHORT G_M12223_IG11
- ;; size=6 bbWeight=1 PerfScore 1.50
-G_M12223_IG09: ; bbWeight=0.25, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [edi]
- cmp dword ptr [eax], ecx
- je SHORT G_M12223_IG11
- ;; size=6 bbWeight=0.25 PerfScore 1.50
-G_M12223_IG10: ; bbWeight=0.12, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[edx] +[eax]
- ;; size=5 bbWeight=0.12 PerfScore 0.12
-G_M12223_IG11: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=7 bbWeight=1 PerfScore 3.00
+G_M12223_IG08: ; bbWeight=1, epilog, nogc, extend
pop ecx
pop esi
pop edi
pop ebp
ret
;; size=5 bbWeight=1 PerfScore 3.00
-G_M12223_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M12223_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax]
mov ecx, 0x898
mov edx, 0xD1FFAB1E
@@ -137,10 +110,10 @@ G_M12223_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, b
; gcrRegs -[eax ecx]
int3
;; size=24 bbWeight=0 PerfScore 0.00
-G_M12223_IG13: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M12223_IG10: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[esi]
cmp dword ptr [edi], 0xD1FFAB1E
- je G_M12223_IG03
+ je SHORT G_M12223_IG03
mov ecx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcrRegs -[esi] +[eax]
@@ -157,8 +130,8 @@ G_M12223_IG13: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000
; gcrRegs +[ecx]
call CORINFO_HELP_THROW
; gcrRegs -[ecx esi]
- ;; size=47 bbWeight=0 PerfScore 0.00
-G_M12223_IG14: ; bbWeight=0, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
+ ;; size=43 bbWeight=0 PerfScore 0.00
+G_M12223_IG11: ; bbWeight=0, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[eax esi]
push 1
mov ecx, esi
@@ -170,18 +143,15 @@ G_M12223_IG14: ; bbWeight=0, gcrefRegs=00000041 {eax esi}, byrefRegs=0000
mov eax, dword ptr [eax+0x38]
call [eax+0x18]<unknown method>
; gcrRegs -[ecx edx esi] +[eax]
- mov edx, eax
- ; gcrRegs +[edx]
- test edx, edx
- jne G_M12223_IG04
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M12223_IG15: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax edx]
+ jmp SHORT G_M12223_IG05
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M12223_IG12: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax]
xor edx, edx
; gcrRegs +[edx]
- jmp SHORT G_M12223_IG08
+ jmp SHORT G_M12223_IG07
;; size=4 bbWeight=0 PerfScore 0.00
-G_M12223_IG16: ; bbWeight=0, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
+G_M12223_IG13: ; bbWeight=0, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
mov ecx, edx
; gcrRegs +[ecx]
call [<unknown method>]
@@ -193,6 +163,6 @@ G_M12223_IG16: ; bbWeight=0, gcrefRegs=00000004 {edx}, byrefRegs=00000000
int3
;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 267, prolog size 9, PerfScore 41.88, instruction count 86, allocated bytes for code 267 (MethodHash=40b9d040) for method System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
+; Total bytes of code 221, prolog size 9, PerfScore 37.88, instruction count 75, allocated bytes for code 221 (MethodHash=40b9d040) for method System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
; ============================================================
+40 (+9.85%) : 116806.dasm - System.Tests.Perf_Array:SetupArrayRetrieve1D():this (Tier0-FullOpts)
@@ -14,40 +14,39 @@
; V03 tmp1 [V03,T00] ( 5, 40 ) ref -> [ebp-0x2C] class-hnd spill-single-def "impImportAndPushBox" <System.Array>
;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Array>
; V05 tmp3 [V05 ] ( 3, 6 ) int -> [ebp-0x10] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
-;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
-;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V08 tmp6 [V08,T16] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
-; V09 tmp7 [V09,T09] ( 3, 4 ) int -> edi "Inlining Arg"
-; V10 tmp8 [V10,T10] ( 2, 2 ) ref -> ecx class-hnd single-def "Inline return value spill temp" <System.Array>
-; V11 tmp9 [V11 ] ( 4, 4 ) ref -> [ebp-0x14] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Array>
-; V12 tmp10 [V12 ] ( 3, 6 ) ref -> [ebp-0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inlining Arg" <System.RuntimeType>
-; V13 tmp11 [V13 ] ( 5, 10 ) struct ( 8) [ebp-0x20] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallTypeHandle>
-;* V14 tmp12 [V14 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Runtime.CompilerServices.QCallTypeHandle>
-;* V15 tmp13 [V15 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Runtime.CompilerServices.ObjectHandleOnStack>
-; V16 tmp14 [V16,T08] ( 3, 5 ) ref -> eax class-hnd exact single-def "dup spill" <System.RuntimeType>
-; V17 tmp15 [V17,T11] ( 2, 2 ) byref -> edx single-def
-;* V18 tmp16 [V18 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V19 tmp17 [V19 ] ( 0, 0 ) byref -> zero-ref single-def
-; V20 tmp18 [V20,T15] ( 3, 1.50) int -> eax
-;* V21 tmp19 [V21 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ObjectHandleOnStack>
-;* V22 tmp20 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V23 tmp21 [V23 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V24 tmp22 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Int32>
-; V25 tmp23 [V25,T06] ( 2, 4 ) int -> ecx "Inline return value spill temp"
-;* V26 tmp24 [V26 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V27 tmp25 [V27,T04] ( 3, 10 ) int -> ecx "Inline stloc first use temp"
-; V28 tmp26 [V28,T02] ( 3, 24 ) byref -> [ebp-0x30] spill-single-def "Inlining Arg"
-;* V29 tmp27 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V30 FramesRoot [V30,T07] ( 5, 5 ) int -> esi "Pinvoke FrameListRoot"
-; V31 PInvokeFrame [V31 ] ( 8, 8 ) struct (32) [ebp-0x50] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
-; V32 tmp30 [V32 ] ( 4, 6 ) int -> [ebp-0x20] do-not-enreg[X] addr-exposed "field V13._ptr (fldOffset=0x0)" P-DEP
-; V33 tmp31 [V33 ] ( 3, 5 ) int -> [ebp-0x1C] do-not-enreg[X] addr-exposed "field V13._handle (fldOffset=0x4)" P-DEP
-; V34 tmp32 [V34,T12] ( 2, 2 ) int -> eax single-def "field V14._ptr (fldOffset=0x0)" P-INDEP
-; V35 tmp33 [V35,T13] ( 2, 2 ) int -> edx single-def "field V14._handle (fldOffset=0x4)" P-INDEP
-;* V36 tmp34 [V36 ] ( 0, 0 ) int -> zero-ref "field V15._ptr (fldOffset=0x0)" P-INDEP
-; V37 tmp35 [V37,T14] ( 2, 2 ) int -> ecx single-def "field V21._ptr (fldOffset=0x0)" P-INDEP
-; V38 tmp36 [V38,T18] ( 2, 0 ) ref -> edx single-def "argument with side effect"
-;* V39 cse0 [V39,T17] ( 0, 0 ) int -> zero-ref "CSE - moderate"
+; V06 tmp4 [V06,T11] ( 3, 3 ) ref -> eax class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
+; V07 tmp5 [V07,T10] ( 3, 4 ) int -> edi "Inlining Arg"
+; V08 tmp6 [V08,T12] ( 2, 2 ) ref -> ecx class-hnd single-def "Inline return value spill temp" <System.Array>
+; V09 tmp7 [V09 ] ( 4, 4 ) ref -> [ebp-0x14] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Array>
+; V10 tmp8 [V10 ] ( 3, 6 ) ref -> [ebp-0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inlining Arg" <System.RuntimeType>
+; V11 tmp9 [V11 ] ( 5, 10 ) struct ( 8) [ebp-0x20] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallTypeHandle>
+;* V12 tmp10 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Runtime.CompilerServices.QCallTypeHandle>
+;* V13 tmp11 [V13 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Runtime.CompilerServices.ObjectHandleOnStack>
+; V14 tmp12 [V14,T09] ( 3, 5 ) ref -> eax class-hnd exact single-def "dup spill" <System.RuntimeType>
+; V15 tmp13 [V15,T13] ( 2, 2 ) byref -> edx single-def
+;* V16 tmp14 [V16 ] ( 0, 0 ) ref -> zero-ref single-def
+;* V17 tmp15 [V17 ] ( 0, 0 ) byref -> zero-ref single-def
+; V18 tmp16 [V18,T17] ( 3, 1.50) int -> eax
+;* V19 tmp17 [V19 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ObjectHandleOnStack>
+;* V20 tmp18 [V20 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V21 tmp19 [V21 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V22 tmp20 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Int32>
+; V23 tmp21 [V23,T07] ( 2, 4 ) int -> ecx "Inline return value spill temp"
+;* V24 tmp22 [V24 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V25 tmp23 [V25,T04] ( 3, 10 ) int -> ecx "Inline stloc first use temp"
+; V26 tmp24 [V26,T02] ( 3, 24 ) byref -> [ebp-0x30] spill-single-def "Inlining Arg"
+;* V27 tmp25 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V28 FramesRoot [V28,T08] ( 5, 5 ) int -> esi "Pinvoke FrameListRoot"
+; V29 PInvokeFrame [V29 ] ( 8, 8 ) struct (32) [ebp-0x50] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+; V30 tmp28 [V30 ] ( 4, 6 ) int -> [ebp-0x20] do-not-enreg[X] addr-exposed "field V11._ptr (fldOffset=0x0)" P-DEP
+; V31 tmp29 [V31 ] ( 3, 5 ) int -> [ebp-0x1C] do-not-enreg[X] addr-exposed "field V11._handle (fldOffset=0x4)" P-DEP
+; V32 tmp30 [V32,T14] ( 2, 2 ) int -> eax single-def "field V12._ptr (fldOffset=0x0)" P-INDEP
+; V33 tmp31 [V33,T15] ( 2, 2 ) int -> edx single-def "field V12._handle (fldOffset=0x4)" P-INDEP
+;* V34 tmp32 [V34 ] ( 0, 0 ) int -> zero-ref "field V13._ptr (fldOffset=0x0)" P-INDEP
+; V35 tmp33 [V35,T16] ( 2, 2 ) int -> ecx single-def "field V19._ptr (fldOffset=0x0)" P-INDEP
+; V36 tmp34 [V36,T19] ( 2, 0 ) ref -> edx single-def "argument with side effect"
+;* V37 cse0 [V37,T18] ( 0, 0 ) int -> zero-ref "CSE - moderate"
+; V38 rat0 [V38,T06] ( 5, 7.50) ref -> eax "replacement local"
;
; Lcl frame size = 68
@@ -70,20 +69,36 @@ G_M36671_IG02: ; bbWeight=1, gcVars=00000020 {V00}, gcrefRegs=00000000 {}
mov eax, ebp
mov dword ptr [ebp-0x38], eax
test byte ptr [D1FFAB1EH], 1 ; global ptr
- je G_M36671_IG19
+ je G_M36671_IG22
;; size=26 bbWeight=1 PerfScore 6.75
-G_M36671_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M36671_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, dword ptr [D1FFAB1EH] ; static handle
mov dword ptr [ebp-0x10], eax
mov edi, dword ptr [ebp-0x10]
test edi, edi
- jl G_M36671_IG20
- mov gword ptr [ebp-0x18], 0xD1FFAB1E
+ jl G_M36671_IG23
+ mov eax, 0xD1FFAB1E
+ ; gcrRegs +[eax]
+ test eax, eax
+ je SHORT G_M36671_IG06
+ ;; size=28 bbWeight=1 PerfScore 6.75
+G_M36671_IG04: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
+ cmp dword ptr [eax], 0xD1FFAB1E
+ je SHORT G_M36671_IG06
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M36671_IG05: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax]
xor eax, eax
; gcrRegs +[eax]
+ ;; size=2 bbWeight=0.25 PerfScore 0.06
+G_M36671_IG06: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
+ test eax, eax
+ je G_M36671_IG24
+ mov gword ptr [ebp-0x18], eax
+ xor eax, eax
mov gword ptr [ebp-0x14], eax
- ;; size=31 bbWeight=1 PerfScore 7.50
-G_M36671_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ;; size=16 bbWeight=1 PerfScore 3.50
+G_M36671_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax]
mov dword ptr [ebp-0x20], eax
mov dword ptr [ebp-0x1C], eax
@@ -94,13 +109,13 @@ G_M36671_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
lea edx, bword ptr [ebp-0x20]
; byrRegs +[edx]
test eax, eax
- je G_M36671_IG21
+ je G_M36671_IG25
;; size=26 bbWeight=1 PerfScore 6.25
-G_M36671_IG05: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000004 {edx}, byref
+G_M36671_IG08: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000004 {edx}, byref
mov eax, dword ptr [eax+0x0C]
; gcrRegs -[eax]
;; size=3 bbWeight=0.50 PerfScore 1.00
-G_M36671_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000004 {edx}, byref
+G_M36671_IG09: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000004 {edx}, byref
mov dword ptr [edx+0x04], eax
mov eax, dword ptr [ebp-0x20]
mov edx, dword ptr [ebp-0x1C]
@@ -117,29 +132,29 @@ G_M36671_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000004 {e
mov dword ptr [ebp-0x44], 0xD1FFAB1E
mov eax, esp
mov dword ptr [ebp-0x40], eax
- lea eax, G_M36671_IG09
+ lea eax, G_M36671_IG12
mov dword ptr [ebp-0x3C], eax
mov byte ptr [esi+0x08], 0
;; size=50 bbWeight=1 PerfScore 16.25
-G_M36671_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M36671_IG10: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, 0xD1FFAB1E ; function address
;; size=5 bbWeight=1 PerfScore 0.25
-G_M36671_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M36671_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
call eax ; <unknown method>
;; size=2 bbWeight=1 PerfScore 3.00
-G_M36671_IG09: ; bbWeight=1, isz, extend
+G_M36671_IG12: ; bbWeight=1, isz, extend
mov byte ptr [esi+0x08], 1
cmp dword ptr [D1FFAB1EH], 0
- je SHORT G_M36671_IG10
+ je SHORT G_M36671_IG13
call CORINFO_HELP_STOP_FOR_GC
;; size=18 bbWeight=1 PerfScore 6.00
-G_M36671_IG10: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M36671_IG13: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
xor edx, edx
mov dword ptr [ebp-0x3C], edx
mov ecx, gword ptr [ebp-0x14]
; gcrRegs +[ecx]
;; size=8 bbWeight=1 PerfScore 2.25
-G_M36671_IG11: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+G_M36671_IG14: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
mov gword ptr [ebp-0x14], edx
mov ebx, gword ptr [ebp-0x24]
; gcrRegs +[ebx]
@@ -151,9 +166,9 @@ G_M36671_IG11: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000
; byrRegs -[edx]
xor edi, edi
cmp dword ptr [D1FFAB1EH], 0
- jle SHORT G_M36671_IG16
+ jle SHORT G_M36671_IG19
;; size=25 bbWeight=1 PerfScore 7.75
-G_M36671_IG12: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
+G_M36671_IG15: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
mov ecx, 0xD1FFAB1E ; System.Int32
call CORINFO_HELP_NEWSFAST
; gcrRegs +[eax]
@@ -166,25 +181,25 @@ G_M36671_IG12: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000
mov dword ptr [eax+0x04], edi
mov ecx, dword ptr [edx]
mov bword ptr [ebp-0x30], ecx
- ; GC ptr vars +{V28}
+ ; GC ptr vars +{V26}
test dword ptr [ecx], 0xD1FFAB1E
- je G_M36671_IG22
+ je G_M36671_IG26
;; size=39 bbWeight=4 PerfScore 53.00
-G_M36671_IG13: ; bbWeight=4, gcVars=00000007 {V02 V03 V28}, gcrefRegs=0000000C {edx ebx}, byrefRegs=00000002 {ecx}, gcvars, byref, isz
+G_M36671_IG16: ; bbWeight=4, gcVars=00000007 {V02 V03 V26}, gcrefRegs=0000000C {edx ebx}, byrefRegs=00000002 {ecx}, gcvars, byref, isz
; gcrRegs -[eax]
; byrRegs +[ecx]
mov ecx, dword ptr [ecx+0x04]
; byrRegs -[ecx]
add ecx, -12
shr ecx, 3
- je SHORT G_M36671_IG15
+ je SHORT G_M36671_IG18
;; size=11 bbWeight=4 PerfScore 15.00
-G_M36671_IG14: ; bbWeight=2, gcVars=00000003 {V02 V03}, gcrefRegs=0000000C {edx ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V02 V28}
+G_M36671_IG17: ; bbWeight=2, gcVars=00000003 {V02 V03}, gcrefRegs=0000000C {edx ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars -{V02 V26}
cmp ecx, 1
- jne SHORT G_M36671_IG18
+ jne SHORT G_M36671_IG21
;; size=5 bbWeight=2 PerfScore 2.50
-G_M36671_IG15: ; bbWeight=4, gcrefRegs=0000000C {edx ebx}, byrefRegs=00000000 {}, byref, isz
+G_M36671_IG18: ; bbWeight=4, gcrefRegs=0000000C {edx ebx}, byrefRegs=00000000 {}, byref, isz
mov ecx, edx
; gcrRegs +[ecx]
mov edx, edi
@@ -201,15 +216,15 @@ G_M36671_IG15: ; bbWeight=4, gcrefRegs=0000000C {edx ebx}, byrefRegs=0000
; gcrRegs -[ecx edx]
inc edi
cmp edi, dword ptr [D1FFAB1EH] ; static handle
- jl SHORT G_M36671_IG12
+ jl SHORT G_M36671_IG15
;; size=31 bbWeight=4 PerfScore 47.00
-G_M36671_IG16: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M36671_IG19: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[ebx]
mov ecx, bword ptr [ebp-0x48]
; byrRegs +[ecx]
mov dword ptr [esi+0x0C], ecx
;; size=6 bbWeight=1 PerfScore 2.00
-G_M36671_IG17: ; bbWeight=1, epilog, nogc, extend
+G_M36671_IG20: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -217,20 +232,20 @@ G_M36671_IG17: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret
;; size=8 bbWeight=1 PerfScore 3.50
-G_M36671_IG18: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M36671_IG21: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; byrRegs -[ecx]
mov ecx, 58
call [System.ThrowHelper:ThrowArgumentException(int)]
int3
;; size=12 bbWeight=0 PerfScore 0.00
-G_M36671_IG19: ; bbWeight=0, gcVars=00000020 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M36671_IG22: ; bbWeight=0, gcVars=00000020 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; GC ptr vars +{V00}
...
+40 (+10.23%) : 40205.dasm - System.Tests.Perf_Array:SetupArrayRetrieve2D():this (Tier0-FullOpts)
@@ -14,41 +14,40 @@
; V03 tmp0 [V03,T00] ( 3, 96 ) ref -> eax class-hnd exact "Single-def Box Helper" <System.Int32>
; V04 tmp1 [V04,T02] ( 2, 64 ) ref -> ecx class-hnd "impImportAndPushBox" <System.Array>
;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Array>
-; V06 tmp3 [V06,T05] ( 4, 6 ) int -> edi "Inlining Arg"
-; V07 tmp4 [V07,T08] ( 2, 4 ) int -> eax "Inlining Arg"
-;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
-;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V10 tmp7 [V10,T17] ( 0, 0 ) ref -> zero-ref class-hnd exact ptr "Inline stloc first use temp" <System.RuntimeType>
-; V11 tmp8 [V11 ] ( 3, 3 ) struct ( 8) [ebp-0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
-; V12 tmp9 [V12,T12] ( 2, 2 ) int -> eax single-def "Inline stloc first use temp"
-; V13 tmp10 [V13,T18] ( 1, 1 ) int -> [ebp-0x20] do-not-enreg[V] "GSCookie dummy for inlinee"
-; V14 tmp11 [V14,T10] ( 2, 2 ) ref -> ecx class-hnd single-def "Inline return value spill temp" <System.Array>
-; V15 tmp12 [V15 ] ( 4, 4 ) ref -> [ebp-0x24] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Array>
-; V16 tmp13 [V16 ] ( 3, 6 ) ref -> [ebp-0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ptr "Inlining Arg" <System.RuntimeType>
-; V17 tmp14 [V17 ] ( 5, 10 ) struct ( 8) [ebp-0x30] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallTypeHandle>
-;* V18 tmp15 [V18 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Runtime.CompilerServices.QCallTypeHandle>
-;* V19 tmp16 [V19 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Runtime.CompilerServices.ObjectHandleOnStack>
-; V20 tmp17 [V20,T07] ( 3, 5 ) ref -> edx class-hnd exact single-def "dup spill" <System.RuntimeType>
-; V21 tmp18 [V21,T11] ( 2, 2 ) byref -> ecx single-def
-;* V22 tmp19 [V22 ] ( 0, 0 ) ref -> zero-ref single-def ptr
-;* V23 tmp20 [V23 ] ( 0, 0 ) byref -> zero-ref single-def ptr
-; V24 tmp21 [V24,T16] ( 3, 1.50) int -> edx
-;* V25 tmp22 [V25 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ObjectHandleOnStack>
-;* V26 tmp23 [V26 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V27 tmp24 [V27 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V28 FramesRoot [V28,T06] ( 5, 5 ) int -> [ebp-0x34] spill-single-def "Pinvoke FrameListRoot"
-; V29 PInvokeFrame [V29 ] ( 8, 8 ) struct (32) [ebp-0x58] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
-; V30 tmp27 [V30 ] ( 4, 6 ) int -> [ebp-0x30] do-not-enreg[X] addr-exposed "field V17._ptr (fldOffset=0x0)" P-DEP
-; V31 tmp28 [V31 ] ( 3, 5 ) int -> [ebp-0x2C] do-not-enreg[X] addr-exposed "field V17._handle (fldOffset=0x4)" P-DEP
-; V32 tmp29 [V32,T13] ( 2, 2 ) int -> edx single-def "field V18._ptr (fldOffset=0x0)" P-INDEP
-; V33 tmp30 [V33,T14] ( 2, 2 ) int -> ecx single-def "field V18._handle (fldOffset=0x4)" P-INDEP
-;* V34 tmp31 [V34 ] ( 0, 0 ) int -> zero-ref "field V19._ptr (fldOffset=0x0)" P-INDEP
-; V35 tmp32 [V35,T15] ( 2, 2 ) int -> edi single-def "field V25._ptr (fldOffset=0x0)" P-INDEP
-; V36 tmp33 [V36,T20] ( 2, 0 ) ref -> edx single-def "argument with side effect"
-;* V37 tmp34 [V37 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V38 GsCookie [V38 ] ( 1, 1 ) int -> [ebp-0x10] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V39 cse0 [V39,T09] ( 3, 3 ) int -> eax "CSE - moderate"
-;* V40 cse1 [V40,T19] ( 0, 0 ) int -> zero-ref "CSE - moderate"
+; V06 tmp3 [V06,T06] ( 4, 6 ) int -> edi "Inlining Arg"
+; V07 tmp4 [V07,T09] ( 2, 4 ) int -> eax "Inlining Arg"
+; V08 tmp5 [V08,T10] ( 3, 3 ) ref -> edx class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
+; V09 tmp6 [V09 ] ( 3, 3 ) struct ( 8) [ebp-0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
+; V10 tmp7 [V10,T14] ( 2, 2 ) int -> eax single-def "Inline stloc first use temp"
+; V11 tmp8 [V11,T19] ( 1, 1 ) int -> [ebp-0x20] do-not-enreg[V] "GSCookie dummy for inlinee"
+; V12 tmp9 [V12,T12] ( 2, 2 ) ref -> ecx class-hnd single-def "Inline return value spill temp" <System.Array>
+; V13 tmp10 [V13 ] ( 4, 4 ) ref -> [ebp-0x24] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Array>
+; V14 tmp11 [V14 ] ( 3, 6 ) ref -> [ebp-0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ptr "Inlining Arg" <System.RuntimeType>
+; V15 tmp12 [V15 ] ( 5, 10 ) struct ( 8) [ebp-0x30] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallTypeHandle>
+;* V16 tmp13 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Runtime.CompilerServices.QCallTypeHandle>
+;* V17 tmp14 [V17 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Runtime.CompilerServices.ObjectHandleOnStack>
+; V18 tmp15 [V18,T08] ( 3, 5 ) ref -> edx class-hnd exact single-def "dup spill" <System.RuntimeType>
+; V19 tmp16 [V19,T13] ( 2, 2 ) byref -> ecx single-def
+;* V20 tmp17 [V20 ] ( 0, 0 ) ref -> zero-ref single-def ptr
+;* V21 tmp18 [V21 ] ( 0, 0 ) byref -> zero-ref single-def ptr
+; V22 tmp19 [V22,T18] ( 3, 1.50) int -> edx
+;* V23 tmp20 [V23 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ObjectHandleOnStack>
+;* V24 tmp21 [V24 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V25 tmp22 [V25 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V26 FramesRoot [V26,T07] ( 5, 5 ) int -> [ebp-0x34] spill-single-def "Pinvoke FrameListRoot"
+; V27 PInvokeFrame [V27 ] ( 8, 8 ) struct (32) [ebp-0x58] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+; V28 tmp25 [V28 ] ( 4, 6 ) int -> [ebp-0x30] do-not-enreg[X] addr-exposed "field V15._ptr (fldOffset=0x0)" P-DEP
+; V29 tmp26 [V29 ] ( 3, 5 ) int -> [ebp-0x2C] do-not-enreg[X] addr-exposed "field V15._handle (fldOffset=0x4)" P-DEP
+; V30 tmp27 [V30,T15] ( 2, 2 ) int -> edx single-def "field V16._ptr (fldOffset=0x0)" P-INDEP
+; V31 tmp28 [V31,T16] ( 2, 2 ) int -> ecx single-def "field V16._handle (fldOffset=0x4)" P-INDEP
+;* V32 tmp29 [V32 ] ( 0, 0 ) int -> zero-ref "field V17._ptr (fldOffset=0x0)" P-INDEP
+; V33 tmp30 [V33,T17] ( 2, 2 ) int -> edi single-def "field V23._ptr (fldOffset=0x0)" P-INDEP
+; V34 tmp31 [V34,T21] ( 2, 0 ) ref -> edx single-def "argument with side effect"
+;* V35 tmp32 [V35 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V36 GsCookie [V36 ] ( 1, 1 ) int -> [ebp-0x10] do-not-enreg[X] addr-exposed "GSSecurityCookie"
+; V37 cse0 [V37,T11] ( 3, 3 ) int -> eax "CSE - moderate"
+;* V38 cse1 [V38,T20] ( 0, 0 ) int -> zero-ref "CSE - moderate"
+; V39 rat0 [V39,T05] ( 5, 7.50) ref -> edx "replacement local"
;
; Lcl frame size = 76
@@ -75,22 +74,38 @@ G_M59132_IG02: ; bbWeight=1, gcVars=00000010 {V00}, gcrefRegs=00000000 {}
mov eax, ebp
mov dword ptr [ebp-0x40], eax
test byte ptr [D1FFAB1EH], 1 ; global ptr
- je G_M59132_IG17
+ je G_M59132_IG20
;; size=29 bbWeight=1 PerfScore 7.75
-G_M59132_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M59132_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, dword ptr [D1FFAB1EH] ; static handle
mov edi, eax
test edi, edi
- jl G_M59132_IG18
+ jl G_M59132_IG21
+ mov edx, 0xD1FFAB1E
+ ; gcrRegs +[edx]
+ test edx, edx
+ je SHORT G_M59132_IG06
+ ;; size=24 bbWeight=1 PerfScore 5.00
+G_M59132_IG04: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ cmp dword ptr [edx], 0xD1FFAB1E
+ je SHORT G_M59132_IG06
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M59132_IG05: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[edx]
+ xor edx, edx
+ ; gcrRegs +[edx]
+ ;; size=2 bbWeight=0.25 PerfScore 0.06
+G_M59132_IG06: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
+ test edx, edx
+ je G_M59132_IG22
mov dword ptr [ebp-0x18], edi
mov dword ptr [ebp-0x14], eax
lea eax, [ebp-0x18]
- mov gword ptr [ebp-0x28], 0xD1FFAB1E
+ mov gword ptr [ebp-0x28], edx
xor edx, edx
- ; gcrRegs +[edx]
mov gword ptr [ebp-0x24], edx
- ;; size=36 bbWeight=1 PerfScore 8.25
-G_M59132_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ;; size=25 bbWeight=1 PerfScore 6.00
+G_M59132_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[edx]
mov dword ptr [ebp-0x30], edx
mov dword ptr [ebp-0x2C], edx
@@ -101,13 +116,13 @@ G_M59132_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
lea ecx, bword ptr [ebp-0x30]
; byrRegs +[ecx]
test edx, edx
- je G_M59132_IG19
+ je G_M59132_IG23
;; size=26 bbWeight=1 PerfScore 6.25
-G_M59132_IG05: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref
+G_M59132_IG08: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref
mov edx, dword ptr [edx+0x0C]
; gcrRegs -[edx]
;; size=3 bbWeight=0.50 PerfScore 1.00
-G_M59132_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, byref
+G_M59132_IG09: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, byref
mov dword ptr [ecx+0x04], edx
mov edx, dword ptr [ebp-0x30]
mov ecx, dword ptr [ebp-0x2C]
@@ -123,29 +138,29 @@ G_M59132_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000002 {e
mov dword ptr [ebp-0x4C], 0xD1FFAB1E
mov eax, esp
mov dword ptr [ebp-0x48], eax
- lea eax, G_M59132_IG09
+ lea eax, G_M59132_IG12
mov dword ptr [ebp-0x44], eax
mov byte ptr [esi+0x08], 0
;; size=47 bbWeight=1 PerfScore 15.75
-G_M59132_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M59132_IG10: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, 0xD1FFAB1E ; function address
;; size=5 bbWeight=1 PerfScore 0.25
-G_M59132_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M59132_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
call eax ; <unknown method>
;; size=2 bbWeight=1 PerfScore 3.00
-G_M59132_IG09: ; bbWeight=1, isz, extend
+G_M59132_IG12: ; bbWeight=1, isz, extend
mov byte ptr [esi+0x08], 1
cmp dword ptr [D1FFAB1EH], 0
- je SHORT G_M59132_IG10
+ je SHORT G_M59132_IG13
call CORINFO_HELP_STOP_FOR_GC
;; size=18 bbWeight=1 PerfScore 6.00
-G_M59132_IG10: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M59132_IG13: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
xor edx, edx
mov dword ptr [ebp-0x44], edx
mov ecx, gword ptr [ebp-0x24]
; gcrRegs +[ecx]
;; size=8 bbWeight=1 PerfScore 2.25
-G_M59132_IG11: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+G_M59132_IG14: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
mov gword ptr [ebp-0x24], edx
mov ebx, gword ptr [ebp-0x38]
; gcrRegs +[ebx]
@@ -157,15 +172,15 @@ G_M59132_IG11: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000
; byrRegs -[edx]
xor edi, edi
cmp dword ptr [D1FFAB1EH], 0
- jle SHORT G_M59132_IG15
+ jle SHORT G_M59132_IG18
;; size=25 bbWeight=1 PerfScore 7.75
-G_M59132_IG12: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
+G_M59132_IG15: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
xor eax, eax
mov dword ptr [ebp-0x1C], eax
cmp dword ptr [D1FFAB1EH], 0
- jle SHORT G_M59132_IG14
+ jle SHORT G_M59132_IG17
;; size=14 bbWeight=4 PerfScore 21.00
-G_M59132_IG13: ; bbWeight=16, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
+G_M59132_IG16: ; bbWeight=16, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
mov ecx, 0xD1FFAB1E ; System.Int32
call CORINFO_HELP_NEWSFAST
; gcrRegs +[eax]
@@ -186,25 +201,25 @@ G_M59132_IG13: ; bbWeight=16, gcrefRegs=00000008 {ebx}, byrefRegs=0000000
inc esi
cmp esi, dword ptr [D1FFAB1EH] ; static handle
mov dword ptr [ebp-0x1C], esi
- jl SHORT G_M59132_IG13
+ jl SHORT G_M59132_IG16
;; size=52 bbWeight=16 PerfScore 340.00
-G_M59132_IG14: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
+G_M59132_IG17: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
inc edi
cmp edi, dword ptr [D1FFAB1EH] ; static handle
- jl SHORT G_M59132_IG12
+ jl SHORT G_M59132_IG15
;; size=9 bbWeight=4 PerfScore 17.00
-G_M59132_IG15: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M59132_IG18: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ebx]
mov ecx, bword ptr [ebp-0x50]
; byrRegs +[ecx]
mov esi, dword ptr [ebp-0x34]
mov dword ptr [esi+0x0C], ecx
cmp dword ptr [ebp-0x10], 0xD1FFAB1E
- je SHORT G_M59132_IG16
+ je SHORT G_M59132_IG19
call CORINFO_HELP_FAIL_FAST
; byrRegs -[ecx]
;; size=23 bbWeight=1 PerfScore 7.00
-G_M59132_IG16: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M59132_IG19: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -212,14 +227,14 @@ G_M59132_IG16: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
pop ebp
ret
;; size=8 bbWeight=1 PerfScore 3.50
-G_M59132_IG17: ; bbWeight=0, gcVars=00000010 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M59132_IG20: ; bbWeight=0, gcVars=00000010 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; GC ptr vars +{V00 V04}
mov ecx, 0xD1FFAB1E
mov edx, 417
call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
jmp G_M59132_IG03
;; size=20 bbWeight=0 PerfScore 0.00
-G_M59132_IG18: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M59132_IG21: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; GC ptr vars -{V00 V04}
mov ecx, 0x784
mov edx, 0xD1FFAB1E
@@ -232,13 +247,19 @@ G_M59132_IG18: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, b
; gcrRegs -[eax edx]
int3
;; size=26 bbWeight=0 PerfScore 0.00
-G_M59132_IG19: ; bbWeight=0, gcVars=00000010 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, gcvars, byref
...
+14 (+10.61%) : 25342.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
@@ -10,23 +10,21 @@
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 11, 7 ) ref -> esi class-hnd single-def <System.Type>
-; V01 tmp0 [V01,T06] ( 3, 2 ) ref -> eax "guarded devirt return temp"
+; V01 tmp0 [V01,T05] ( 3, 2 ) ref -> eax "guarded devirt return temp"
;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
-; V03 tmp2 [V03,T05] ( 4, 2 ) ubyte -> edx "Inline return value spill temp"
-;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V05 tmp4 [V05,T10] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
-;* V06 tmp5 [V06 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.TypeHandle>
-; V07 tmp6 [V07,T07] ( 3, 2 ) int -> ebx
-; V08 tmp7 [V08,T08] ( 2, 2 ) ubyte -> edx "Inline stloc first use temp"
-;* V09 tmp8 [V09 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TypeHandle>
-;* V10 tmp9 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V11 tmp10 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V12 tmp11 [V12,T02] ( 2, 4 ) byref -> eax single-def "Inlining Arg"
-;* V13 tmp12 [V13,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V14 tmp13 [V14,T03] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V15 tmp14 [V15 ] ( 0, 0 ) int -> zero-ref "field V06.m_asTAddr (fldOffset=0x0)" P-INDEP
-; V16 tmp15 [V16,T04] ( 3, 3 ) int -> eax "field V09.m_asTAddr (fldOffset=0x0)" P-INDEP
-; V17 cse0 [V17,T01] ( 3, 3 ) int -> edi "CSE - aggressive"
+; V03 tmp2 [V03,T06] ( 3, 2 ) ubyte -> edx "Inline return value spill temp"
+; V04 tmp3 [V04,T02] ( 4, 4 ) ref -> edi class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
+;* V05 tmp4 [V05 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.TypeHandle>
+; V06 tmp5 [V06,T07] ( 3, 2 ) int -> ebx
+; V07 tmp6 [V07,T08] ( 2, 2 ) ubyte -> edx "Inline stloc first use temp"
+;* V08 tmp7 [V08 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TypeHandle>
+;* V09 tmp8 [V09 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V10 tmp9 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V11 tmp10 [V11,T03] ( 2, 4 ) byref -> eax single-def "Inlining Arg"
+;* V12 tmp11 [V12,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V13 tmp12 [V13 ] ( 0, 0 ) int -> zero-ref "field V05.m_asTAddr (fldOffset=0x0)" P-INDEP
+; V14 tmp13 [V14,T04] ( 3, 3 ) int -> eax "field V08.m_asTAddr (fldOffset=0x0)" P-INDEP
+; V15 rat0 [V15,T01] ( 5, 7.50) ref -> edi "replacement local"
;
; Lcl frame size = 0
@@ -40,61 +38,81 @@ G_M8853_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
; gcrRegs +[esi]
;; size=8 bbWeight=1 PerfScore 4.50
G_M8853_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov edi, dword ptr [esi]
- cmp edi, 0xD1FFAB1E
- jne SHORT G_M8853_IG10
- mov eax, dword ptr [esi+0x0C]
+ mov ebx, esi
+ ; gcrRegs +[ebx]
+ cmp byte ptr [ebx], bl
+ mov edi, esi
+ ; gcrRegs +[edi]
+ test edi, edi
+ je SHORT G_M8853_IG04
+ ;; size=10 bbWeight=1 PerfScore 4.75
+G_M8853_IG03: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[ebx]
+ cmp dword ptr [edi], 0xD1FFAB1E
+ jne SHORT G_M8853_IG11
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M8853_IG04: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ test edi, edi
+ je SHORT G_M8853_IG13
+ mov eax, dword ptr [edi+0x0C]
test al, 2
- jne SHORT G_M8853_IG09
+ jne SHORT G_M8853_IG12
mov eax, dword ptr [eax]
and eax, 0xD1FFAB1E
xor ebx, ebx
cmp eax, 0xD1FFAB1E
sete bl
- ;; size=34 bbWeight=1 PerfScore 10.25
-G_M8853_IG03: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=28 bbWeight=1 PerfScore 8.25
+G_M8853_IG05: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
movzx edx, bl
+ ;; size=3 bbWeight=1 PerfScore 0.25
+G_M8853_IG06: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[edi]
test edx, edx
- jne SHORT G_M8853_IG11
- ;; size=7 bbWeight=1 PerfScore 1.50
-G_M8853_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ jne SHORT G_M8853_IG15
cmp esi, 0xD1FFAB1E
- jne SHORT G_M8853_IG07
- ;; size=8 bbWeight=1 PerfScore 1.25
-G_M8853_IG05: ; bbWeight=0.80, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ jne SHORT G_M8853_IG09
+ ;; size=12 bbWeight=1 PerfScore 2.50
+G_M8853_IG07: ; bbWeight=0.80, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi]
xor eax, eax
; gcrRegs +[eax]
;; size=2 bbWeight=0.80 PerfScore 0.20
-G_M8853_IG06: ; bbWeight=0.80, epilog, nogc, extend
+G_M8853_IG08: ; bbWeight=0.80, epilog, nogc, extend
pop ebx
pop esi
pop edi
pop ebp
ret
;; size=5 bbWeight=0.80 PerfScore 2.39
-G_M8853_IG07: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M8853_IG09: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax] +[esi]
- cmp edi, 0xD1FFAB1E
- jne SHORT G_M8853_IG13
+ cmp dword ptr [esi], 0xD1FFAB1E
+ jne SHORT G_M8853_IG14
mov ecx, esi
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[ecx esi] +[eax]
- ;; size=16 bbWeight=1 PerfScore 4.50
-G_M8853_IG08: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=16 bbWeight=1 PerfScore 7.25
+G_M8853_IG10: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
pop ebx
pop esi
pop edi
pop ebp
ret
;; size=5 bbWeight=1 PerfScore 3.00
-G_M8853_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M8853_IG11: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax] +[esi]
+ xor edi, edi
+ ; gcrRegs +[edi]
+ jmp SHORT G_M8853_IG04
+ ;; size=4 bbWeight=0.25 PerfScore 0.56
+G_M8853_IG12: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
xor ebx, ebx
- jmp SHORT G_M8853_IG03
+ jmp SHORT G_M8853_IG05
;; size=4 bbWeight=0 PerfScore 0.00
-G_M8853_IG10: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M8853_IG13: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[edi]
mov ecx, esi
; gcrRegs +[ecx]
mov eax, dword ptr [esi]
@@ -104,32 +122,30 @@ G_M8853_IG10: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000
xor edx, edx
test al, 32
setne dl
- test edx, edx
- je SHORT G_M8853_IG04
- ;; size=21 bbWeight=0 PerfScore 0.00
-G_M8853_IG11: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[esi]
- mov eax, 0xD1FFAB1E
- ; gcrRegs +[eax]
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M8853_IG12: ; bbWeight=0, epilog, nogc, extend
- pop ebx
- pop esi
- pop edi
- pop ebp
- ret
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M8853_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax] +[esi]
+ jmp SHORT G_M8853_IG06
+ ;; size=19 bbWeight=0 PerfScore 0.00
+G_M8853_IG14: ; 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_IG08
+ jmp SHORT G_M8853_IG10
;; size=12 bbWeight=0 PerfScore 0.00
+G_M8853_IG15: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax]
+ mov eax, 0xD1FFAB1E
+ ; gcrRegs +[eax]
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M8853_IG16: ; bbWeight=0, epilog, nogc, extend
+ pop ebx
+ pop esi
+ pop edi
+ pop ebp
+ ret
+ ;; size=5 bbWeight=0 PerfScore 0.00
-; Total bytes of code 132, prolog size 6, PerfScore 27.59, instruction count 59, allocated bytes for code 132 (MethodHash=a7e7dd6a) for method System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
+; Total bytes of code 146, prolog size 6, PerfScore 35.65, instruction count 66, allocated bytes for code 146 (MethodHash=a7e7dd6a) for method System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
; ============================================================
benchmarks.run_tiered.windows.x86.checked.mch
-16 (-39.02%) : 12058.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%) : 20818.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%) : 2689.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)
; ============================================================
+40 (+10.20%) : 47637.dasm - System.Tests.Perf_Array:SetupArrayRetrieve1D():this (Tier0-FullOpts)
@@ -14,40 +14,39 @@
; V03 tmp1 [V03,T00] ( 5, 40 ) ref -> [ebp-0x2C] class-hnd spill-single-def "impImportAndPushBox" <System.Array>
;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Array>
; V05 tmp3 [V05 ] ( 3, 6 ) int -> [ebp-0x10] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
-;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
-;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V08 tmp6 [V08,T16] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
-; V09 tmp7 [V09,T09] ( 3, 4 ) int -> edi "Inlining Arg"
-; V10 tmp8 [V10,T11] ( 2, 2 ) ref -> ecx class-hnd single-def "Inline return value spill temp" <System.Array>
-; V11 tmp9 [V11 ] ( 4, 4 ) ref -> [ebp-0x14] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Array>
-; V12 tmp10 [V12 ] ( 3, 6 ) ref -> [ebp-0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inlining Arg" <System.RuntimeType>
-; V13 tmp11 [V13 ] ( 5, 10 ) struct ( 8) [ebp-0x20] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallTypeHandle>
-;* V14 tmp12 [V14 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Runtime.CompilerServices.QCallTypeHandle>
-;* V15 tmp13 [V15 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Runtime.CompilerServices.ObjectHandleOnStack>
-; V16 tmp14 [V16,T08] ( 3, 5 ) ref -> eax class-hnd exact single-def "dup spill" <System.RuntimeType>
-; V17 tmp15 [V17,T12] ( 2, 2 ) byref -> edx single-def
-;* V18 tmp16 [V18 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V19 tmp17 [V19 ] ( 0, 0 ) byref -> zero-ref single-def
-; V20 tmp18 [V20,T10] ( 3, 2 ) int -> ecx
-;* V21 tmp19 [V21 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ObjectHandleOnStack>
-;* V22 tmp20 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V23 tmp21 [V23 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V24 tmp22 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Int32>
-; V25 tmp23 [V25,T06] ( 2, 4 ) int -> ecx "Inline return value spill temp"
-;* V26 tmp24 [V26 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V27 tmp25 [V27,T04] ( 3, 10 ) int -> ecx "Inline stloc first use temp"
-; V28 tmp26 [V28,T02] ( 3, 24 ) byref -> [ebp-0x30] spill-single-def "Inlining Arg"
-;* V29 tmp27 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V30 FramesRoot [V30,T07] ( 5, 5 ) int -> esi "Pinvoke FrameListRoot"
-; V31 PInvokeFrame [V31 ] ( 8, 8 ) struct (32) [ebp-0x50] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
-; V32 tmp30 [V32 ] ( 4, 6 ) int -> [ebp-0x20] do-not-enreg[X] addr-exposed "field V13._ptr (fldOffset=0x0)" P-DEP
-; V33 tmp31 [V33 ] ( 3, 5 ) int -> [ebp-0x1C] do-not-enreg[X] addr-exposed "field V13._handle (fldOffset=0x4)" P-DEP
-; V34 tmp32 [V34,T13] ( 2, 2 ) int -> eax single-def "field V14._ptr (fldOffset=0x0)" P-INDEP
-; V35 tmp33 [V35,T14] ( 2, 2 ) int -> edx single-def "field V14._handle (fldOffset=0x4)" P-INDEP
-;* V36 tmp34 [V36 ] ( 0, 0 ) int -> zero-ref "field V15._ptr (fldOffset=0x0)" P-INDEP
-; V37 tmp35 [V37,T15] ( 2, 2 ) int -> ecx single-def "field V21._ptr (fldOffset=0x0)" P-INDEP
-; V38 tmp36 [V38,T18] ( 2, 0 ) ref -> edx single-def "argument with side effect"
-;* V39 cse0 [V39,T17] ( 0, 0 ) int -> zero-ref "CSE - moderate"
+; V06 tmp4 [V06,T11] ( 3, 3 ) ref -> eax class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
+; V07 tmp5 [V07,T10] ( 3, 4 ) int -> edi "Inlining Arg"
+; V08 tmp6 [V08,T13] ( 2, 2 ) ref -> ecx class-hnd single-def "Inline return value spill temp" <System.Array>
+; V09 tmp7 [V09 ] ( 4, 4 ) ref -> [ebp-0x14] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Array>
+; V10 tmp8 [V10 ] ( 3, 6 ) ref -> [ebp-0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inlining Arg" <System.RuntimeType>
+; V11 tmp9 [V11 ] ( 5, 10 ) struct ( 8) [ebp-0x20] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallTypeHandle>
+;* V12 tmp10 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Runtime.CompilerServices.QCallTypeHandle>
+;* V13 tmp11 [V13 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Runtime.CompilerServices.ObjectHandleOnStack>
+; V14 tmp12 [V14,T09] ( 3, 5 ) ref -> eax class-hnd exact single-def "dup spill" <System.RuntimeType>
+; V15 tmp13 [V15,T14] ( 2, 2 ) byref -> edx single-def
+;* V16 tmp14 [V16 ] ( 0, 0 ) ref -> zero-ref single-def
+;* V17 tmp15 [V17 ] ( 0, 0 ) byref -> zero-ref single-def
+; V18 tmp16 [V18,T12] ( 3, 2 ) int -> ecx
+;* V19 tmp17 [V19 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ObjectHandleOnStack>
+;* V20 tmp18 [V20 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V21 tmp19 [V21 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V22 tmp20 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Int32>
+; V23 tmp21 [V23,T07] ( 2, 4 ) int -> ecx "Inline return value spill temp"
+;* V24 tmp22 [V24 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V25 tmp23 [V25,T04] ( 3, 10 ) int -> ecx "Inline stloc first use temp"
+; V26 tmp24 [V26,T02] ( 3, 24 ) byref -> [ebp-0x30] spill-single-def "Inlining Arg"
+;* V27 tmp25 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V28 FramesRoot [V28,T08] ( 5, 5 ) int -> esi "Pinvoke FrameListRoot"
+; V29 PInvokeFrame [V29 ] ( 8, 8 ) struct (32) [ebp-0x50] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+; V30 tmp28 [V30 ] ( 4, 6 ) int -> [ebp-0x20] do-not-enreg[X] addr-exposed "field V11._ptr (fldOffset=0x0)" P-DEP
+; V31 tmp29 [V31 ] ( 3, 5 ) int -> [ebp-0x1C] do-not-enreg[X] addr-exposed "field V11._handle (fldOffset=0x4)" P-DEP
+; V32 tmp30 [V32,T15] ( 2, 2 ) int -> eax single-def "field V12._ptr (fldOffset=0x0)" P-INDEP
+; V33 tmp31 [V33,T16] ( 2, 2 ) int -> edx single-def "field V12._handle (fldOffset=0x4)" P-INDEP
+;* V34 tmp32 [V34 ] ( 0, 0 ) int -> zero-ref "field V13._ptr (fldOffset=0x0)" P-INDEP
+; V35 tmp33 [V35,T17] ( 2, 2 ) int -> ecx single-def "field V19._ptr (fldOffset=0x0)" P-INDEP
+; V36 tmp34 [V36,T19] ( 2, 0 ) ref -> edx single-def "argument with side effect"
+;* V37 cse0 [V37,T18] ( 0, 0 ) int -> zero-ref "CSE - moderate"
+; V38 rat0 [V38,T06] ( 5, 7.50) ref -> eax "replacement local"
;
; Lcl frame size = 68
@@ -70,20 +69,36 @@ G_M36671_IG02: ; bbWeight=1, gcVars=00000020 {V00}, gcrefRegs=00000000 {}
mov eax, ebp
mov dword ptr [ebp-0x38], eax
test byte ptr [D1FFAB1EH], 1 ; global ptr
- je G_M36671_IG21
+ je G_M36671_IG24
;; size=26 bbWeight=1 PerfScore 6.75
-G_M36671_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M36671_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, dword ptr [D1FFAB1EH] ; static handle
mov dword ptr [ebp-0x10], eax
mov edi, dword ptr [ebp-0x10]
test edi, edi
- jl G_M36671_IG22
- mov gword ptr [ebp-0x18], 0xD1FFAB1E
+ jl G_M36671_IG25
+ mov eax, 0xD1FFAB1E
+ ; gcrRegs +[eax]
+ test eax, eax
+ je SHORT G_M36671_IG06
+ ;; size=28 bbWeight=1 PerfScore 6.75
+G_M36671_IG04: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
+ cmp dword ptr [eax], 0xD1FFAB1E
+ je SHORT G_M36671_IG06
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M36671_IG05: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax]
xor eax, eax
; gcrRegs +[eax]
+ ;; size=2 bbWeight=0.25 PerfScore 0.06
+G_M36671_IG06: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
+ test eax, eax
+ je G_M36671_IG26
+ mov gword ptr [ebp-0x18], eax
+ xor eax, eax
mov gword ptr [ebp-0x14], eax
- ;; size=31 bbWeight=1 PerfScore 7.50
-G_M36671_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ;; size=16 bbWeight=1 PerfScore 3.50
+G_M36671_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
mov dword ptr [ebp-0x20], eax
mov dword ptr [ebp-0x1C], eax
@@ -94,18 +109,18 @@ G_M36671_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
lea edx, bword ptr [ebp-0x20]
; byrRegs +[edx]
test eax, eax
- jne SHORT G_M36671_IG06
+ jne SHORT G_M36671_IG09
;; size=22 bbWeight=1 PerfScore 6.25
-G_M36671_IG05: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000004 {edx}, byref, isz
+G_M36671_IG08: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000004 {edx}, byref, isz
; gcrRegs -[eax]
xor ecx, ecx
- jmp SHORT G_M36671_IG07
+ jmp SHORT G_M36671_IG10
;; size=4 bbWeight=0.50 PerfScore 1.12
-G_M36671_IG06: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000004 {edx}, byref
+G_M36671_IG09: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000004 {edx}, byref
; gcrRegs +[eax]
mov ecx, dword ptr [eax+0x0C]
;; size=3 bbWeight=0.50 PerfScore 1.00
-G_M36671_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000004 {edx}, byref
+G_M36671_IG10: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000004 {edx}, byref
; gcrRegs -[eax]
mov dword ptr [edx+0x04], ecx
mov eax, dword ptr [ebp-0x20]
@@ -123,29 +138,29 @@ G_M36671_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000004 {e
mov dword ptr [ebp-0x44], 0xD1FFAB1E
mov eax, esp
mov dword ptr [ebp-0x40], eax
- lea eax, G_M36671_IG10
+ lea eax, G_M36671_IG13
mov dword ptr [ebp-0x3C], eax
mov byte ptr [esi+0x08], 0
;; size=50 bbWeight=1 PerfScore 16.25
-G_M36671_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M36671_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, 0xD1FFAB1E ; function address
;; size=5 bbWeight=1 PerfScore 0.25
-G_M36671_IG09: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M36671_IG12: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
call eax ; <unknown method>
;; size=2 bbWeight=1 PerfScore 3.00
-G_M36671_IG10: ; bbWeight=1, isz, extend
+G_M36671_IG13: ; bbWeight=1, isz, extend
mov byte ptr [esi+0x08], 1
cmp dword ptr [D1FFAB1EH], 0
- je SHORT G_M36671_IG11
+ je SHORT G_M36671_IG14
call CORINFO_HELP_STOP_FOR_GC
;; size=18 bbWeight=1 PerfScore 6.00
-G_M36671_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M36671_IG14: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
xor edx, edx
mov dword ptr [ebp-0x3C], edx
mov ecx, gword ptr [ebp-0x14]
; gcrRegs +[ecx]
;; size=8 bbWeight=1 PerfScore 2.25
-G_M36671_IG12: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+G_M36671_IG15: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
mov gword ptr [ebp-0x14], edx
mov ebx, gword ptr [ebp-0x24]
; gcrRegs +[ebx]
@@ -157,9 +172,9 @@ G_M36671_IG12: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000
; byrRegs -[edx]
xor edi, edi
cmp dword ptr [D1FFAB1EH], 0
- jle SHORT G_M36671_IG18
+ jle SHORT G_M36671_IG21
;; size=25 bbWeight=1 PerfScore 7.75
-G_M36671_IG13: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
+G_M36671_IG16: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
mov ecx, 0xD1FFAB1E ; System.Int32
call CORINFO_HELP_NEWSFAST
; gcrRegs +[eax]
@@ -172,11 +187,11 @@ G_M36671_IG13: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000
mov dword ptr [eax+0x04], edi
mov ecx, dword ptr [edx]
mov bword ptr [ebp-0x30], ecx
- ; GC ptr vars +{V28}
+ ; GC ptr vars +{V26}
test dword ptr [ecx], 0xD1FFAB1E
- jne SHORT G_M36671_IG15
+ jne SHORT G_M36671_IG18
;; size=35 bbWeight=4 PerfScore 53.00
-G_M36671_IG14: ; bbWeight=2, gcVars=00000007 {V02 V03 V28}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref
+G_M36671_IG17: ; bbWeight=2, gcVars=00000007 {V02 V03 V26}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax edx]
mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
@@ -185,7 +200,7 @@ G_M36671_IG14: ; bbWeight=2, gcVars=00000007 {V02 V03 V28}, gcrefRegs=000
call [<unknown method>]
; gcrRegs -[ecx edx]
;; size=16 bbWeight=2 PerfScore 7.00
-G_M36671_IG15: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
+G_M36671_IG18: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
mov ecx, bword ptr [ebp-0x30]
; byrRegs +[ecx]
mov ecx, dword ptr [ecx+0x04]
@@ -195,14 +210,14 @@ G_M36671_IG15: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000
mov edx, gword ptr [ebp-0x2C]
; gcrRegs +[edx]
test ecx, ecx
- je SHORT G_M36671_IG17
+ je SHORT G_M36671_IG20
;; size=19 bbWeight=4 PerfScore 24.00
-G_M36671_IG16: ; bbWeight=2, gcVars=00000003 {V02 V03}, gcrefRegs=0000000C {edx ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V02 V28}
+G_M36671_IG19: ; bbWeight=2, gcVars=00000003 {V02 V03}, gcrefRegs=0000000C {edx ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars -{V02 V26}
cmp ecx, 1
- jne SHORT G_M36671_IG20
+ jne SHORT G_M36671_IG23
;; size=5 bbWeight=2 PerfScore 2.50
-G_M36671_IG17: ; bbWeight=4, gcrefRegs=0000000C {edx ebx}, byrefRegs=00000000 {}, byref, isz
+G_M36671_IG20: ; bbWeight=4, gcrefRegs=0000000C {edx ebx}, byrefRegs=00000000 {}, byref, isz
mov ecx, edx
; gcrRegs +[ecx]
mov edx, edi
@@ -219,15 +234,15 @@ G_M36671_IG17: ; bbWeight=4, gcrefRegs=0000000C {edx ebx}, byrefRegs=0000
; gcrRegs -[ecx edx]
inc edi
cmp edi, dword ptr [D1FFAB1EH] ; static handle
- jl SHORT G_M36671_IG13
+ jl SHORT G_M36671_IG16
;; size=31 bbWeight=4 PerfScore 47.00
-G_M36671_IG18: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M36671_IG21: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[ebx]
mov ecx, bword ptr [ebp-0x48]
; byrRegs +[ecx]
mov dword ptr [esi+0x0C], ecx
;; size=6 bbWeight=1 PerfScore 2.00
-G_M36671_IG19: ; bbWeight=1, epilog, nogc, extend
+G_M36671_IG22: ; bbWeight=1, epilog, nogc, extend
...
+40 (+10.42%) : 22322.dasm - System.Tests.Perf_Array:SetupArrayRetrieve2D():this (Tier0-FullOpts)
@@ -14,41 +14,40 @@
; V03 tmp0 [V03,T00] ( 3, 96 ) ref -> eax class-hnd exact "Single-def Box Helper" <System.Int32>
; V04 tmp1 [V04,T02] ( 2, 64 ) ref -> ecx class-hnd "impImportAndPushBox" <System.Array>
;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Array>
-; V06 tmp3 [V06,T05] ( 4, 6 ) int -> edi "Inlining Arg"
-; V07 tmp4 [V07,T08] ( 2, 4 ) int -> eax "Inlining Arg"
-;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
-;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V10 tmp7 [V10,T17] ( 0, 0 ) ref -> zero-ref class-hnd exact ptr "Inline stloc first use temp" <System.RuntimeType>
-; V11 tmp8 [V11 ] ( 3, 3 ) struct ( 8) [ebp-0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
-; V12 tmp9 [V12,T13] ( 2, 2 ) int -> eax single-def "Inline stloc first use temp"
-; V13 tmp10 [V13,T18] ( 1, 1 ) int -> [ebp-0x20] do-not-enreg[V] "GSCookie dummy for inlinee"
-; V14 tmp11 [V14,T11] ( 2, 2 ) ref -> ecx class-hnd single-def "Inline return value spill temp" <System.Array>
-; V15 tmp12 [V15 ] ( 4, 4 ) ref -> [ebp-0x24] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Array>
-; V16 tmp13 [V16 ] ( 3, 6 ) ref -> [ebp-0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ptr "Inlining Arg" <System.RuntimeType>
-; V17 tmp14 [V17 ] ( 5, 10 ) struct ( 8) [ebp-0x30] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallTypeHandle>
-;* V18 tmp15 [V18 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Runtime.CompilerServices.QCallTypeHandle>
-;* V19 tmp16 [V19 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Runtime.CompilerServices.ObjectHandleOnStack>
-; V20 tmp17 [V20,T07] ( 3, 5 ) ref -> edx class-hnd exact single-def "dup spill" <System.RuntimeType>
-; V21 tmp18 [V21,T12] ( 2, 2 ) byref -> ecx single-def
-;* V22 tmp19 [V22 ] ( 0, 0 ) ref -> zero-ref single-def ptr
-;* V23 tmp20 [V23 ] ( 0, 0 ) byref -> zero-ref single-def ptr
-; V24 tmp21 [V24,T10] ( 3, 2 ) int -> edi
-;* V25 tmp22 [V25 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ObjectHandleOnStack>
-;* V26 tmp23 [V26 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V27 tmp24 [V27 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V28 FramesRoot [V28,T06] ( 5, 5 ) int -> [ebp-0x34] spill-single-def "Pinvoke FrameListRoot"
-; V29 PInvokeFrame [V29 ] ( 8, 8 ) struct (32) [ebp-0x58] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
-; V30 tmp27 [V30 ] ( 4, 6 ) int -> [ebp-0x30] do-not-enreg[X] addr-exposed "field V17._ptr (fldOffset=0x0)" P-DEP
-; V31 tmp28 [V31 ] ( 3, 5 ) int -> [ebp-0x2C] do-not-enreg[X] addr-exposed "field V17._handle (fldOffset=0x4)" P-DEP
-; V32 tmp29 [V32,T14] ( 2, 2 ) int -> edx single-def "field V18._ptr (fldOffset=0x0)" P-INDEP
-; V33 tmp30 [V33,T15] ( 2, 2 ) int -> ecx single-def "field V18._handle (fldOffset=0x4)" P-INDEP
-;* V34 tmp31 [V34 ] ( 0, 0 ) int -> zero-ref "field V19._ptr (fldOffset=0x0)" P-INDEP
-; V35 tmp32 [V35,T16] ( 2, 2 ) int -> edi single-def "field V25._ptr (fldOffset=0x0)" P-INDEP
-; V36 tmp33 [V36,T20] ( 2, 0 ) ref -> edx single-def "argument with side effect"
-;* V37 tmp34 [V37 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V38 GsCookie [V38 ] ( 1, 1 ) int -> [ebp-0x10] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V39 cse0 [V39,T09] ( 3, 3 ) int -> eax "CSE - moderate"
-;* V40 cse1 [V40,T19] ( 0, 0 ) int -> zero-ref "CSE - moderate"
+; V06 tmp3 [V06,T06] ( 4, 6 ) int -> edi "Inlining Arg"
+; V07 tmp4 [V07,T09] ( 2, 4 ) int -> eax "Inlining Arg"
+; V08 tmp5 [V08,T10] ( 3, 3 ) ref -> edx class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
+; V09 tmp6 [V09 ] ( 3, 3 ) struct ( 8) [ebp-0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
+; V10 tmp7 [V10,T15] ( 2, 2 ) int -> eax single-def "Inline stloc first use temp"
+; V11 tmp8 [V11,T19] ( 1, 1 ) int -> [ebp-0x20] do-not-enreg[V] "GSCookie dummy for inlinee"
+; V12 tmp9 [V12,T13] ( 2, 2 ) ref -> ecx class-hnd single-def "Inline return value spill temp" <System.Array>
+; V13 tmp10 [V13 ] ( 4, 4 ) ref -> [ebp-0x24] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Array>
+; V14 tmp11 [V14 ] ( 3, 6 ) ref -> [ebp-0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ptr "Inlining Arg" <System.RuntimeType>
+; V15 tmp12 [V15 ] ( 5, 10 ) struct ( 8) [ebp-0x30] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallTypeHandle>
+;* V16 tmp13 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Runtime.CompilerServices.QCallTypeHandle>
+;* V17 tmp14 [V17 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Runtime.CompilerServices.ObjectHandleOnStack>
+; V18 tmp15 [V18,T08] ( 3, 5 ) ref -> edx class-hnd exact single-def "dup spill" <System.RuntimeType>
+; V19 tmp16 [V19,T14] ( 2, 2 ) byref -> ecx single-def
+;* V20 tmp17 [V20 ] ( 0, 0 ) ref -> zero-ref single-def ptr
+;* V21 tmp18 [V21 ] ( 0, 0 ) byref -> zero-ref single-def ptr
+; V22 tmp19 [V22,T12] ( 3, 2 ) int -> edi
+;* V23 tmp20 [V23 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ObjectHandleOnStack>
+;* V24 tmp21 [V24 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V25 tmp22 [V25 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V26 FramesRoot [V26,T07] ( 5, 5 ) int -> [ebp-0x34] spill-single-def "Pinvoke FrameListRoot"
+; V27 PInvokeFrame [V27 ] ( 8, 8 ) struct (32) [ebp-0x58] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+; V28 tmp25 [V28 ] ( 4, 6 ) int -> [ebp-0x30] do-not-enreg[X] addr-exposed "field V15._ptr (fldOffset=0x0)" P-DEP
+; V29 tmp26 [V29 ] ( 3, 5 ) int -> [ebp-0x2C] do-not-enreg[X] addr-exposed "field V15._handle (fldOffset=0x4)" P-DEP
+; V30 tmp27 [V30,T16] ( 2, 2 ) int -> edx single-def "field V16._ptr (fldOffset=0x0)" P-INDEP
+; V31 tmp28 [V31,T17] ( 2, 2 ) int -> ecx single-def "field V16._handle (fldOffset=0x4)" P-INDEP
+;* V32 tmp29 [V32 ] ( 0, 0 ) int -> zero-ref "field V17._ptr (fldOffset=0x0)" P-INDEP
+; V33 tmp30 [V33,T18] ( 2, 2 ) int -> edi single-def "field V23._ptr (fldOffset=0x0)" P-INDEP
+; V34 tmp31 [V34,T21] ( 2, 0 ) ref -> edx single-def "argument with side effect"
+;* V35 tmp32 [V35 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V36 GsCookie [V36 ] ( 1, 1 ) int -> [ebp-0x10] do-not-enreg[X] addr-exposed "GSSecurityCookie"
+; V37 cse0 [V37,T11] ( 3, 3 ) int -> eax "CSE - moderate"
+;* V38 cse1 [V38,T20] ( 0, 0 ) int -> zero-ref "CSE - moderate"
+; V39 rat0 [V39,T05] ( 5, 7.50) ref -> edx "replacement local"
;
; Lcl frame size = 76
@@ -75,22 +74,38 @@ G_M59132_IG02: ; bbWeight=1, gcVars=00000010 {V00}, gcrefRegs=00000000 {}
mov eax, ebp
mov dword ptr [ebp-0x40], eax
test byte ptr [D1FFAB1EH], 1 ; global ptr
- je G_M59132_IG18
+ je G_M59132_IG21
;; size=29 bbWeight=1 PerfScore 7.75
-G_M59132_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M59132_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, dword ptr [D1FFAB1EH] ; static handle
mov edi, eax
test edi, edi
- jl G_M59132_IG19
+ jl G_M59132_IG22
+ mov edx, 0xD1FFAB1E
+ ; gcrRegs +[edx]
+ test edx, edx
+ je SHORT G_M59132_IG06
+ ;; size=24 bbWeight=1 PerfScore 5.00
+G_M59132_IG04: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ cmp dword ptr [edx], 0xD1FFAB1E
+ je SHORT G_M59132_IG06
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M59132_IG05: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[edx]
+ xor edx, edx
+ ; gcrRegs +[edx]
+ ;; size=2 bbWeight=0.25 PerfScore 0.06
+G_M59132_IG06: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
+ test edx, edx
+ je G_M59132_IG23
mov dword ptr [ebp-0x18], edi
mov dword ptr [ebp-0x14], eax
lea eax, [ebp-0x18]
- mov gword ptr [ebp-0x28], 0xD1FFAB1E
+ mov gword ptr [ebp-0x28], edx
xor edx, edx
- ; gcrRegs +[edx]
mov gword ptr [ebp-0x24], edx
- ;; size=36 bbWeight=1 PerfScore 8.25
-G_M59132_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ;; size=25 bbWeight=1 PerfScore 6.00
+G_M59132_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edx]
mov dword ptr [ebp-0x30], edx
mov dword ptr [ebp-0x2C], edx
@@ -101,18 +116,18 @@ G_M59132_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
lea ecx, bword ptr [ebp-0x30]
; byrRegs +[ecx]
test edx, edx
- jne SHORT G_M59132_IG06
+ jne SHORT G_M59132_IG09
;; size=22 bbWeight=1 PerfScore 6.25
-G_M59132_IG05: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, byref, isz
+G_M59132_IG08: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, byref, isz
; gcrRegs -[edx]
xor edi, edi
- jmp SHORT G_M59132_IG07
+ jmp SHORT G_M59132_IG10
;; size=4 bbWeight=0.50 PerfScore 1.12
-G_M59132_IG06: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref
+G_M59132_IG09: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref
; gcrRegs +[edx]
mov edi, dword ptr [edx+0x0C]
;; size=3 bbWeight=0.50 PerfScore 1.00
-G_M59132_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, byref
+G_M59132_IG10: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, byref
; gcrRegs -[edx]
mov dword ptr [ecx+0x04], edi
mov edx, dword ptr [ebp-0x30]
@@ -129,29 +144,29 @@ G_M59132_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000002 {e
mov dword ptr [ebp-0x4C], 0xD1FFAB1E
mov eax, esp
mov dword ptr [ebp-0x48], eax
- lea eax, G_M59132_IG10
+ lea eax, G_M59132_IG13
mov dword ptr [ebp-0x44], eax
mov byte ptr [esi+0x08], 0
;; size=47 bbWeight=1 PerfScore 15.75
-G_M59132_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M59132_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, 0xD1FFAB1E ; function address
;; size=5 bbWeight=1 PerfScore 0.25
-G_M59132_IG09: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M59132_IG12: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
call eax ; <unknown method>
;; size=2 bbWeight=1 PerfScore 3.00
-G_M59132_IG10: ; bbWeight=1, isz, extend
+G_M59132_IG13: ; bbWeight=1, isz, extend
mov byte ptr [esi+0x08], 1
cmp dword ptr [D1FFAB1EH], 0
- je SHORT G_M59132_IG11
+ je SHORT G_M59132_IG14
call CORINFO_HELP_STOP_FOR_GC
;; size=18 bbWeight=1 PerfScore 6.00
-G_M59132_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M59132_IG14: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
xor edx, edx
mov dword ptr [ebp-0x44], edx
mov ecx, gword ptr [ebp-0x24]
; gcrRegs +[ecx]
;; size=8 bbWeight=1 PerfScore 2.25
-G_M59132_IG12: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+G_M59132_IG15: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
mov gword ptr [ebp-0x24], edx
mov ebx, gword ptr [ebp-0x38]
; gcrRegs +[ebx]
@@ -163,15 +178,15 @@ G_M59132_IG12: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000
; byrRegs -[edx]
xor edi, edi
cmp dword ptr [D1FFAB1EH], 0
- jle SHORT G_M59132_IG16
+ jle SHORT G_M59132_IG19
;; size=25 bbWeight=1 PerfScore 7.75
-G_M59132_IG13: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
+G_M59132_IG16: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
xor eax, eax
mov dword ptr [ebp-0x1C], eax
cmp dword ptr [D1FFAB1EH], 0
- jle SHORT G_M59132_IG15
+ jle SHORT G_M59132_IG18
;; size=14 bbWeight=4 PerfScore 21.00
-G_M59132_IG14: ; bbWeight=16, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
+G_M59132_IG17: ; bbWeight=16, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
mov ecx, 0xD1FFAB1E ; System.Int32
call CORINFO_HELP_NEWSFAST
; gcrRegs +[eax]
@@ -192,25 +207,25 @@ G_M59132_IG14: ; bbWeight=16, gcrefRegs=00000008 {ebx}, byrefRegs=0000000
inc esi
cmp esi, dword ptr [D1FFAB1EH] ; static handle
mov dword ptr [ebp-0x1C], esi
- jl SHORT G_M59132_IG14
+ jl SHORT G_M59132_IG17
;; size=52 bbWeight=16 PerfScore 340.00
-G_M59132_IG15: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
+G_M59132_IG18: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
inc edi
cmp edi, dword ptr [D1FFAB1EH] ; static handle
- jl SHORT G_M59132_IG13
+ jl SHORT G_M59132_IG16
;; size=9 bbWeight=4 PerfScore 17.00
-G_M59132_IG16: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M59132_IG19: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ebx]
mov ecx, bword ptr [ebp-0x50]
; byrRegs +[ecx]
mov esi, dword ptr [ebp-0x34]
mov dword ptr [esi+0x0C], ecx
cmp dword ptr [ebp-0x10], 0xD1FFAB1E
- je SHORT G_M59132_IG17
+ je SHORT G_M59132_IG20
call CORINFO_HELP_FAIL_FAST
; byrRegs -[ecx]
;; size=23 bbWeight=1 PerfScore 7.00
-G_M59132_IG17: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M59132_IG20: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -218,14 +233,14 @@ G_M59132_IG17: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
pop ebp
ret
;; size=8 bbWeight=1 PerfScore 3.50
-G_M59132_IG18: ; bbWeight=0, gcVars=00000010 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M59132_IG21: ; bbWeight=0, gcVars=00000010 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; GC ptr vars +{V00 V04}
mov ecx, 0xD1FFAB1E
mov edx, 417
call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
jmp G_M59132_IG03
;; size=20 bbWeight=0 PerfScore 0.00
-G_M59132_IG19: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M59132_IG22: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; GC ptr vars -{V00 V04}
...
+7 (+11.11%) : 47493.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier0-FullOpts)
@@ -8,11 +8,9 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf>
-; V01 loc0 [V01,T02] ( 4, 13 ) int -> esi
-; V02 tmp0 [V02,T01] ( 3, 17 ) ref -> edx "CASTCLASS eval op1"
-; V03 tmp1 [V03,T04] ( 3, 5 ) int -> ecx "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 27 ) ref -> eax class-hnd "spilling QMark2" <<unknown class>>
-; V05 cse0 [V05,T03] ( 3, 6 ) int -> edi "CSE - aggressive"
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> esi
+; V02 cse0 [V02,T02] ( 3, 6 ) int -> edi "CSE - aggressive"
+; V03 cse1 [V03,T01] ( 3, 6 ) ref -> ebx "CSE - aggressive"
;
; Lcl frame size = 0
@@ -21,46 +19,44 @@ G_M40467_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov ebp, esp
push edi
push esi
- ;; size=5 bbWeight=1 PerfScore 3.25
+ push ebx
+ ;; size=6 bbWeight=1 PerfScore 4.25
G_M40467_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
xor esi, esi
mov edi, dword ptr [D1FFAB1EH]
test edi, edi
- jle SHORT G_M40467_IG07
- ;; size=12 bbWeight=1 PerfScore 3.50
-G_M40467_IG03: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov edx, gword ptr [D1FFAB1EH] ; static handle
+ jle SHORT G_M40467_IG04
+ mov ebx, gword ptr [D1FFAB1EH]
+ ; gcrRegs +[ebx]
+ mov edx, ebx
+ ; gcrRegs +[edx]
+ mov ecx, 0xD1FFAB1E ; <unknown class>
+ call [CORINFO_HELP_CHKCASTARRAY]
+ ; gcrRegs -[edx] +[eax]
+ ;; size=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)
; ============================================================
coreclr_tests.run.windows.x86.checked.mch
-19 (-32.76%) : 305809.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%) : 166165.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%) : 165437.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)
; ============================================================
+39 (+16.25%) : 443631.dasm - System.Reflection.CerHashtable`2[System.Canon,System.Canon]:getItem(System.Canon):System._Canon:this (Tier1)
@@ -9,39 +9,39 @@
; 3 inlinees with PGO data; 9 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 3 ) byref -> ecx this single-def
-; V01 arg1 [V01,T00] ( 14, 6.41) ref -> esi class-hnd single-def <System.__Canon>
+; V00 this [V00,T03] ( 3, 3 ) byref -> ecx this single-def
+; V01 arg1 [V01,T00] ( 11, 5.02) ref -> esi class-hnd single-def <System.__Canon>
;* V02 TypeCtx [V02 ] ( 0, 0 ) int -> zero-ref single-def
-; V03 loc0 [V03,T07] ( 4, 3.02) ref -> edi class-hnd exact single-def <<unknown class>>
-; V04 loc1 [V04,T03] ( 5, 4.57) int -> edx
-; V05 loc2 [V05,T06] ( 4, 3.83) ref -> ebx class-hnd single-def <<unknown class>>
-; V06 loc3 [V06,T01] ( 10, 5.74) int -> [ebp-0x10]
+; V03 loc0 [V03,T08] ( 4, 3.02) ref -> edi class-hnd exact single-def <<unknown class>>
+; V04 loc1 [V04,T04] ( 5, 4.57) int -> edx
+; V05 loc2 [V05,T07] ( 4, 3.83) ref -> ebx class-hnd single-def <<unknown class>>
+; V06 loc3 [V06,T02] ( 10, 5.74) int -> [ebp-0x10]
;* V07 loc4 [V07 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
-; V08 loc5 [V08,T04] ( 6, 4.43) ref -> ecx class-hnd <System.__Canon>
-; V09 loc6 [V09,T11] ( 3, 1.30) int -> eax "guarded devirt return temp"
-; V10 tmp1 [V10,T12] ( 4, 1.72) ref -> ecx class-hnd exact "guarded devirt this exact temp" <System.String>
-; V11 tmp2 [V11,T08] ( 4, 2.74) int -> eax "Inline return value spill temp"
-;* V12 tmp3 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String>
-; V13 tmp4 [V13,T09] ( 3, 2.28) ref -> edx class-hnd exact "Inline stloc first use temp" <System.String>
-; V14 tmp5 [V14,T15] ( 3, 0.71) int -> eax "guarded devirt return temp"
-;* V15 tmp6 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Reflection.RuntimeMethodInfo>
-;* V16 tmp7 [V16 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-;* V17 tmp8 [V17 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline stloc first use temp"
-;* V18 tmp9 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V19 tmp10 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType>
-;* V20 tmp11 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String>
-; V21 tmp12 [V21,T14] ( 2, 0.78) ref -> eax class-hnd exact "Inline stloc first use temp" <System.String>
-; V22 tmp13 [V22,T10] ( 2, 1.77) byref -> ecx "impAppendStmt"
+; V08 loc5 [V08,T05] ( 6, 4.43) ref -> ecx class-hnd <System.__Canon>
+; V09 loc6 [V09,T15] ( 3, 1.30) int -> eax "guarded devirt return temp"
+; V10 tmp1 [V10,T13] ( 4, 1.72) ref -> [ebp-0x14] class-hnd exact spill-single-def "guarded devirt this exact temp" <System.String>
+; V11 tmp2 [V11,T10] ( 4, 2.74) int -> eax "Inline return value spill temp"
+; V12 tmp3 [V12,T11] ( 3, 2.38) ref -> ecx class-hnd exact single-def "Inline stloc first use temp" <System.String>
+; V13 tmp4 [V13,T17] ( 3, 0.71) int -> eax "guarded devirt return temp"
+;* V14 tmp5 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Reflection.RuntimeMethodInfo>
+;* V15 tmp6 [V15 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
+;* V16 tmp7 [V16 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline stloc first use temp"
+;* V17 tmp8 [V17 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V18 tmp9 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType>
+; V19 tmp10 [V19,T14] ( 4, 1.62) ref -> [ebp-0x18] class-hnd exact spill-single-def "Inline stloc first use temp" <System.String>
+; V20 tmp11 [V20,T12] ( 2, 1.77) byref -> ecx "impAppendStmt"
+;* V21 tmp12 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V22 tmp13 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp14 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp15 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V25 tmp16 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V26 tmp17 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V27 tmp18 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V28 tmp19 [V28,T16] ( 3, 0.65) ref -> eax single-def "arr expr"
-; V29 cse0 [V29,T05] ( 6, 4.40) int -> ecx multi-def "CSE - aggressive"
-; V30 cse1 [V30,T13] ( 3, 1.23) int -> eax "CSE - moderate"
+; V26 tmp17 [V26,T18] ( 3, 0.65) ref -> eax single-def "arr expr"
+; V27 cse0 [V27,T06] ( 6, 4.40) int -> ecx multi-def "CSE - aggressive"
+; V28 cse1 [V28,T16] ( 3, 1.23) int -> eax "CSE - moderate"
+; V29 rat0 [V29,T01] ( 5, 6.85) ref -> ecx "replacement local"
+; V30 rat1 [V30,T09] ( 5, 2.93) ref -> eax "replacement local"
;
-; Lcl frame size = 4
+; Lcl frame size = 12
G_M33817_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -49,32 +49,41 @@ G_M33817_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- push eax
+ sub esp, 12
mov esi, edx
; gcrRegs +[esi]
- ;; size=9 bbWeight=1 PerfScore 5.50
+ ;; size=11 bbWeight=1 PerfScore 4.75
G_M33817_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref, isz
; byrRegs +[ecx]
mov edi, gword ptr [ecx]
; gcrRegs +[edi]
test edi, edi
- je SHORT G_M33817_IG07
+ je SHORT G_M33817_IG09
;; size=6 bbWeight=1 PerfScore 3.25
G_M33817_IG03: ; bbWeight=0.91, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
; byrRegs -[ecx]
- mov edx, esi
- ; gcrRegs +[edx]
- test edx, edx
- je SHORT G_M33817_IG05
+ mov ecx, esi
+ ; gcrRegs +[ecx]
+ test ecx, ecx
+ je SHORT G_M33817_IG06
;; size=6 bbWeight=0.91 PerfScore 1.37
-G_M33817_IG04: ; bbWeight=0.46, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
- cmp dword ptr [edx], 0xD1FFAB1E
- je SHORT G_M33817_IG09
+G_M33817_IG04: ; bbWeight=0.46, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+ cmp dword ptr [ecx], 0xD1FFAB1E
+ je SHORT G_M33817_IG06
;; size=8 bbWeight=0.46 PerfScore 1.83
-G_M33817_IG05: ; bbWeight=0.36, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[edx]
+G_M33817_IG05: ; bbWeight=0.23, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[ecx]
+ xor ecx, ecx
+ ; gcrRegs +[ecx]
+ ;; size=2 bbWeight=0.23 PerfScore 0.06
+G_M33817_IG06: ; bbWeight=0.91, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+ test ecx, ecx
+ jne SHORT G_M33817_IG11
+ ;; size=4 bbWeight=0.91 PerfScore 1.14
+G_M33817_IG07: ; bbWeight=0.36, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[ecx]
cmp dword ptr [esi], 0xD1FFAB1E
- jne G_M33817_IG25
+ jne G_M33817_IG30
mov edx, gword ptr [esi+0x1C]
; gcrRegs +[edx]
mov edx, dword ptr [edx+0x0C]
@@ -82,30 +91,28 @@ G_M33817_IG05: ; bbWeight=0.36, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
mov ecx, dword ptr [esi+0x28]
call [<unknown method>]
;; size=27 bbWeight=0.36 PerfScore 4.62
-G_M33817_IG06: ; bbWeight=0.36, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M33817_IG10
+G_M33817_IG08: ; bbWeight=0.36, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M33817_IG12
;; size=2 bbWeight=0.36 PerfScore 0.71
-G_M33817_IG07: ; bbWeight=0.09, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M33817_IG09: ; bbWeight=0.09, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi edi]
xor eax, eax
; gcrRegs +[eax]
;; size=2 bbWeight=0.09 PerfScore 0.02
-G_M33817_IG08: ; bbWeight=0.09, epilog, nogc, extend
- pop ecx
+G_M33817_IG10: ; bbWeight=0.09, epilog, nogc, extend
+ lea esp, [ebp-0x0C]
pop ebx
pop esi
pop edi
pop ebp
ret 4
- ;; size=8 bbWeight=0.09 PerfScore 0.39
-G_M33817_IG09: ; bbWeight=0.56, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[eax] +[esi edi]
- mov ecx, esi
- ; gcrRegs +[ecx]
+ ;; size=10 bbWeight=0.09 PerfScore 0.39
+G_M33817_IG11: ; bbWeight=0.56, gcVars=00000000 {}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[eax] +[ecx esi edi]
call [<unknown method>]
; gcrRegs -[ecx]
- ;; size=8 bbWeight=0.56 PerfScore 1.81
-G_M33817_IG10: ; bbWeight=0.91, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ ;; size=6 bbWeight=0.56 PerfScore 1.67
+G_M33817_IG12: ; bbWeight=0.91, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov edx, eax
not eax
test edx, edx
@@ -117,70 +124,95 @@ G_M33817_IG10: ; bbWeight=0.91, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
cdq
idiv edx:eax, ecx
;; size=20 bbWeight=0.91 PerfScore 28.08
-G_M33817_IG11: ; bbWeight=1.46, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M33817_IG13: ; bbWeight=1.46, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
cmp edx, ecx
- jae SHORT G_M33817_IG24
+ jae G_M33817_IG29
mov ecx, gword ptr [ebx+4*edx+0x08]
; gcrRegs +[ecx]
test ecx, ecx
- je SHORT G_M33817_IG07
- ;; size=12 bbWeight=1.46 PerfScore 6.55
-G_M33817_IG12: ; bbWeight=0.65, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ je SHORT G_M33817_IG09
+ ;; size=16 bbWeight=1.46 PerfScore 6.55
+G_M33817_IG14: ; bbWeight=0.65, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [ecx], 0xD1FFAB1E
- jne SHORT G_M33817_IG21
+ jne SHORT G_M33817_IG26
;; size=8 bbWeight=0.65 PerfScore 2.61
-G_M33817_IG13: ; bbWeight=0.44, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M33817_IG15: ; bbWeight=0.44, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov gword ptr [ebp-0x14], ecx
+ ; GC ptr vars +{V10}
cmp ecx, esi
- je SHORT G_M33817_IG22
- ;; size=4 bbWeight=0.44 PerfScore 0.55
-G_M33817_IG14: ; bbWeight=0.39, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ je SHORT G_M33817_IG27
+ ;; size=7 bbWeight=0.44 PerfScore 1.00
+G_M33817_IG16: ; bbWeight=0.39, gcVars=00002000 {V10}, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
mov eax, esi
; gcrRegs +[eax]
+ test eax, eax
+ je SHORT G_M33817_IG19
+ ;; size=6 bbWeight=0.39 PerfScore 0.59
+G_M33817_IG17: ; bbWeight=0.20, gcrefRegs=000000CB {eax ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [eax], 0xD1FFAB1E
- jne SHORT G_M33817_IG20
+ je SHORT G_M33817_IG19
+ ;; size=8 bbWeight=0.20 PerfScore 0.78
+G_M33817_IG18: ; bbWeight=0.10, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax]
+ xor eax, eax
+ ; gcrRegs +[eax]
+ ;; size=2 bbWeight=0.10 PerfScore 0.02
+G_M33817_IG19: ; bbWeight=0.39, gcrefRegs=000000CB {eax ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov gword ptr [ebp-0x18], eax
+ ; GC ptr vars +{V19}
+ test eax, eax
+ je SHORT G_M33817_IG25
mov eax, dword ptr [ecx+0x04]
; gcrRegs -[eax]
- cmp eax, dword ptr [esi+0x04]
+ mov ecx, gword ptr [ebp-0x18]
+ cmp eax, dword ptr [ecx+0x04]
mov dword ptr [ebp-0x10], edx
- jne SHORT G_M33817_IG17
- ;; size=21 bbWeight=0.39 PerfScore 4.40
-G_M33817_IG15: ; bbWeight=0.44, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
+ jne SHORT G_M33817_IG22
+ ;; size=21 bbWeight=0.39 PerfScore 4.01
+G_M33817_IG20: ; bbWeight=0.44, gcVars=00006000 {V10 V19}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[ecx]
+ mov ecx, gword ptr [ebp-0x14]
+ ; gcrRegs +[ecx]
add ecx, 8
; gcrRegs -[ecx]
; byrRegs +[ecx]
add eax, eax
push eax
- lea edx, bword ptr [esi+0x08]
+ mov eax, gword ptr [ebp-0x18]
+ ; gcrRegs +[eax]
+ lea edx, bword ptr [eax+0x08]
; byrRegs +[edx]
+ ; GC ptr vars -{V10 V19}
call [<unknown method>]
+ ; gcrRegs -[eax]
; byrRegs -[ecx edx]
- ;; size=15 bbWeight=0.44 PerfScore 2.22
-G_M33817_IG16: ; bbWeight=0.65, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=21 bbWeight=0.44 PerfScore 3.10
+G_M33817_IG21: ; bbWeight=0.65, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
test eax, eax
...
+39 (+16.25%) : 482839.dasm - System.Reflection.CerHashtable`2[System.Canon,System.Canon]:getItem(System.Canon):System._Canon:this (Tier1)
@@ -9,39 +9,39 @@
; 3 inlinees with PGO data; 9 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 3 ) byref -> ecx this single-def
-; V01 arg1 [V01,T00] ( 14, 6.54) ref -> esi class-hnd single-def <System.__Canon>
+; V00 this [V00,T03] ( 3, 3 ) byref -> ecx this single-def
+; V01 arg1 [V01,T00] ( 11, 5.09) ref -> esi class-hnd single-def <System.__Canon>
;* V02 TypeCtx [V02 ] ( 0, 0 ) int -> zero-ref single-def
-; V03 loc0 [V03,T07] ( 4, 3.02) ref -> edi class-hnd exact single-def <<unknown class>>
-; V04 loc1 [V04,T04] ( 5, 4.57) int -> edx
-; V05 loc2 [V05,T06] ( 4, 3.91) ref -> ebx class-hnd single-def <<unknown class>>
-; V06 loc3 [V06,T01] ( 10, 5.93) int -> [ebp-0x10]
+; V03 loc0 [V03,T09] ( 4, 3.02) ref -> edi class-hnd exact single-def <<unknown class>>
+; V04 loc1 [V04,T05] ( 5, 4.57) int -> edx
+; V05 loc2 [V05,T07] ( 4, 3.91) ref -> ebx class-hnd single-def <<unknown class>>
+; V06 loc3 [V06,T02] ( 10, 5.93) int -> [ebp-0x10]
;* V07 loc4 [V07 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
-; V08 loc5 [V08,T03] ( 6, 4.61) ref -> ecx class-hnd <System.__Canon>
-; V09 loc6 [V09,T11] ( 3, 1.39) int -> eax "guarded devirt return temp"
-; V10 tmp1 [V10,T12] ( 4, 1.84) ref -> ecx class-hnd exact "guarded devirt this exact temp" <System.String>
-; V11 tmp2 [V11,T08] ( 4, 2.74) int -> eax "Inline return value spill temp"
-;* V12 tmp3 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String>
-; V13 tmp4 [V13,T09] ( 3, 2.28) ref -> edx class-hnd exact "Inline stloc first use temp" <System.String>
-; V14 tmp5 [V14,T15] ( 3, 0.71) int -> eax "guarded devirt return temp"
-;* V15 tmp6 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Reflection.RuntimeMethodInfo>
-;* V16 tmp7 [V16 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-;* V17 tmp8 [V17 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline stloc first use temp"
-;* V18 tmp9 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V19 tmp10 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType>
-;* V20 tmp11 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String>
-; V21 tmp12 [V21,T14] ( 2, 0.83) ref -> eax class-hnd exact "Inline stloc first use temp" <System.String>
-; V22 tmp13 [V22,T10] ( 2, 1.89) byref -> ecx "impAppendStmt"
+; V08 loc5 [V08,T04] ( 6, 4.61) ref -> ecx class-hnd <System.__Canon>
+; V09 loc6 [V09,T15] ( 3, 1.39) int -> eax "guarded devirt return temp"
+; V10 tmp1 [V10,T13] ( 4, 1.84) ref -> [ebp-0x14] class-hnd exact spill-single-def "guarded devirt this exact temp" <System.String>
+; V11 tmp2 [V11,T10] ( 4, 2.74) int -> eax "Inline return value spill temp"
+; V12 tmp3 [V12,T11] ( 3, 2.38) ref -> ecx class-hnd exact single-def "Inline stloc first use temp" <System.String>
+; V13 tmp4 [V13,T17] ( 3, 0.71) int -> eax "guarded devirt return temp"
+;* V14 tmp5 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Reflection.RuntimeMethodInfo>
+;* V15 tmp6 [V15 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
+;* V16 tmp7 [V16 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline stloc first use temp"
+;* V17 tmp8 [V17 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V18 tmp9 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType>
+; V19 tmp10 [V19,T14] ( 4, 1.72) ref -> [ebp-0x18] class-hnd exact spill-single-def "Inline stloc first use temp" <System.String>
+; V20 tmp11 [V20,T12] ( 2, 1.89) byref -> ecx "impAppendStmt"
+;* V21 tmp12 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V22 tmp13 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp14 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp15 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V25 tmp16 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V26 tmp17 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V27 tmp18 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V28 tmp19 [V28,T16] ( 3, 0.65) ref -> eax single-def "arr expr"
-; V29 cse0 [V29,T05] ( 6, 4.52) int -> ecx multi-def "CSE - aggressive"
-; V30 cse1 [V30,T13] ( 3, 1.31) int -> eax "CSE - moderate"
+; V26 tmp17 [V26,T18] ( 3, 0.65) ref -> eax single-def "arr expr"
+; V27 cse0 [V27,T06] ( 6, 4.52) int -> ecx multi-def "CSE - aggressive"
+; V28 cse1 [V28,T16] ( 3, 1.31) int -> eax "CSE - moderate"
+; V29 rat0 [V29,T01] ( 5, 6.85) ref -> ecx "replacement local"
+; V30 rat1 [V30,T08] ( 5, 3.13) ref -> eax "replacement local"
;
-; Lcl frame size = 4
+; Lcl frame size = 12
G_M33817_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -49,32 +49,41 @@ G_M33817_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- push eax
+ sub esp, 12
mov esi, edx
; gcrRegs +[esi]
- ;; size=9 bbWeight=1 PerfScore 5.50
+ ;; size=11 bbWeight=1 PerfScore 4.75
G_M33817_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref, isz
; byrRegs +[ecx]
mov edi, gword ptr [ecx]
; gcrRegs +[edi]
test edi, edi
- je SHORT G_M33817_IG07
+ je SHORT G_M33817_IG09
;; size=6 bbWeight=1 PerfScore 3.25
G_M33817_IG03: ; bbWeight=0.91, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
; byrRegs -[ecx]
- mov edx, esi
- ; gcrRegs +[edx]
- test edx, edx
- je SHORT G_M33817_IG05
+ mov ecx, esi
+ ; gcrRegs +[ecx]
+ test ecx, ecx
+ je SHORT G_M33817_IG06
;; size=6 bbWeight=0.91 PerfScore 1.37
-G_M33817_IG04: ; bbWeight=0.46, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
- cmp dword ptr [edx], 0xD1FFAB1E
- je SHORT G_M33817_IG09
+G_M33817_IG04: ; bbWeight=0.46, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+ cmp dword ptr [ecx], 0xD1FFAB1E
+ je SHORT G_M33817_IG06
;; size=8 bbWeight=0.46 PerfScore 1.83
-G_M33817_IG05: ; bbWeight=0.36, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[edx]
+G_M33817_IG05: ; bbWeight=0.23, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[ecx]
+ xor ecx, ecx
+ ; gcrRegs +[ecx]
+ ;; size=2 bbWeight=0.23 PerfScore 0.06
+G_M33817_IG06: ; bbWeight=0.91, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+ test ecx, ecx
+ jne SHORT G_M33817_IG11
+ ;; size=4 bbWeight=0.91 PerfScore 1.14
+G_M33817_IG07: ; bbWeight=0.36, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[ecx]
cmp dword ptr [esi], 0xD1FFAB1E
- jne G_M33817_IG25
+ jne G_M33817_IG30
mov edx, gword ptr [esi+0x1C]
; gcrRegs +[edx]
mov edx, dword ptr [edx+0x0C]
@@ -82,30 +91,28 @@ G_M33817_IG05: ; bbWeight=0.36, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
mov ecx, dword ptr [esi+0x28]
call [<unknown method>]
;; size=27 bbWeight=0.36 PerfScore 4.62
-G_M33817_IG06: ; bbWeight=0.36, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M33817_IG10
+G_M33817_IG08: ; bbWeight=0.36, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M33817_IG12
;; size=2 bbWeight=0.36 PerfScore 0.71
-G_M33817_IG07: ; bbWeight=0.09, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M33817_IG09: ; bbWeight=0.09, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi edi]
xor eax, eax
; gcrRegs +[eax]
;; size=2 bbWeight=0.09 PerfScore 0.02
-G_M33817_IG08: ; bbWeight=0.09, epilog, nogc, extend
- pop ecx
+G_M33817_IG10: ; bbWeight=0.09, epilog, nogc, extend
+ lea esp, [ebp-0x0C]
pop ebx
pop esi
pop edi
pop ebp
ret 4
- ;; size=8 bbWeight=0.09 PerfScore 0.39
-G_M33817_IG09: ; bbWeight=0.56, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[eax] +[esi edi]
- mov ecx, esi
- ; gcrRegs +[ecx]
+ ;; size=10 bbWeight=0.09 PerfScore 0.39
+G_M33817_IG11: ; bbWeight=0.56, gcVars=00000000 {}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[eax] +[ecx esi edi]
call [<unknown method>]
; gcrRegs -[ecx]
- ;; size=8 bbWeight=0.56 PerfScore 1.81
-G_M33817_IG10: ; bbWeight=0.91, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ ;; size=6 bbWeight=0.56 PerfScore 1.67
+G_M33817_IG12: ; bbWeight=0.91, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov edx, eax
not eax
test edx, edx
@@ -117,70 +124,95 @@ G_M33817_IG10: ; bbWeight=0.91, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
cdq
idiv edx:eax, ecx
;; size=20 bbWeight=0.91 PerfScore 28.08
-G_M33817_IG11: ; bbWeight=1.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M33817_IG13: ; bbWeight=1.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
cmp edx, ecx
- jae SHORT G_M33817_IG24
+ jae G_M33817_IG29
mov ecx, gword ptr [ebx+4*edx+0x08]
; gcrRegs +[ecx]
test ecx, ecx
- je SHORT G_M33817_IG07
- ;; size=12 bbWeight=1.50 PerfScore 6.75
-G_M33817_IG12: ; bbWeight=0.70, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ je SHORT G_M33817_IG09
+ ;; size=16 bbWeight=1.50 PerfScore 6.75
+G_M33817_IG14: ; bbWeight=0.70, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [ecx], 0xD1FFAB1E
- jne SHORT G_M33817_IG21
+ jne SHORT G_M33817_IG26
;; size=8 bbWeight=0.70 PerfScore 2.78
-G_M33817_IG13: ; bbWeight=0.47, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M33817_IG15: ; bbWeight=0.47, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov gword ptr [ebp-0x14], ecx
+ ; GC ptr vars +{V10}
cmp ecx, esi
- je SHORT G_M33817_IG22
- ;; size=4 bbWeight=0.47 PerfScore 0.59
-G_M33817_IG14: ; bbWeight=0.42, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ je SHORT G_M33817_IG27
+ ;; size=7 bbWeight=0.47 PerfScore 1.06
+G_M33817_IG16: ; bbWeight=0.42, gcVars=00002000 {V10}, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
mov eax, esi
; gcrRegs +[eax]
+ test eax, eax
+ je SHORT G_M33817_IG19
+ ;; size=6 bbWeight=0.42 PerfScore 0.63
+G_M33817_IG17: ; bbWeight=0.21, gcrefRegs=000000CB {eax ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [eax], 0xD1FFAB1E
- jne SHORT G_M33817_IG20
+ je SHORT G_M33817_IG19
+ ;; size=8 bbWeight=0.21 PerfScore 0.83
+G_M33817_IG18: ; bbWeight=0.10, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax]
+ xor eax, eax
+ ; gcrRegs +[eax]
+ ;; size=2 bbWeight=0.10 PerfScore 0.03
+G_M33817_IG19: ; bbWeight=0.42, gcrefRegs=000000CB {eax ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov gword ptr [ebp-0x18], eax
+ ; GC ptr vars +{V19}
+ test eax, eax
+ je SHORT G_M33817_IG25
mov eax, dword ptr [ecx+0x04]
; gcrRegs -[eax]
- cmp eax, dword ptr [esi+0x04]
+ mov ecx, gword ptr [ebp-0x18]
+ cmp eax, dword ptr [ecx+0x04]
mov dword ptr [ebp-0x10], edx
- jne SHORT G_M33817_IG17
- ;; size=21 bbWeight=0.42 PerfScore 4.69
-G_M33817_IG15: ; bbWeight=0.47, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
+ jne SHORT G_M33817_IG22
+ ;; size=21 bbWeight=0.42 PerfScore 4.28
+G_M33817_IG20: ; bbWeight=0.47, gcVars=00006000 {V10 V19}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[ecx]
+ mov ecx, gword ptr [ebp-0x14]
+ ; gcrRegs +[ecx]
add ecx, 8
; gcrRegs -[ecx]
; byrRegs +[ecx]
add eax, eax
push eax
- lea edx, bword ptr [esi+0x08]
+ mov eax, gword ptr [ebp-0x18]
+ ; gcrRegs +[eax]
+ lea edx, bword ptr [eax+0x08]
; byrRegs +[edx]
+ ; GC ptr vars -{V10 V19}
call [<unknown method>]
+ ; gcrRegs -[eax]
; byrRegs -[ecx edx]
- ;; size=15 bbWeight=0.47 PerfScore 2.37
-G_M33817_IG16: ; bbWeight=0.70, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=21 bbWeight=0.47 PerfScore 3.31
+G_M33817_IG21: ; bbWeight=0.70, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
test eax, eax
...
+34 (+566.67%) : 182683.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 "replacement local"
;
; Lcl frame size = 0
-G_M32114_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- ;; size=0 bbWeight=1 PerfScore 0.00
-G_M32114_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M32114_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
+ push ebp
+ mov ebp, esp
+ ;; size=3 bbWeight=1 PerfScore 1.25
+G_M32114_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ mov eax, 0xD1FFAB1E
+ ; gcrRegs +[eax]
+ test eax, eax
+ je SHORT G_M32114_IG05
+ ;; size=9 bbWeight=1 PerfScore 1.50
+G_M32114_IG03: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
+ cmp dword ptr [eax], 0xD1FFAB1E
+ je SHORT G_M32114_IG05
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M32114_IG04: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax]
+ xor eax, eax
+ ; gcrRegs +[eax]
+ ;; size=2 bbWeight=0.25 PerfScore 0.06
+G_M32114_IG05: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
+ test eax, eax
+ je SHORT G_M32114_IG08
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M32114_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax]
mov eax, 100
- ;; size=5 bbWeight=1 PerfScore 0.25
-G_M32114_IG03: ; bbWeight=1, epilog, nogc, extend
+ ;; size=5 bbWeight=0.50 PerfScore 0.12
+G_M32114_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ pop ebp
ret
- ;; size=1 bbWeight=1 PerfScore 1.00
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M32114_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ mov eax, -1
+ ;; size=5 bbWeight=0.50 PerfScore 0.12
+G_M32114_IG09: ; bbWeight=0.50, epilog, nogc, extend
+ pop ebp
+ ret
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 6, prolog size 0, PerfScore 1.25, instruction count 2, allocated bytes for code 6 (MethodHash=d71e828d) for method T:TestEntryPoint():int (FullOpts)
+; Total bytes of code 40, prolog size 3, PerfScore 7.81, instruction count 16, allocated bytes for code 40 (MethodHash=d71e828d) for method T:TestEntryPoint():int (FullOpts)
; ============================================================
libraries.crossgen2.windows.x86.checked.mch
-34 (-58.62%) : 198869.dasm - CSharpx.Either+<>cDisplayClass13_0`1[System.Canon]:b0():System.Canon:this (FullOpts)
@@ -3,70 +3,37 @@
; FullOpts code
; ReadyToRun compilation
; optimized code
-; ebp based frame
+; esp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 4, 3.25) ref -> esi this class-hnd single-def <CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]>
-; V01 tmp0 [V01,T02] ( 3, 4.25) ref -> edi single-def "CASTCLASS eval op1"
-; V02 tmp1 [V02,T03] ( 3, 1.25) int -> eax "fgMakeTemp is creating a new local variable"
-; V03 tmp2 [V03,T00] ( 5, 6.75) ref -> ebx class-hnd "spilling QMark2" <System.__Canon>
-; TEMP_01 int -> [ebp-0x10]
+; V00 this [V00,T00] ( 4, 4 ) ref -> esi this class-hnd single-def <CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]>
+; V01 tmp0 [V01,T01] ( 2, 4 ) int -> ecx "argument with side effect"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M12636_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- push ebp
- mov ebp, esp
- push edi
push esi
- push ebx
- push eax
mov esi, ecx
+ ;; size=3 bbWeight=1 PerfScore 1.25
+G_M12636_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs +[esi]
- ;; size=9 bbWeight=1 PerfScore 5.50
-G_M12636_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov edi, gword ptr [esi+0x04]
- ; gcrRegs +[edi]
- mov ebx, edi
- ; gcrRegs +[ebx]
- test ebx, ebx
- je SHORT G_M12636_IG05
- ;; size=9 bbWeight=1 PerfScore 3.50
-G_M12636_IG03: ; bbWeight=0.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov eax, dword ptr [ebx]
- mov dword ptr [ebp-0x10], eax
mov ecx, dword ptr [esi]
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
- mov ecx, dword ptr [ebp-0x10]
- cmp ecx, eax
- je SHORT G_M12636_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.56
-G_M12636_IG04: ; bbWeight=0.12, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[ebx]
+ ; gcr arg pop 0
mov ecx, eax
- mov edx, edi
+ mov edx, gword ptr [esi+0x04]
; gcrRegs +[edx]
call [CORINFO_HELP_CHKCASTANY]
- ; gcrRegs -[edx edi] +[eax]
- mov ebx, eax
- ; gcrRegs +[ebx]
- ;; size=12 bbWeight=0.12 PerfScore 0.47
-G_M12636_IG05: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
- mov eax, ebx
- ; gcrRegs +[eax]
- ;; size=2 bbWeight=1 PerfScore 0.25
-G_M12636_IG06: ; bbWeight=1, epilog, nogc, extend
- pop ecx
- pop ebx
+ ; gcrRegs -[edx] +[eax]
+ ; gcr arg pop 0
+ ;; size=19 bbWeight=1 PerfScore 10.25
+G_M12636_IG03: ; bbWeight=1, epilog, nogc, extend
pop esi
- pop edi
- pop ebp
ret
- ;; size=6 bbWeight=1 PerfScore 3.50
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 58, prolog size 7, PerfScore 15.78, instruction count 29, allocated bytes for code 58 (MethodHash=bbb7cea3) for method CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]:<Cast>b__0():System.__Canon:this (FullOpts)
+; Total bytes of code 24, prolog size 1, PerfScore 13.00, instruction count 9, allocated bytes for code 24 (MethodHash=bbb7cea3) for method CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]:<Cast>b__0():System.__Canon:this (FullOpts)
; ============================================================
-30 (-52.63%) : 206830.dasm - System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c11[System.__Canon]:<GetMetadataViewProvider>b__1_0(System.Collections.Generic.IDictionary
2[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%) : 235566.dasm - System.Linq.ParallelQuery1+<>c__1
1[System.Canon,System.Canon]:b1_0(System.Canon):System.__Canon:this (FullOpts)
@@ -3,70 +3,42 @@
; FullOpts code
; ReadyToRun compilation
; optimized code
-; ebp based frame
+; esp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 2.25) ref -> edi this class-hnd single-def <System.Linq.ParallelQuery`1+<>c__1`1[System.__Canon,System.__Canon]>
-; V01 arg1 [V01,T01] ( 4, 3.12) ref -> esi class-hnd single-def <System.__Canon>
-; V02 tmp0 [V02,T03] ( 3, 1.25) int -> eax "fgMakeTemp is creating a new local variable"
-; V03 tmp1 [V03,T00] ( 5, 6.75) ref -> ebx class-hnd "spilling QMark2" <System.__Canon>
-; TEMP_01 int -> [ebp-0x10]
+; V00 this [V00,T00] ( 3, 3 ) ref -> esi this class-hnd single-def <System.Linq.ParallelQuery`1+<>c__1`1[System.__Canon,System.__Canon]>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> edi class-hnd single-def <System.__Canon>
+; V02 tmp0 [V02,T02] ( 2, 4 ) int -> ecx "argument with side effect"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M42611_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- push ebp
- mov ebp, esp
push edi
push esi
- push ebx
- push eax
- mov edi, ecx
+ mov esi, ecx
+ mov edi, edx
; gcrRegs +[edi]
- mov esi, edx
+ ;; size=6 bbWeight=1 PerfScore 2.50
+G_M42611_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs +[esi]
- ;; size=11 bbWeight=1 PerfScore 5.75
-G_M42611_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov ebx, esi
- ; gcrRegs +[ebx]
- test ebx, ebx
- je SHORT G_M42611_IG05
- ;; size=6 bbWeight=1 PerfScore 1.50
-G_M42611_IG03: ; bbWeight=0.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov eax, dword ptr [ebx]
- mov dword ptr [ebp-0x10], eax
- mov ecx, dword ptr [edi]
+ mov ecx, dword ptr [esi]
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
- mov ecx, dword ptr [ebp-0x10]
- cmp ecx, eax
- je SHORT G_M42611_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.56
-G_M42611_IG04: ; bbWeight=0.12, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[ebx]
+ ; gcr arg pop 0
mov ecx, eax
- mov edx, esi
+ mov edx, edi
; gcrRegs +[edx]
call [CORINFO_HELP_CHKCASTANY]
- ; gcrRegs -[edx esi] +[eax]
- mov ebx, eax
- ; gcrRegs +[ebx]
- ;; size=12 bbWeight=0.12 PerfScore 0.47
-G_M42611_IG05: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
- mov eax, ebx
- ; gcrRegs +[eax]
- ;; size=2 bbWeight=1 PerfScore 0.25
-G_M42611_IG06: ; bbWeight=1, epilog, nogc, extend
- pop ecx
- pop ebx
+ ; gcrRegs -[edx edi] +[eax]
+ ; gcr arg pop 0
+ ;; size=18 bbWeight=1 PerfScore 8.50
+G_M42611_IG03: ; bbWeight=1, epilog, nogc, extend
pop esi
pop edi
- pop ebp
ret
- ;; size=6 bbWeight=1 PerfScore 3.50
+ ;; size=3 bbWeight=1 PerfScore 2.00
-; Total bytes of code 57, prolog size 7, PerfScore 14.03, instruction count 29, allocated bytes for code 57 (MethodHash=645c598c) for method System.Linq.ParallelQuery`1+<>c__1`1[System.__Canon,System.__Canon]:<Cast>b__1_0(System.__Canon):System.__Canon:this (FullOpts)
+; Total bytes of code 27, prolog size 2, PerfScore 13.00, instruction count 12, allocated bytes for code 27 (MethodHash=645c598c) for method System.Linq.ParallelQuery`1+<>c__1`1[System.__Canon,System.__Canon]:<Cast>b__1_0(System.__Canon):System.__Canon:this (FullOpts)
; ============================================================
+0 (0.00%) : 180413.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%) : 233538.dasm - Microsoft.Internal.Collections.WeakReferenceCollection1[System.__Canon]:AliveItemsToList():System.Collections.Generic.List
1[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%) : 58843.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%) : 299505.dasm - System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c11[System.__Canon]:<GetMetadataViewProvider>b__1_0(System.Collections.Generic.IDictionary
2[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%) : 28962.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)
; ============================================================
-16 (-39.02%) : 283130.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)
; ============================================================
+26 (+14.05%) : 273459.dasm - System.Reflection.Emit.TypeBuilderImpl:CreateTypeInfoCore():System.Reflection.TypeInfo:this (FullOpts)
@@ -8,21 +8,21 @@
; 1 inlinees with PGO data; 5 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 15, 9 ) ref -> esi this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl>
+; V00 this [V00,T02] ( 15, 9 ) ref -> esi this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl>
;* V01 tmp0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
-;* V02 tmp1 [V02,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V03 tmp2 [V03,T00] ( 7, 19 ) ref -> ecx class-hnd "Inline stloc first use temp" <System.Type>
-;* V04 tmp3 [V04,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.Emit.TypeBuilderImpl>
-;* V06 tmp5 [V06,T07] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl>
-;* V07 tmp6 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl>
-;* V08 tmp7 [V08,T02] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V09 tmp8 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.Emit.TypeBuilderImpl>
-;* V10 tmp9 [V10,T03] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl>
-;* V11 tmp10 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl>
-; V12 tmp11 [V12,T08] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V13 tmp12 [V13,T09] ( 2, 0 ) ref -> edx single-def "argument with side effect"
-; V14 cse0 [V14,T04] ( 3, 1.50) int -> ecx "CSE - moderate"
+;* V02 tmp1 [V02,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V03 tmp2 [V03,T00] ( 9, 21.50) ref -> ecx class-hnd "Inline stloc first use temp" <System.Type>
+;* V04 tmp3 [V04,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V05 tmp4 [V05,T09] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl>
+;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl>
+;* V07 tmp6 [V07,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V08 tmp7 [V08,T05] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl>
+;* V09 tmp8 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl>
+; V10 tmp9 [V10,T10] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V11 tmp10 [V11,T11] ( 2, 0 ) ref -> edx single-def "argument with side effect"
+; V12 cse0 [V12,T06] ( 3, 1.50) int -> ecx "CSE - moderate"
+; V13 rat0 [V13,T04] ( 3, 2.50) ref -> eax "replacement local"
+; V14 rat1 [V14,T01] ( 3, 10 ) ref -> edx "replacement local"
;
; Lcl frame size = 0
@@ -64,19 +64,38 @@ G_M47746_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {e
mov ecx, gword ptr [esi+0x2C]
; gcrRegs +[ecx]
cmp dword ptr [ecx+0x08], 0
- jne SHORT G_M47746_IG11
+ jne SHORT G_M47746_IG14
test byte ptr [esi+0x44], 32
- jne SHORT G_M47746_IG11
+ jne SHORT G_M47746_IG14
mov ecx, esi
cmp ecx, 0xD1FFAB1E
- jne SHORT G_M47746_IG09
- jmp SHORT G_M47746_IG10
- ;; size=27 bbWeight=0.50 PerfScore 6.75
-G_M47746_IG08: ; bbWeight=2, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ je SHORT G_M47746_IG13
+ mov eax, ecx
+ ; gcrRegs +[eax]
+ test eax, eax
+ je SHORT G_M47746_IG12
+ ;; size=31 bbWeight=0.50 PerfScore 6.50
+G_M47746_IG08: ; bbWeight=0.25, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref, isz
+ cmp dword ptr [eax], 0xD1FFAB1E
+ je SHORT G_M47746_IG12
+ ;; size=8 bbWeight=0.25 PerfScore 1.00
+G_M47746_IG09: ; bbWeight=0.50, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax]
+ jmp SHORT G_M47746_IG12
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
+G_M47746_IG10: ; bbWeight=2, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
cmp ecx, 0xD1FFAB1E
- je SHORT G_M47746_IG11
- ;; size=8 bbWeight=2 PerfScore 2.50
-G_M47746_IG09: ; bbWeight=4, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ je SHORT G_M47746_IG14
+ mov edx, ecx
+ ; gcrRegs +[edx]
+ test edx, edx
+ je SHORT G_M47746_IG12
+ ;; size=14 bbWeight=2 PerfScore 5.50
+G_M47746_IG11: ; bbWeight=1, gcrefRegs=00000046 {ecx edx esi}, byrefRegs=00000000 {}, byref
+ mov edx, dword ptr [edx]
+ ; gcrRegs -[edx]
+ ;; size=2 bbWeight=1 PerfScore 2.00
+G_M47746_IG12: ; bbWeight=4, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
mov eax, dword ptr [ecx]
mov eax, dword ptr [eax+0x58]
call [eax+0x10]<unknown method>
@@ -84,24 +103,24 @@ G_M47746_IG09: ; bbWeight=4, gcrefRegs=00000042 {ecx esi}, byrefRegs=0000
mov ecx, eax
; gcrRegs +[ecx]
test ecx, ecx
- jne SHORT G_M47746_IG08
+ jne SHORT G_M47746_IG10
;; size=14 bbWeight=4 PerfScore 34.00
-G_M47746_IG10: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M47746_IG13: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax ecx]
mov ecx, dword ptr [esi+0x44]
mov edx, ecx
and edx, 384
cmp edx, 384
- je SHORT G_M47746_IG11
+ je SHORT G_M47746_IG14
test cl, 32
- jne SHORT G_M47746_IG12
+ jne SHORT G_M47746_IG15
mov ecx, esi
; gcrRegs +[ecx]
mov edx, 6
call [<unknown method>]
; gcrRegs -[ecx] +[eax]
;; size=37 bbWeight=0.50 PerfScore 4.25
-G_M47746_IG11: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M47746_IG14: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax]
mov ecx, esi
; gcrRegs +[ecx]
@@ -109,14 +128,14 @@ G_M47746_IG11: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000
; gcrRegs -[ecx]
mov byte ptr [esi+0x60], 1
test byte ptr [esi+0x44], 128
- jne SHORT G_M47746_IG03
+ jne G_M47746_IG03
mov ecx, esi
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[ecx]
jmp G_M47746_IG03
- ;; size=31 bbWeight=0.50 PerfScore 6.75
-G_M47746_IG12: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ;; size=35 bbWeight=0.50 PerfScore 6.75
+G_M47746_IG15: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi]
mov ecx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
@@ -137,6 +156,6 @@ G_M47746_IG12: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
int3
;; size=36 bbWeight=0 PerfScore 0.00
-; Total bytes of code 185, prolog size 4, PerfScore 65.50, instruction count 62, allocated bytes for code 185 (MethodHash=c0db457d) for method System.Reflection.Emit.TypeBuilderImpl:CreateTypeInfoCore():System.Reflection.TypeInfo:this (FullOpts)
+; Total bytes of code 211, prolog size 4, PerfScore 72.25, instruction count 71, allocated bytes for code 211 (MethodHash=c0db457d) for method System.Reflection.Emit.TypeBuilderImpl:CreateTypeInfoCore():System.Reflection.TypeInfo:this (FullOpts)
; ============================================================
+26 (+15.29%) : 197836.dasm - Newtonsoft.Json.Utilities.DictionaryWrapper2[System.__Canon,System.Nullable
1[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]
...
+22 (+22.00%) : 273494.dasm - System.Reflection.Emit.TypeBuilderImpl:get_UnderlyingSystemType():System.Type:this (FullOpts)
@@ -8,20 +8,20 @@
; 0 inlinees with PGO data; 1 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 6, 5 ) ref -> esi this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl>
-; V01 tmp0 [V01,T08] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-;* V02 tmp1 [V02,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V03 tmp2 [V03,T00] ( 7, 20 ) ref -> ecx class-hnd "Inline stloc first use temp" <System.Type>
-;* V04 tmp3 [V04,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.Emit.TypeBuilderImpl>
-;* V06 tmp5 [V06,T07] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl>
-;* V07 tmp6 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl>
-;* V08 tmp7 [V08,T02] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V09 tmp8 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.Emit.TypeBuilderImpl>
-;* V10 tmp9 [V10,T03] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl>
-;* V11 tmp10 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl>
-; V12 tmp11 [V12,T09] ( 2, 0 ) ref -> edx single-def "argument with side effect"
-; V13 cse0 [V13,T04] ( 3, 1.50) ref -> eax "CSE - moderate"
+; V00 this [V00,T02] ( 6, 5 ) ref -> esi this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl>
+; V01 tmp0 [V01,T10] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;* V02 tmp1 [V02,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V03 tmp2 [V03,T00] ( 9, 22.50) ref -> ecx class-hnd "Inline stloc first use temp" <System.Type>
+;* V04 tmp3 [V04,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V05 tmp4 [V05,T09] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl>
+;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl>
+;* V07 tmp6 [V07,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V08 tmp7 [V08,T05] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl>
+;* V09 tmp8 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl>
+; V10 tmp9 [V10,T11] ( 2, 0 ) ref -> edx single-def "argument with side effect"
+; V11 cse0 [V11,T06] ( 3, 1.50) ref -> eax "CSE - moderate"
+; V12 rat0 [V12,T04] ( 3, 2.50) ref -> eax "replacement local"
+; V13 rat1 [V13,T01] ( 3, 10 ) ref -> eax "replacement local"
;
; Lcl frame size = 0
@@ -40,18 +40,36 @@ G_M32453_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov ecx, esi
; gcrRegs +[ecx]
cmp ecx, 0xD1FFAB1E
- jne SHORT G_M32453_IG05
+ je SHORT G_M32453_IG12
;; size=14 bbWeight=1 PerfScore 4.75
-G_M32453_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ecx ebx]
- jmp SHORT G_M32453_IG09
+G_M32453_IG03: ; bbWeight=0.50, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[ebx]
+ mov eax, ecx
+ ; gcrRegs +[eax]
+ test eax, eax
+ je SHORT G_M32453_IG08
+ ;; size=6 bbWeight=0.50 PerfScore 0.75
+G_M32453_IG04: ; bbWeight=0.25, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref, isz
+ cmp dword ptr [eax], 0xD1FFAB1E
+ je SHORT G_M32453_IG08
+ ;; size=8 bbWeight=0.25 PerfScore 1.00
+G_M32453_IG05: ; bbWeight=0.50, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax]
+ jmp SHORT G_M32453_IG08
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M32453_IG04: ; bbWeight=2, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[ecx]
+G_M32453_IG06: ; bbWeight=2, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
cmp ecx, 0xD1FFAB1E
- je SHORT G_M32453_IG07
- ;; size=8 bbWeight=2 PerfScore 2.50
-G_M32453_IG05: ; bbWeight=4, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ je SHORT G_M32453_IG10
+ mov eax, ecx
+ ; gcrRegs +[eax]
+ test eax, eax
+ je SHORT G_M32453_IG08
+ ;; size=14 bbWeight=2 PerfScore 5.50
+G_M32453_IG07: ; bbWeight=1, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref
+ mov eax, dword ptr [eax]
+ ; gcrRegs -[eax]
+ ;; size=2 bbWeight=1 PerfScore 2.00
+G_M32453_IG08: ; bbWeight=4, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
mov eax, dword ptr [ecx]
mov eax, dword ptr [eax+0x58]
call [eax+0x10]<unknown method>
@@ -59,36 +77,36 @@ G_M32453_IG05: ; bbWeight=4, gcrefRegs=00000042 {ecx esi}, byrefRegs=0000
mov ecx, eax
; gcrRegs +[ecx]
test ecx, ecx
- jne SHORT G_M32453_IG04
+ jne SHORT G_M32453_IG06
;; size=14 bbWeight=4 PerfScore 34.00
-G_M32453_IG06: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M32453_IG09: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax ecx]
- jmp SHORT G_M32453_IG09
+ jmp SHORT G_M32453_IG12
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M32453_IG07: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M32453_IG10: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov eax, gword ptr [esi+0x20]
; gcrRegs +[eax]
test eax, eax
- je SHORT G_M32453_IG11
+ je SHORT G_M32453_IG14
;; size=7 bbWeight=0.50 PerfScore 1.62
-G_M32453_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M32453_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop ebx
pop esi
pop ebp
ret
;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M32453_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M32453_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax]
mov eax, esi
; gcrRegs +[eax]
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M32453_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M32453_IG13: ; bbWeight=0.50, epilog, nogc, extend
pop ebx
pop esi
pop ebp
ret
;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M32453_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M32453_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax esi]
mov ecx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
@@ -109,6 +127,6 @@ G_M32453_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, b
int3
;; size=36 bbWeight=0 PerfScore 0.00
-; Total bytes of code 100, prolog size 5, PerfScore 51.00, instruction count 42, allocated bytes for code 100 (MethodHash=b7cb813a) for method System.Reflection.Emit.TypeBuilderImpl:get_UnderlyingSystemType():System.Type:this (FullOpts)
+; Total bytes of code 122, prolog size 5, PerfScore 57.75, instruction count 51, allocated bytes for code 122 (MethodHash=b7cb813a) for method System.Reflection.Emit.TypeBuilderImpl:get_UnderlyingSystemType():System.Type:this (FullOpts)
; ============================================================
libraries_tests.run.windows.x86.Release.mch
-41 (-42.27%) : 375396.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%) : 551021.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (Tier1)
@@ -8,11 +8,9 @@
; with Dynamic PGO: edge weights are valid, and fgCalledCount is 19848
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 4, 3.25) ref -> eax class-hnd single-def <System.Object>
-; V01 TypeCtx [V01,T01] ( 4, 3.50) int -> edx single-def
+; V00 arg0 [V00,T01] ( 3, 3 ) ref -> eax class-hnd single-def <System.Object>
+; V01 TypeCtx [V01,T00] ( 4, 4 ) int -> edx single-def
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
-; V03 loc1 [V03,T03] ( 3, 2.50) int -> edx "fgMakeTemp is creating a new local variable"
-; V04 tmp1 [V04,T00] ( 5, 7.50) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 4
@@ -24,39 +22,20 @@ G_M8451_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
mov eax, ecx
; gcrRegs +[eax]
;; size=9 bbWeight=1 PerfScore 3.50
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
- mov ecx, eax
- ; gcrRegs +[ecx]
- test ecx, ecx
- je SHORT G_M8451_IG05
- ;; size=6 bbWeight=1 PerfScore 1.50
-G_M8451_IG03: ; bbWeight=0.50, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz
- mov edx, dword ptr [edx+0x20]
- mov edx, dword ptr [edx]
- cmp dword ptr [ecx], edx
- je SHORT G_M8451_IG05
- ;; size=9 bbWeight=0.50 PerfScore 4.00
-G_M8451_IG04: ; bbWeight=0.25, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[ecx]
- mov ecx, edx
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
+ mov ecx, dword ptr [edx+0x20]
+ mov ecx, dword ptr [ecx]
mov edx, eax
; gcrRegs +[edx]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[edx]
- mov ecx, eax
- ; gcrRegs +[ecx]
- ;; size=11 bbWeight=0.25 PerfScore 0.44
-G_M8451_IG05: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
- mov eax, ecx
- ; gcrRegs +[eax]
- ;; size=2 bbWeight=1 PerfScore 0.25
-G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 5.25
+G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
mov esp, ebp
pop ebp
ret
;; size=4 bbWeight=1 PerfScore 1.75
-; Total bytes of code 41, prolog size 7, PerfScore 11.44, instruction count 20, allocated bytes for code 41 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
+; Total bytes of code 25, prolog size 7, PerfScore 10.50, instruction count 12, allocated bytes for code 25 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
; ============================================================
-18 (-38.30%) : 114695.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)
; ============================================================
+43 (+14.88%) : 621744.dasm - System.Reflection.CerHashtable`2[System.Canon,System.Canon]:getItem(System.Canon):System._Canon:this (Tier1)
@@ -9,28 +9,30 @@
; 3 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 3, 3 ) byref -> ecx this single-def
-; V01 arg1 [V01,T00] ( 12, 12.17) ref -> esi class-hnd single-def <System.__Canon>
+; V00 this [V00,T08] ( 3, 3 ) byref -> ecx this single-def
+; V01 arg1 [V01,T00] ( 8, 7.46) ref -> esi class-hnd single-def <System.__Canon>
;* V02 TypeCtx [V02 ] ( 0, 0 ) int -> zero-ref single-def
-; V03 loc0 [V03,T08] ( 4, 4 ) ref -> edi class-hnd exact single-def <<unknown class>>
-; V04 loc1 [V04,T04] ( 5, 5 ) int -> edx
-; V05 loc2 [V05,T12] ( 4, 4.46) ref -> ebx class-hnd single-def <<unknown class>>
-; V06 loc3 [V06,T02] ( 10, 9.14) int -> [ebp-0x10]
+; V03 loc0 [V03,T11] ( 4, 4 ) ref -> edi class-hnd exact single-def <<unknown class>>
+; V04 loc1 [V04,T07] ( 5, 5 ) int -> edx
+; V05 loc2 [V05,T14] ( 4, 3.50) ref -> [ebp-0x14] class-hnd spill-single-def <<unknown class>>
+; V06 loc3 [V06,T04] ( 10, 6.25) int -> [ebp-0x10]
;* V07 loc4 [V07 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
-; V08 loc5 [V08,T01] ( 8, 7.46) ref -> [ebp-0x18] class-hnd spill-single-def <System.__Canon>
-; V09 loc6 [V09,T11] ( 3, 2.50) int -> eax "guarded devirt return temp"
+; V08 loc5 [V08,T03] ( 8, 7.46) ref -> [ebp-0x18] class-hnd spill-single-def <System.__Canon>
+; V09 loc6 [V09,T16] ( 3, 2.50) int -> eax "guarded devirt return temp"
;* V10 tmp1 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.String>
-; V11 tmp2 [V11,T09] ( 4, 4 ) int -> eax "Inline return value spill temp"
-;* V12 tmp3 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String>
-; V13 tmp4 [V13,T13] ( 3, 2.50) ref -> ecx class-hnd exact "Inline stloc first use temp" <System.String>
-;* V14 tmp5 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String>
-; V15 tmp6 [V15,T14] ( 2, 2.42) ref -> eax class-hnd exact "Inline stloc first use temp" <System.String>
-; V16 tmp7 [V16,T06] ( 2, 5 ) byref -> ecx "impAppendStmt"
-; V17 tmp8 [V17,T03] ( 3, 6 ) ref -> eax single-def "arr expr"
-; V18 cse0 [V18,T07] ( 4, 4.92) int -> [ebp-0x14] spill-single-def "CSE - moderate"
-; V19 cse1 [V19,T10] ( 6, 5.67) int -> ecx multi-def "CSE - moderate"
+; V11 tmp2 [V11,T12] ( 4, 4 ) int -> eax "Inline return value spill temp"
+; V12 tmp3 [V12,T15] ( 3, 3 ) ref -> ecx class-hnd exact single-def "Inline stloc first use temp" <System.String>
+; V13 tmp4 [V13,T05] ( 5, 6.14) ref -> [ebp-0x1C] class-hnd exact spill-single-def "Inline stloc first use temp" <System.String>
+; V14 tmp5 [V14,T09] ( 2, 5 ) byref -> ecx "impAppendStmt"
+; V15 tmp6 [V15,T06] ( 3, 6 ) ref -> edx single-def "arr expr"
+; V16 cse0 [V16,T10] ( 4, 4.92) int -> ebx "CSE - moderate"
+; V17 cse1 [V17,T13] ( 6, 3.75) int -> ecx multi-def "CSE - moderate"
+; V18 rat0 [V18,T02] ( 5, 7.50) ref -> ecx "replacement local"
+; V19 rat1 [V19,T01] ( 5, 9.09) ref -> edx "replacement local"
+; TEMP_02 ref -> [ebp-0x20]
+; TEMP_01 int -> [ebp-0x24]
;
-; Lcl frame size = 12
+; Lcl frame size = 24
G_M33817_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -38,16 +40,18 @@ G_M33817_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 12
+ sub esp, 24
+ xor eax, eax
+ mov dword ptr [ebp-0x20], eax
mov esi, edx
; gcrRegs +[esi]
- ;; size=11 bbWeight=1 PerfScore 4.75
+ ;; size=16 bbWeight=1 PerfScore 6.00
G_M33817_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref, isz
; byrRegs +[ecx]
mov edi, gword ptr [ecx]
; gcrRegs +[edi]
test edi, edi
- je G_M33817_IG18
+ je G_M33817_IG19
mov ecx, esi
; gcrRegs +[ecx]
; byrRegs -[ecx]
@@ -56,120 +60,123 @@ G_M33817_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000002
;; size=16 bbWeight=1 PerfScore 4.75
G_M33817_IG03: ; bbWeight=0.50, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [ecx], 0xD1FFAB1E
- je SHORT G_M33817_IG05
+ jne SHORT G_M33817_IG05
;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M33817_IG04: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ecx]
+G_M33817_IG04: ; bbWeight=1, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+ test ecx, ecx
+ jne SHORT G_M33817_IG06
mov ecx, esi
- ; gcrRegs +[ecx]
mov eax, dword ptr [esi]
mov eax, dword ptr [eax+0x2C]
call [eax+0x0C]<unknown method>
; gcrRegs -[ecx]
- jmp SHORT G_M33817_IG06
- ;; size=12 bbWeight=1 PerfScore 9.25
-G_M33817_IG05: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
- mov ecx, esi
+ jmp SHORT G_M33817_IG07
+ ;; size=16 bbWeight=1 PerfScore 10.50
+G_M33817_IG05: ; bbWeight=0.25, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ xor ecx, ecx
; gcrRegs +[ecx]
+ jmp SHORT G_M33817_IG04
+ ;; size=4 bbWeight=0.25 PerfScore 0.56
+G_M33817_IG06: ; bbWeight=1, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref
call [<unknown method>]
; gcrRegs -[ecx]
- ;; size=8 bbWeight=1 PerfScore 3.25
-G_M33817_IG06: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ ;; size=6 bbWeight=1 PerfScore 3.00
+G_M33817_IG07: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov edx, eax
not eax
test edx, edx
cmovl edx, eax
mov ebx, gword ptr [edi+0x04]
; gcrRegs +[ebx]
+ mov gword ptr [ebp-0x14], ebx
+ ; GC ptr vars +{V05}
mov ecx, dword ptr [ebx+0x04]
mov eax, edx
cdq
idiv edx:eax, ecx
- ;; size=20 bbWeight=1 PerfScore 30.75
-G_M33817_IG07: ; bbWeight=1.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- cmp edx, ecx
- jae G_M33817_IG17
- mov ecx, gword ptr [ebx+4*edx+0x08]
+ mov eax, edx
+ ;; size=25 bbWeight=1 PerfScore 32.00
+G_M33817_IG08: ; bbWeight=1.25, gcVars=00004000 {V05}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ cmp eax, ecx
+ jae G_M33817_IG18
+ mov dword ptr [ebp-0x10], eax
+ mov edx, gword ptr [ebx+4*eax+0x08]
+ ; gcrRegs +[edx]
+ mov ecx, edx
; gcrRegs +[ecx]
mov gword ptr [ebp-0x18], ecx
; GC ptr vars +{V08}
test ecx, ecx
- je G_M33817_IG18
+ je G_M33817_IG19
cmp dword ptr [ecx], 0xD1FFAB1E
- jne G_M33817_IG20
+ jne G_M33817_IG21
cmp ecx, esi
- je SHORT G_M33817_IG15
- ;; size=39 bbWeight=1.25 PerfScore 13.44
-G_M33817_IG08: ; bbWeight=1.21, gcVars=00000002 {V08}, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- mov eax, esi
- ; gcrRegs +[eax]
- cmp dword ptr [eax], 0xD1FFAB1E
- jne SHORT G_M33817_IG14
- mov eax, dword ptr [ecx+0x04]
- ; gcrRegs -[eax]
- mov dword ptr [ebp-0x14], eax
- cmp eax, dword ptr [esi+0x04]
- mov dword ptr [ebp-0x10], edx
- jne SHORT G_M33817_IG11
- ;; size=24 bbWeight=1.21 PerfScore 14.84
-G_M33817_IG09: ; bbWeight=1.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[ecx]
+ je SHORT G_M33817_IG14
+ ;; size=44 bbWeight=1.25 PerfScore 15.00
+G_M33817_IG09: ; bbWeight=1.21, gcVars=00004008 {V05 V08}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[edx ebx]
+ mov edx, esi
+ ; gcrRegs +[edx]
+ test edx, edx
+ je SHORT G_M33817_IG11
+ ;; size=6 bbWeight=1.21 PerfScore 1.82
+G_M33817_IG10: ; bbWeight=0.61, gcrefRegs=000000C6 {ecx edx esi edi}, byrefRegs=00000000 {}, byref, isz
+ cmp dword ptr [edx], 0xD1FFAB1E
+ jne SHORT G_M33817_IG16
+ ;; size=8 bbWeight=0.61 PerfScore 2.42
+G_M33817_IG11: ; bbWeight=1.21, gcrefRegs=000000C6 {ecx edx esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov gword ptr [ebp-0x1C], edx
+ ; GC ptr vars +{V13}
+ test edx, edx
+ je SHORT G_M33817_IG17
+ mov ebx, dword ptr [ecx+0x04]
+ cmp ebx, dword ptr [edx+0x04]
+ jne SHORT G_M33817_IG17
+ ;; size=15 bbWeight=1.21 PerfScore 10.00
+G_M33817_IG12: ; bbWeight=1.25, gcVars=00004028 {V05 V08 V13}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[ecx edx]
mov ecx, 1
call [<unknown method>]
mov ecx, 1
call [<unknown method>]
- mov eax, dword ptr [ebp-0x14]
+ mov edx, gword ptr [ebp-0x1C]
+ ; gcrRegs +[edx]
xor ecx, ecx
- cmp dword ptr [esi+0x04], eax
+ cmp dword ptr [edx+0x04], ebx
sete cl
call [<unknown method>]
+ ; gcrRegs -[edx]
mov ecx, gword ptr [ebp-0x18]
; gcrRegs +[ecx]
add ecx, 8
; gcrRegs -[ecx]
; byrRegs +[ecx]
- mov edx, dword ptr [ebp-0x14]
- add edx, edx
- push edx
- lea edx, bword ptr [esi+0x08]
+ add ebx, ebx
+ push ebx
+ mov ebx, gword ptr [ebp-0x1C]
+ ; gcrRegs +[ebx]
+ lea edx, bword ptr [ebx+0x08]
; byrRegs +[edx]
- ; GC ptr vars -{V08}
+ ; GC ptr vars -{V05 V08 V13}
call [<unknown method>]
+ ; gcrRegs -[ebx]
; byrRegs -[ecx edx]
;; size=60 bbWeight=1.25 PerfScore 27.19
-G_M33817_IG10: ; bbWeight=1.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M33817_IG13: ; bbWeight=1.25, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
test eax, eax
- jne SHORT G_M33817_IG13
+ je SHORT G_M33817_IG17
;; size=4 bbWeight=1.25 PerfScore 1.56
-G_M33817_IG11: ; bbWeight=1.21, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov edx, dword ptr [ebp-0x10]
- inc edx
- mov ecx, dword ptr [ebx+0x04]
- cmp ecx, edx
- jle SHORT G_M33817_IG21
- ;; size=11 bbWeight=1.21 PerfScore 5.45
-G_M33817_IG12: ; bbWeight=0.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
- jmp G_M33817_IG07
- ;; size=5 bbWeight=0.25 PerfScore 0.50
-G_M33817_IG13: ; bbWeight=0.62, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ebx esi]
- mov edx, dword ptr [ebp-0x10]
- jmp SHORT G_M33817_IG15
- ;; size=5 bbWeight=0.62 PerfScore 1.88
-G_M33817_IG14: ; bbWeight=0.61, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[ebx esi]
- mov dword ptr [ebp-0x10], edx
- jmp SHORT G_M33817_IG11
- ;; size=5 bbWeight=0.61 PerfScore 1.82
-G_M33817_IG15: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ebx esi]
- mov eax, gword ptr [edi+0x08]
+G_M33817_IG14: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[esi]
+ mov edx, gword ptr [edi+0x08]
+ ; gcrRegs +[edx]
...
+46 (+15.08%) : 274210.dasm - System.Reflection.CerHashtable`2[System.Canon,System.Canon]:getItem(System.Canon):System._Canon:this (Tier1)
@@ -9,29 +9,31 @@
; 3 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 3, 3 ) byref -> ecx this single-def
-; V01 arg1 [V01,T00] ( 11, 5.60) ref -> esi class-hnd single-def <System.__Canon>
+; V00 this [V00,T02] ( 3, 3 ) byref -> ecx this single-def
+; V01 arg1 [V01,T00] ( 8, 3.80) ref -> esi class-hnd single-def <System.__Canon>
;* V02 TypeCtx [V02 ] ( 0, 0 ) int -> zero-ref single-def
-; V03 loc0 [V03,T07] ( 4, 2.86) ref -> edi class-hnd exact single-def <<unknown class>>
-; V04 loc1 [V04,T04] ( 5, 3.57) int -> edx
-; V05 loc2 [V05,T06] ( 4, 3.00) ref -> ebx class-hnd single-def <<unknown class>>
-; V06 loc3 [V06,T02] ( 10, 4.57) int -> [ebp-0x10]
+; V03 loc0 [V03,T09] ( 4, 2.86) ref -> edi class-hnd exact single-def <<unknown class>>
+; V04 loc1 [V04,T06] ( 5, 3.57) int -> edx
+; V05 loc2 [V05,T08] ( 4, 3.00) ref -> [ebp-0x1C] class-hnd single-def <<unknown class>>
+; V06 loc3 [V06,T03] ( 10, 4.57) int -> [ebp-0x10]
;* V07 loc4 [V07 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
-; V08 loc5 [V08,T03] ( 8, 4.51) ref -> [ebp-0x1C] class-hnd <System.__Canon>
-; V09 loc6 [V09,T12] ( 3, 1.14) int -> eax "guarded devirt return temp"
+; V08 loc5 [V08,T04] ( 8, 4.51) ref -> [ebp-0x20] class-hnd <System.__Canon>
+; V09 loc6 [V09,T16] ( 3, 1.14) int -> eax "guarded devirt return temp"
;* V10 tmp1 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.String>
-; V11 tmp2 [V11,T10] ( 4, 2.14) int -> eax "Inline return value spill temp"
-;* V12 tmp3 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String>
-; V13 tmp4 [V13,T11] ( 3, 1.79) ref -> ecx class-hnd exact "Inline stloc first use temp" <System.String>
-;* V14 tmp5 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String>
-; V15 tmp6 [V15,T14] ( 2, 1.03) ref -> eax class-hnd exact "Inline stloc first use temp" <System.String>
-; V16 tmp7 [V16,T08] ( 2, 2.29) byref -> ecx "impAppendStmt"
-; V17 tmp8 [V17,T15] ( 3, 0.86) ref -> eax single-def "arr expr"
-; V18 cse0 [V18,T13] ( 3, 1.60) int -> [ebp-0x14] spill-single-def "CSE - moderate"
-; V19 cse1 [V19,T09] ( 4, 2.17) int -> [ebp-0x18] spill-single-def "CSE - moderate"
-; V20 cse2 [V20,T05] ( 6, 3.43) int -> ecx multi-def "CSE - moderate"
+; V11 tmp2 [V11,T12] ( 4, 2.14) int -> eax "Inline return value spill temp"
+; V12 tmp3 [V12,T13] ( 3, 2.14) ref -> ecx class-hnd exact single-def "Inline stloc first use temp" <System.String>
+; V13 tmp4 [V13,T14] ( 4, 2.11) ref -> [ebp-0x24] class-hnd exact spill-single-def "Inline stloc first use temp" <System.String>
+; V14 tmp5 [V14,T10] ( 2, 2.29) byref -> ecx "impAppendStmt"
+; V15 tmp6 [V15,T17] ( 3, 0.86) ref -> ecx single-def "arr expr"
+; V16 cse0 [V16,T15] ( 3, 1.60) int -> [ebp-0x14] "CSE - moderate"
+; V17 cse1 [V17,T11] ( 4, 2.17) int -> [ebp-0x18] "CSE - moderate"
+; V18 cse2 [V18,T07] ( 6, 3.43) int -> ecx multi-def "CSE - moderate"
+; V19 rat0 [V19,T01] ( 5, 5.36) ref -> ecx "replacement local"
+; V20 rat1 [V20,T05] ( 5, 3.86) ref -> edx "replacement local"
+; TEMP_02 ref -> [ebp-0x28]
+; TEMP_01 int -> [ebp-0x2C]
;
-; Lcl frame size = 16
+; Lcl frame size = 32
G_M33817_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -39,51 +41,42 @@ G_M33817_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 16
+ sub esp, 32
+ xor eax, eax
+ mov dword ptr [ebp-0x28], eax
mov esi, edx
; gcrRegs +[esi]
- ;; size=11 bbWeight=1 PerfScore 4.75
+ ;; size=16 bbWeight=1 PerfScore 6.00
G_M33817_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref, isz
; byrRegs +[ecx]
mov edi, gword ptr [ecx]
; gcrRegs +[edi]
test edi, edi
- je SHORT G_M33817_IG06
+ je SHORT G_M33817_IG13
;; size=6 bbWeight=1 PerfScore 3.25
-G_M33817_IG03: ; bbWeight=0.71, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M33817_IG03: ; bbWeight=0.71, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
; byrRegs -[ecx]
mov ecx, esi
; gcrRegs +[ecx]
test ecx, ecx
- je G_M33817_IG20
- ;; size=10 bbWeight=0.71 PerfScore 1.07
-G_M33817_IG04: ; bbWeight=0.36, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref
+ je SHORT G_M33817_IG06
+ ;; size=6 bbWeight=0.71 PerfScore 1.07
+G_M33817_IG04: ; bbWeight=0.36, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [ecx], 0xD1FFAB1E
- jne G_M33817_IG20
- ;; size=12 bbWeight=0.36 PerfScore 1.43
-G_M33817_IG05: ; bbWeight=0.71, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ je SHORT G_M33817_IG06
+ ;; size=8 bbWeight=0.36 PerfScore 1.43
+G_M33817_IG05: ; bbWeight=0.18, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx]
- mov ecx, esi
+ xor ecx, ecx
; gcrRegs +[ecx]
+ ;; size=2 bbWeight=0.18 PerfScore 0.04
+G_M33817_IG06: ; bbWeight=0.71, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref
+ test ecx, ecx
+ je G_M33817_IG24
call [<unknown method>]
; gcrRegs -[ecx]
- jmp SHORT G_M33817_IG08
- ;; size=10 bbWeight=0.71 PerfScore 3.75
-G_M33817_IG06: ; bbWeight=0.29, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[esi edi]
- xor eax, eax
- ; gcrRegs +[eax]
- ;; size=2 bbWeight=0.29 PerfScore 0.07
-G_M33817_IG07: ; bbWeight=0.29, epilog, nogc, extend
- lea esp, [ebp-0x0C]
- pop ebx
- pop esi
- pop edi
- pop ebp
- ret 4
- ;; size=10 bbWeight=0.29 PerfScore 1.29
-G_M33817_IG08: ; bbWeight=0.71, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[eax] +[esi edi]
+ ;; size=14 bbWeight=0.71 PerfScore 3.04
+G_M33817_IG07: ; bbWeight=0.71, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov edx, eax
not eax
test edx, edx
@@ -94,39 +87,71 @@ G_M33817_IG08: ; bbWeight=0.71, gcVars=00000000 {}, gcrefRegs=000000C0 {e
mov eax, edx
cdq
idiv edx:eax, ecx
- ;; size=20 bbWeight=0.71 PerfScore 21.96
-G_M33817_IG09: ; bbWeight=1.14, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- cmp edx, ecx
- jae G_M33817_IG19
- mov ecx, gword ptr [ebx+4*edx+0x08]
+ mov eax, edx
+ ;; size=22 bbWeight=0.71 PerfScore 22.14
+G_M33817_IG08: ; bbWeight=1.14, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ cmp eax, ecx
+ jae G_M33817_IG23
+ mov edx, gword ptr [ebx+4*eax+0x08]
+ ; gcrRegs +[edx]
+ mov ecx, edx
; gcrRegs +[ecx]
test ecx, ecx
- je SHORT G_M33817_IG06
- ;; size=16 bbWeight=1.14 PerfScore 5.14
-G_M33817_IG10: ; bbWeight=0.57, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
+ je SHORT G_M33817_IG13
+ ;; size=18 bbWeight=1.14 PerfScore 5.43
+G_M33817_IG09: ; bbWeight=0.57, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[edx]
cmp dword ptr [ecx], 0xD1FFAB1E
- jne G_M33817_IG22
+ jne G_M33817_IG25
cmp ecx, esi
- je G_M33817_IG17
+ je G_M33817_IG21
;; size=20 bbWeight=0.57 PerfScore 3.00
-G_M33817_IG11: ; bbWeight=0.51, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov eax, esi
+G_M33817_IG10: ; bbWeight=0.51, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
+ mov edx, esi
+ ; gcrRegs +[edx]
+ test edx, edx
+ je G_M33817_IG20
+ ;; size=10 bbWeight=0.51 PerfScore 0.77
+G_M33817_IG11: ; bbWeight=0.26, gcrefRegs=000000CE {ecx edx ebx esi edi}, byrefRegs=00000000 {}, byref
+ cmp dword ptr [edx], 0xD1FFAB1E
+ je G_M33817_IG20
+ ;; size=12 bbWeight=0.26 PerfScore 1.03
+G_M33817_IG12: ; bbWeight=0.13, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[edx]
+ jmp SHORT G_M33817_IG19
+ ;; size=2 bbWeight=0.13 PerfScore 0.26
+G_M33817_IG13: ; bbWeight=0.29, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[ecx ebx esi edi]
+ xor eax, eax
; gcrRegs +[eax]
- cmp dword ptr [eax], 0xD1FFAB1E
- jne SHORT G_M33817_IG16
- mov gword ptr [ebp-0x1C], ecx
+ ;; size=2 bbWeight=0.29 PerfScore 0.07
+G_M33817_IG14: ; bbWeight=0.29, epilog, nogc, extend
+ lea esp, [ebp-0x0C]
+ pop ebx
+ pop esi
+ pop edi
+ pop ebp
+ ret 4
+ ;; size=10 bbWeight=0.29 PerfScore 1.29
+G_M33817_IG15: ; bbWeight=0.51, gcVars=00004000 {V13}, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[eax] +[ecx ebx esi edi]
+ ; GC ptr vars +{V13 V14}
+ mov gword ptr [ebp-0x20], ecx
; GC ptr vars +{V08}
- mov eax, dword ptr [ecx+0x04]
- ; gcrRegs -[eax]
- mov dword ptr [ebp-0x18], eax
- mov eax, dword ptr [esi+0x04]
- mov dword ptr [ebp-0x14], eax
- cmp dword ptr [ebp-0x18], eax
- mov dword ptr [ebp-0x10], edx
- jne SHORT G_M33817_IG14
- ;; size=33 bbWeight=0.51 PerfScore 7.84
-G_M33817_IG12: ; bbWeight=0.57, gcVars=00000008 {V08}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+ mov edx, dword ptr [ecx+0x04]
+ mov dword ptr [ebp-0x18], edx
+ mov edx, gword ptr [ebp-0x24]
+ ; gcrRegs +[edx]
+ mov edx, dword ptr [edx+0x04]
+ ; gcrRegs -[edx]
+ cmp dword ptr [ebp-0x18], edx
+ mov dword ptr [ebp-0x14], edx
+ jne SHORT G_M33817_IG18
+ ;; size=23 bbWeight=0.51 PerfScore 5.66
+G_M33817_IG16: ; bbWeight=0.57, gcVars=00004010 {V08 V13}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ecx]
+ ; GC ptr vars -{V14}
+ mov dword ptr [ebp-0x10], eax
mov ecx, 1
call [<unknown method>]
mov ecx, 1
@@ -136,7 +161,7 @@ G_M33817_IG12: ; bbWeight=0.57, gcVars=00000008 {V08}, gcrefRegs=000000C8
sete cl
movzx ecx, cl
call [<unknown method>]
- mov ecx, gword ptr [ebp-0x1C]
+ mov ecx, gword ptr [ebp-0x20]
; gcrRegs +[ecx]
add ecx, 8
; gcrRegs -[ecx]
@@ -144,43 +169,50 @@ G_M33817_IG12: ; bbWeight=0.57, gcVars=00000008 {V08}, gcrefRegs=000000C8
mov edx, dword ptr [ebp-0x18]
add edx, edx
push edx
- lea edx, bword ptr [esi+0x08]
+ mov edx, gword ptr [ebp-0x24]
+ ; gcrRegs +[edx]
+ add edx, 8
+ ; gcrRegs -[edx]
; byrRegs +[edx]
- ; GC ptr vars -{V08}
+ ; GC ptr vars -{V08 V13}
call [<unknown method>]
; byrRegs -[ecx edx]
- ;; size=61 bbWeight=0.57 PerfScore 11.86
-G_M33817_IG13: ; bbWeight=0.57, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=67 bbWeight=0.57 PerfScore 12.86
+G_M33817_IG17: ; bbWeight=0.57, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
test eax, eax
- jne SHORT G_M33817_IG15
- ;; size=4 bbWeight=0.57 PerfScore 0.71
-G_M33817_IG14: ; bbWeight=0.43, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
...
+18 (+17.31%) : 552032.dasm - System.Text.Json.JsonSerializer:ValidateInputType(System.Object,System.Type) (Tier1)
@@ -9,14 +9,13 @@
; 1 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 5, 3.82) ref -> edi class-hnd single-def <System.Object>
+; V00 arg0 [V00,T02] ( 5, 3.82) ref -> edi class-hnd single-def <System.Object>
; V01 arg1 [V01,T00] ( 9, 5.45) ref -> esi class-hnd single-def <System.Type>
-; V02 loc0 [V02,T02] ( 4, 2.45) ref -> edx class-hnd exact single-def <System.RuntimeType>
-; V03 tmp0 [V03,T03] ( 4, 1.64) int -> eax "guarded devirt return temp"
+; V02 loc0 [V02,T03] ( 4, 2.45) ref -> edx class-hnd exact single-def <System.RuntimeType>
+; V03 tmp0 [V03,T05] ( 4, 1.64) int -> eax "guarded devirt return temp"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
-;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
-;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-; V07 tmp4 [V07,T04] ( 2, 1.64) ref -> ecx class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
+; V05 tmp2 [V05,T04] ( 3, 2.45) ref -> ecx class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
+; V06 rat0 [V06,T01] ( 5, 6.13) ref -> ecx "replacement local"
;
; Lcl frame size = 0
@@ -32,9 +31,9 @@ G_M11386_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
;; size=9 bbWeight=1 PerfScore 3.75
G_M11386_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
test esi, esi
- je SHORT G_M11386_IG05
+ je SHORT G_M11386_IG08
test edi, edi
- je SHORT G_M11386_IG04
+ je SHORT G_M11386_IG07
;; size=8 bbWeight=1 PerfScore 2.50
G_M11386_IG03: ; bbWeight=0.82, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, edi
@@ -44,25 +43,42 @@ G_M11386_IG03: ; bbWeight=0.82, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
mov edx, eax
; gcrRegs +[edx]
cmp dword ptr [esi], 0xD1FFAB1E
- jne SHORT G_M11386_IG06
+ jne SHORT G_M11386_IG09
cmp edx, esi
- je SHORT G_M11386_IG04
+ je SHORT G_M11386_IG07
mov ecx, edx
; gcrRegs +[ecx]
+ test ecx, ecx
+ je SHORT G_M11386_IG06
+ ;; size=27 bbWeight=0.82 PerfScore 6.75
+G_M11386_IG04: ; bbWeight=0.41, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax edx]
+ cmp dword ptr [ecx], 0xD1FFAB1E
+ je SHORT G_M11386_IG06
+ ;; size=8 bbWeight=0.41 PerfScore 1.64
+G_M11386_IG05: ; bbWeight=0.20, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[ecx]
+ xor ecx, ecx
+ ; gcrRegs +[ecx]
+ ;; size=2 bbWeight=0.20 PerfScore 0.05
+G_M11386_IG06: ; bbWeight=0.82, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+ test ecx, ecx
+ je SHORT G_M11386_IG10
mov edx, esi
+ ; gcrRegs +[edx]
call <unknown method>
- ; gcrRegs -[eax ecx edx]
+ ; gcrRegs -[ecx edx]
test eax, eax
- je SHORT G_M11386_IG07
- ;; size=34 bbWeight=0.82 PerfScore 7.77
-G_M11386_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ je SHORT G_M11386_IG10
+ ;; size=15 bbWeight=0.82 PerfScore 3.07
+G_M11386_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[esi edi]
pop esi
pop edi
pop ebp
ret
;; size=4 bbWeight=1 PerfScore 2.50
-G_M11386_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M11386_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
mov ecx, 0x34AA
mov edx, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
@@ -73,7 +89,7 @@ G_M11386_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, b
; gcrRegs -[eax ecx]
int3
;; size=24 bbWeight=0 PerfScore 0.00
-G_M11386_IG06: ; bbWeight=0, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M11386_IG09: ; bbWeight=0, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[edx esi edi]
mov ecx, esi
; gcrRegs +[ecx]
@@ -82,9 +98,9 @@ G_M11386_IG06: ; bbWeight=0, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=
call [eax+0x10]<unknown method>
; gcrRegs -[ecx edx]
test eax, eax
- jne SHORT G_M11386_IG04
+ jne SHORT G_M11386_IG07
;; size=14 bbWeight=0 PerfScore 0.00
-G_M11386_IG07: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M11386_IG10: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, esi
; gcrRegs +[ecx]
mov edx, edi
@@ -94,6 +110,6 @@ G_M11386_IG07: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
int3
;; size=11 bbWeight=0 PerfScore 0.00
-; Total bytes of code 104, prolog size 5, PerfScore 16.52, instruction count 42, allocated bytes for code 104 (MethodHash=dd09d385) for method System.Text.Json.JsonSerializer:ValidateInputType(System.Object,System.Type) (Tier1)
+; Total bytes of code 122, prolog size 5, PerfScore 20.25, instruction count 49, allocated bytes for code 122 (MethodHash=dd09d385) for method System.Text.Json.JsonSerializer:ValidateInputType(System.Object,System.Type) (Tier1)
; ============================================================
librariestestsnotieredcompilation.run.windows.x86.Release.mch
-14 (-42.42%) : 90827.dasm - System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c11[System.__Canon]:<GetMetadataViewProvider>b__1_0(System.Collections.Generic.IDictionary
2[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%) : 62860.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%) : 139286.dasm - System.Linq.ParallelQuery1+<>c__2
1[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%) : 98615.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%) : 98200.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%) : 98994.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%) : 34198.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%) : 34277.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)
; ============================================================
+11 (+2.60%) : 8032.dasm - FSharp.Compiler.CheckExpressions:ComputeAccessAndCompPath(FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Core.FSharpOption1[FSharp.Compiler.CheckExpressions+DeclKind],FSharp.Compiler.Text.Range,Microsoft.FSharp.Core.FSharpOption
1[FSharp.Compiler.Syntax.SynAccess],Microsoft.FSharp.Core.FSharpOption1[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)
@@ -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%) : 34118.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)
; ============================================================
+6 (+3.05%) : 12254.dasm - FSharp.Compiler.SyntaxTreeOps:unionBindingAndMembers(Microsoft.FSharp.Collections.FSharpList1[FSharp.Compiler.Syntax.SynBinding],Microsoft.FSharp.Collections.FSharpList
1[FSharp.Compiler.Syntax.SynMemberDefn]):Microsoft.FSharp.Collections.FSharpList`1FSharp.Compiler.Syntax.SynBinding
@@ -8,23 +8,23 @@
; 0 inlinees with PGO data; 3 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 3, 3 ) ref -> eax class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding]>
-; V01 arg1 [V01,T01] ( 3, 3 ) ref -> esi class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynMemberDefn]>
+; V00 arg0 [V00,T01] ( 3, 3 ) ref -> eax class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding]>
+; V01 arg1 [V01,T02] ( 3, 3 ) ref -> esi class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynMemberDefn]>
; V02 loc0 [V02 ] ( 12, 6.50) struct ( 8) [ebp-0x0C] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.FSharp.Core.CompilerServices.ListCollector`1[FSharp.Compiler.Syntax.SynBinding]>
;* V03 tmp0 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
-; V04 tmp1 [V04,T05] ( 3, 2 ) ref -> eax class-hnd "Inline return value spill temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding]>
-; V05 tmp2 [V05,T02] ( 3, 5 ) ref -> eax class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
-;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding]>
-; V07 tmp4 [V07,T04] ( 5, 3.25) ref -> ecx class-hnd exact "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding]>
-;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding]>
-; V09 tmp6 [V09,T07] ( 3, 1.50) ref -> eax
-;* V10 tmp7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding]>
-; V11 tmp8 [V11,T08] ( 3, 1.50) ref -> eax class-hnd "Inline return value spill temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding]>
-; V12 tmp9 [V12,T06] ( 2, 2 ) ref -> edx class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
-; V13 tmp10 [V13,T09] ( 2, 1 ) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding]>
-; V14 tmp11 [V14 ] ( 8, 4.50) ref -> [ebp-0x0C] do-not-enreg[X] addr-exposed "field V02.Result (fldOffset=0x0)" P-DEP
-; V15 tmp12 [V15 ] ( 6, 3.50) ref -> [ebp-0x08] do-not-enreg[X] addr-exposed "field V02.LastCons (fldOffset=0x4)" P-DEP
-; V16 tmp13 [V16,T03] ( 2, 4 ) ref -> ecx single-def "argument with side effect"
+; V04 tmp1 [V04,T06] ( 3, 2 ) ref -> eax class-hnd "Inline return value spill temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding]>
+; V05 tmp2 [V05,T03] ( 3, 5 ) ref -> eax class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
+; V06 tmp3 [V06,T05] ( 4, 3 ) ref -> ecx class-hnd exact single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding]>
+;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding]>
+; V08 tmp5 [V08,T08] ( 3, 1.50) ref -> eax
+;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding]>
+; V10 tmp7 [V10,T09] ( 3, 1.50) ref -> eax class-hnd "Inline return value spill temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding]>
+; V11 tmp8 [V11,T07] ( 2, 2 ) ref -> edx class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
+; V12 tmp9 [V12,T10] ( 2, 1 ) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding]>
+; V13 tmp10 [V13 ] ( 8, 4.50) ref -> [ebp-0x0C] do-not-enreg[X] addr-exposed "field V02.Result (fldOffset=0x0)" P-DEP
+; V14 tmp11 [V14 ] ( 6, 3.50) ref -> [ebp-0x08] do-not-enreg[X] addr-exposed "field V02.LastCons (fldOffset=0x4)" P-DEP
+; V15 tmp12 [V15,T04] ( 2, 4 ) ref -> ecx single-def "argument with side effect"
+; V16 rat0 [V16,T00] ( 5, 7.50) ref -> ecx "replacement local"
;
; Lcl frame size = 8
@@ -49,7 +49,7 @@ G_M4830_IG02: ; bbWeight=1, gcrefRegs=00000041 {eax esi}, byrefRegs=00000
call [<unknown method>]
; gcrRegs -[eax edx]
test byte ptr [D1FFAB1EH], 1 ; global ptr
- je G_M4830_IG13
+ je G_M4830_IG15
;; size=29 bbWeight=1 PerfScore 8.75
G_M4830_IG03: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [D1FFAB1EH] ; static handle
@@ -62,21 +62,30 @@ G_M4830_IG03: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov ecx, eax
; gcrRegs +[ecx]
test ecx, ecx
- je SHORT G_M4830_IG09
+ je SHORT G_M4830_IG06
;; size=25 bbWeight=1 PerfScore 7.75
-G_M4830_IG04: ; bbWeight=0.25, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz
+G_M4830_IG04: ; bbWeight=0.50, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [ecx], 0xD1FFAB1E
- jne SHORT G_M4830_IG09
- ;; size=8 bbWeight=0.25 PerfScore 1.00
-G_M4830_IG05: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ je SHORT G_M4830_IG06
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M4830_IG05: ; bbWeight=0.25, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[ecx]
+ xor ecx, ecx
+ ; gcrRegs +[ecx]
+ ;; size=2 bbWeight=0.25 PerfScore 0.06
+G_M4830_IG06: ; bbWeight=1, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz
+ test ecx, ecx
+ je SHORT G_M4830_IG11
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M4830_IG07: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
cmp gword ptr [ebp-0x0C], 0
- jne SHORT G_M4830_IG06
+ jne SHORT G_M4830_IG08
mov eax, ecx
; gcrRegs +[eax]
- jmp SHORT G_M4830_IG07
+ jmp SHORT G_M4830_IG09
;; size=10 bbWeight=0.50 PerfScore 2.62
-G_M4830_IG06: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
+G_M4830_IG08: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax]
mov edx, gword ptr [ebp-0x08]
; gcrRegs +[edx]
@@ -89,17 +98,17 @@ G_M4830_IG06: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=000000
mov eax, gword ptr [ebp-0x0C]
; gcrRegs +[eax]
;; size=14 bbWeight=0.50 PerfScore 1.75
-G_M4830_IG07: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
+G_M4830_IG09: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
xor ecx, ecx
; gcrRegs +[ecx]
mov gword ptr [ebp-0x0C], ecx
;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M4830_IG08: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
+G_M4830_IG10: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ecx]
mov gword ptr [ebp-0x08], ecx
- jmp SHORT G_M4830_IG12
+ jmp SHORT G_M4830_IG14
;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M4830_IG09: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
+G_M4830_IG11: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
push 0xD1FFAB1E
lea ecx, [ebp-0x0C]
mov edx, eax
@@ -107,12 +116,12 @@ G_M4830_IG09: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=000000
call [<unknown method>]
; gcrRegs -[eax edx]
cmp gword ptr [ebp-0x0C], 0
- jne SHORT G_M4830_IG10
+ jne SHORT G_M4830_IG12
mov eax, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[eax]
- jmp SHORT G_M4830_IG12
+ jmp SHORT G_M4830_IG14
;; size=29 bbWeight=0.50 PerfScore 5.88
-G_M4830_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M4830_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax]
mov edx, gword ptr [ebp-0x08]
; gcrRegs +[edx]
@@ -130,17 +139,17 @@ G_M4830_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000
; gcrRegs +[ecx]
mov gword ptr [ebp-0x0C], ecx
;; size=24 bbWeight=0.50 PerfScore 3.38
-G_M4830_IG11: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
+G_M4830_IG13: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx]
mov gword ptr [ebp-0x08], ecx
;; size=3 bbWeight=0.50 PerfScore 0.50
-G_M4830_IG12: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M4830_IG14: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
lea esp, [ebp-0x04]
pop esi
pop ebp
ret
;; size=6 bbWeight=1 PerfScore 2.50
-G_M4830_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M4830_IG15: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax] +[esi]
mov ecx, 0xD1FFAB1E
mov edx, 0x33EB
@@ -148,6 +157,6 @@ G_M4830_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi},
jmp G_M4830_IG03
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 197, prolog size 15, PerfScore 41.50, instruction count 60, allocated bytes for code 197 (MethodHash=e3d9ed21) for method FSharp.Compiler.SyntaxTreeOps:unionBindingAndMembers(Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynMemberDefn]):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding] (FullOpts)
+; Total bytes of code 203, prolog size 15, PerfScore 43.81, instruction count 63, allocated bytes for code 203 (MethodHash=e3d9ed21) for method FSharp.Compiler.SyntaxTreeOps:unionBindingAndMembers(Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynMemberDefn]):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding] (FullOpts)
; ============================================================
Details
Improvements/regressions per collection
Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
benchmarks.run.windows.x86.checked.mch |
110 |
80 |
28 |
2 |
-1,257 |
+650 |
benchmarks.run_pgo.windows.x86.checked.mch |
2,701 |
2,246 |
451 |
4 |
-18,582 |
+6,507 |
benchmarks.run_tiered.windows.x86.checked.mch |
61 |
46 |
13 |
2 |
-774 |
+269 |
coreclr_tests.run.windows.x86.checked.mch |
592 |
242 |
333 |
17 |
-3,279 |
+70,877 |
libraries.crossgen2.windows.x86.checked.mch |
1,035 |
1,032 |
1 |
2 |
-29,763 |
+3 |
libraries.pmi.windows.x86.checked.mch |
597 |
523 |
53 |
21 |
-10,024 |
+1,403 |
libraries_tests.run.windows.x86.Release.mch |
2,860 |
1,324 |
1,506 |
30 |
-17,664 |
+45,465 |
librariestestsnotieredcompilation.run.windows.x86.Release.mch |
906 |
752 |
134 |
20 |
-16,047 |
+7,600 |
realworld.run.windows.x86.checked.mch |
156 |
142 |
6 |
8 |
-2,543 |
+121 |
|
9,018 |
6,387 |
2,525 |
106 |
-99,933 |
+132,895 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
benchmarks.run.windows.x86.checked.mch |
22,804 |
4 |
22,800 |
1 (0.00%) |
1,689 (6.90%) |
benchmarks.run_pgo.windows.x86.checked.mch |
100,593 |
41,904 |
58,689 |
2 (0.00%) |
17,214 (14.61%) |
benchmarks.run_tiered.windows.x86.checked.mch |
46,719 |
28,747 |
17,972 |
1 (0.00%) |
1,164 (2.43%) |
coreclr_tests.run.windows.x86.checked.mch |
564,650 |
319,847 |
244,803 |
21 (0.00%) |
10,018 (1.74%) |
libraries.crossgen2.windows.x86.checked.mch |
242,557 |
15 |
242,542 |
4 (0.00%) |
62 (0.03%) |
libraries.pmi.windows.x86.checked.mch |
276,980 |
6 |
276,974 |
7 (0.00%) |
28,793 (9.42%) |
libraries_tests.run.windows.x86.Release.mch |
594,467 |
427,222 |
167,245 |
5 (0.00%) |
33,366 (5.31%) |
librariestestsnotieredcompilation.run.windows.x86.Release.mch |
288,422 |
21,910 |
266,512 |
3 (0.00%) |
28,013 (8.85%) |
realworld.run.windows.x86.checked.mch |
31,261 |
3 |
31,258 |
1 (0.00%) |
4,724 (13.13%) |
|
2,168,453 |
839,658 |
1,328,795 |
45 (0.00%) |
125,043 (5.45%) |
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: 5993081 (overridden on cmd)
Total bytes of diff: 5992474 (overridden on cmd)
Total bytes of delta: -607 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
71 : 20926.dasm (37.17 % of base)
49 : 14180.dasm (8.61 % of base)
42 : 14663.dasm (6.34 % of base)
40 : 13499.dasm (8.77 % of base)
40 : 23171.dasm (15.94 % of base)
40 : 23759.dasm (15.21 % of base)
40 : 24285.dasm (13.75 % of base)
40 : 24382.dasm (10.20 % of base)
40 : 23420.dasm (14.60 % of base)
40 : 23727.dasm (14.34 % of base)
40 : 24052.dasm (13.99 % of base)
40 : 9854.dasm (10.42 % of base)
12 : 4996.dasm (0.68 % of base)
12 : 7094.dasm (0.69 % of base)
12 : 7514.dasm (2.08 % of base)
12 : 5340.dasm (0.70 % of base)
12 : 5698.dasm (3.97 % of base)
12 : 7377.dasm (0.72 % of base)
11 : 9975.dasm (1.80 % of base)
6 : 14494.dasm (9.68 % of base)
Top file improvements (bytes):
-86 : 5921.dasm (-2.47 % of base)
-47 : 9468.dasm (-1.72 % of base)
-35 : 19889.dasm (-9.67 % of base)
-33 : 5800.dasm (-12.55 % of base)
-31 : 9019.dasm (-6.42 % of base)
-30 : 9048.dasm (-11.81 % of base)
-28 : 17436.dasm (-6.10 % of base)
-26 : 6557.dasm (-18.44 % of base)
-24 : 10787.dasm (-11.01 % of base)
-24 : 5212.dasm (-19.35 % of base)
-22 : 18686.dasm (-11.64 % of base)
-22 : 9289.dasm (-13.50 % of base)
-22 : 17646.dasm (-27.16 % of base)
-21 : 10632.dasm (-4.61 % of base)
-20 : 14531.dasm (-9.35 % of base)
-19 : 678.dasm (-32.76 % of base)
-19 : 15644.dasm (-20.65 % of base)
-19 : 16493.dasm (-20.65 % of base)
-19 : 2466.dasm (-28.79 % of base)
-18 : 11244.dasm (-38.30 % of base)
62 total files with Code Size differences (37 improved, 25 regressed), 2 unchanged.
Top method regressions (bytes):
71 (37.17 % of base) : 20926.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[Interop.StructureToPtr+NonBlittableStruct](int):Interop.StructureToPtr+NonBlittableStruct (FullOpts)
49 (8.61 % of base) : 14180.dasm - System.Tests.Perf_Array:SetupArrayCopy2D():this (FullOpts)
42 (6.34 % of base) : 14663.dasm - System.Tests.Perf_Array:SetupArrayCopy3D():this (FullOpts)
40 (15.94 % of base) : 23171.dasm - System.Tests.Perf_Array:ArrayCreate1D():System.Array:this (FullOpts)
40 (14.60 % of base) : 23420.dasm - System.Tests.Perf_Array:ArrayCreate2D():System.Array:this (FullOpts)
40 (14.34 % of base) : 23727.dasm - System.Tests.Perf_Array:ArrayCreate3D():System.Array:this (FullOpts)
40 (15.21 % of base) : 23759.dasm - System.Tests.Perf_Array:SetupArrayAssign1D():this (FullOpts)
40 (13.99 % of base) : 24052.dasm - System.Tests.Perf_Array:SetupArrayAssign2D():this (FullOpts)
40 (13.75 % of base) : 24285.dasm - System.Tests.Perf_Array:SetupArrayAssign3D():this (FullOpts)
40 (10.20 % of base) : 24382.dasm - System.Tests.Perf_Array:SetupArrayRetrieve1D():this (FullOpts)
40 (10.42 % of base) : 9854.dasm - System.Tests.Perf_Array:SetupArrayRetrieve2D():this (FullOpts)
40 (8.77 % of base) : 13499.dasm - System.Tests.Perf_Array:SetupArrayRetrieve3D():this (FullOpts)
12 (0.72 % of base) : 7377.dasm - System.Collections.Perf_DefaultFrozenDictionary:Setup():this (FullOpts)
12 (2.08 % of base) : 7514.dasm - System.Collections.Perf_FrozenDictionary_String:ToImmutableDictionary():System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]:this (FullOpts)
12 (0.69 % of base) : 7094.dasm - System.Collections.Perf_LengthBucketsFrozenDictionary:Setup():this (FullOpts)
12 (0.70 % of base) : 5340.dasm - System.Collections.Perf_SingleCharFrozenDictionary:Setup():this (FullOpts)
12 (0.68 % of base) : 4996.dasm - System.Collections.Perf_SubstringFrozenDictionary:Setup():this (FullOpts)
12 (3.97 % of base) : 5698.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]:<.cctor>b__4_0(System.Object):this (FullOpts)
11 (1.80 % of base) : 9975.dasm - System.Collections.Generic.SortedSet`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:.ctor(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Generic.IComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):this (FullOpts)
6 (9.68 % of base) : 10379.dasm - PerfLabTests.CastingPerf:FooObjIsDescendant():this (FullOpts)
Top method improvements (bytes):
-86 (-2.47 % of base) : 5921.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) : 9468.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)
-35 (-9.67 % of base) : 19889.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (FullOpts)
-33 (-12.55 % of base) : 5800.dasm - System.Net.Http.Headers.HttpHeaders:AddValueToStoreValue[System.__Canon](System.__Canon,byref) (FullOpts)
-31 (-6.42 % of base) : 9019.dasm - Newtonsoft.Json.Utilities.ReflectionUtils:GetAttributes(System.Object,System.Type,ubyte):System.Attribute[] (FullOpts)
-30 (-11.81 % of base) : 9048.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (FullOpts)
-28 (-6.10 % of base) : 17436.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) : 6557.dasm - Microsoft.Extensions.Options.OptionsMonitor`1[System.__Canon]:add__onChange(System.Action`2[System.__Canon,System.__Canon]):this (FullOpts)
-24 (-19.35 % of base) : 5212.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) : 10787.dasm - System.Xml.Serialization.XmlSerializationWriterILGen:GenerateElement(System.Xml.Serialization.XmlMapping):System.String:this (FullOpts)
-22 (-11.64 % of base) : 18686.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-22 (-27.16 % of base) : 17646.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
-22 (-13.50 % of base) : 9289.dasm - System.Collections.Generic.List`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
-21 (-4.61 % of base) : 10632.dasm - System.Xml.Serialization.ContextAwareTables`1[System.__Canon]:GetOrCreateValue(System.Type,System.Func`2[System.__Canon,System.__Canon]):System.__Canon:this (FullOpts)
-20 (-9.35 % of base) : 14531.dasm - System.Collections.Generic.Dictionary`2[int,System.__Canon]:System.Collections.IDictionary.set_Item(System.Object,System.Object):this (FullOpts)
-19 (-20.65 % of base) : 16493.dasm - Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions:GetRequiredService[System.__Canon](System.IServiceProvider):System.__Canon (FullOpts)
-19 (-20.65 % of base) : 15644.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) : 2466.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
-18 (-8.14 % of base) : 10341.dasm - System.Collections.Perf_Frozen`1[System.__Canon]:GetUniqueValues(int):System.__Canon[]:this (FullOpts)
Top method regressions (percentages):
71 (37.17 % of base) : 20926.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[Interop.StructureToPtr+NonBlittableStruct](int):Interop.StructureToPtr+NonBlittableStruct (FullOpts)
40 (15.94 % of base) : 23171.dasm - System.Tests.Perf_Array:ArrayCreate1D():System.Array:this (FullOpts)
40 (15.21 % of base) : 23759.dasm - System.Tests.Perf_Array:SetupArrayAssign1D():this (FullOpts)
40 (14.60 % of base) : 23420.dasm - System.Tests.Perf_Array:ArrayCreate2D():System.Array:this (FullOpts)
40 (14.34 % of base) : 23727.dasm - System.Tests.Perf_Array:ArrayCreate3D():System.Array:this (FullOpts)
40 (13.99 % of base) : 24052.dasm - System.Tests.Perf_Array:SetupArrayAssign2D():this (FullOpts)
40 (13.75 % of base) : 24285.dasm - System.Tests.Perf_Array:SetupArrayAssign3D():this (FullOpts)
40 (10.42 % of base) : 9854.dasm - System.Tests.Perf_Array:SetupArrayRetrieve2D():this (FullOpts)
40 (10.20 % of base) : 24382.dasm - System.Tests.Perf_Array:SetupArrayRetrieve1D():this (FullOpts)
6 (9.68 % of base) : 10379.dasm - PerfLabTests.CastingPerf:FooObjIsDescendant():this (FullOpts)
6 (9.68 % of base) : 24167.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (FullOpts)
6 (9.68 % of base) : 14303.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (FullOpts)
6 (9.68 % of base) : 14494.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (FullOpts)
6 (9.68 % of base) : 15777.dasm - PerfLabTests.CastingPerf:IntObj():this (FullOpts)
6 (9.68 % of base) : 23906.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (FullOpts)
40 (8.77 % of base) : 13499.dasm - System.Tests.Perf_Array:SetupArrayRetrieve3D():this (FullOpts)
49 (8.61 % of base) : 14180.dasm - System.Tests.Perf_Array:SetupArrayCopy2D():this (FullOpts)
42 (6.34 % of base) : 14663.dasm - System.Tests.Perf_Array:SetupArrayCopy3D():this (FullOpts)
12 (3.97 % of base) : 5698.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]:<.cctor>b__4_0(System.Object):this (FullOpts)
12 (2.08 % of base) : 7514.dasm - System.Collections.Perf_FrozenDictionary_String:ToImmutableDictionary():System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]:this (FullOpts)
Top method improvements (percentages):
-14 (-41.18 % of base) : 7181.dasm - System.Collections.ContainsKeyTrue`2+<>c[System.__Canon,System.__Canon]:<Setup>b__10_1(System.__Canon):System.__Canon:this (FullOpts)
-16 (-39.02 % of base) : 1855.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
-18 (-38.30 % of base) : 11244.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) : 3683.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
-19 (-28.79 % of base) : 2466.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
-22 (-27.16 % of base) : 17646.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
-17 (-22.67 % of base) : 16877.dasm - Newtonsoft.Json.JsonConvert:DeserializeObject[System.__Canon](System.String,Newtonsoft.Json.JsonSerializerSettings):System.__Canon (FullOpts)
-17 (-21.79 % of base) : 3250.dasm - Sigil.NonGeneric.Emit:CreateDelegate[System.__Canon](byref,int):System.__Canon:this (FullOpts)
-12 (-21.43 % of base) : 20655.dasm - System.Xml.Base64Decoder:SetNextOutputBuffer(System.Array,int,int):this (FullOpts)
-19 (-20.65 % of base) : 16493.dasm - Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions:GetRequiredService[System.__Canon](System.IServiceProvider):System.__Canon (FullOpts)
-19 (-20.65 % of base) : 15644.dasm - Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions:GetService[System.__Canon](System.IServiceProvider):System.__Canon (FullOpts)
-24 (-19.35 % of base) : 5212.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) : 6557.dasm - Microsoft.Extensions.Options.OptionsMonitor`1[System.__Canon]:add__onChange(System.Action`2[System.__Canon,System.__Canon]):this (FullOpts)
-12 (-15.38 % of base) : 13539.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) : 8991.dasm - System.Text.Json.Serialization.Converters.ListOfTConverter`2[System.__Canon,System.__Canon]:Add(byref,byref):this (FullOpts)
-15 (-14.85 % of base) : 2943.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (FullOpts)
-10 (-14.71 % of base) : 15210.dasm - MicroBenchmarks.Serializers.Json_FromStream`1[System.__Canon]:DataContractJsonSerializer_():System.__Canon:this (FullOpts)
-10 (-14.71 % of base) : 6745.dasm - MicroBenchmarks.Serializers.Xml_FromStream`1[System.__Canon]:DataContractSerializer_():System.__Canon:this (FullOpts)
-10 (-14.71 % of base) : 13392.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: 28623124 (overridden on cmd)
Total bytes of diff: 28611049 (overridden on cmd)
Total bytes of delta: -12075 (-0.04 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
117 : 67523.dasm (10.65 % of base)
112 : 100907.dasm (10.23 % of base)
112 : 31246.dasm (10.21 % of base)
109 : 52069.dasm (9.92 % of base)
108 : 71102.dasm (9.72 % of base)
107 : 107449.dasm (9.78 % of base)
107 : 42133.dasm (9.70 % of base)
107 : 37735.dasm (9.54 % of base)
107 : 114052.dasm (9.70 % of base)
104 : 102165.dasm (9.44 % of base)
103 : 110159.dasm (9.27 % of base)
102 : 104266.dasm (8.98 % of base)
101 : 42184.dasm (9.23 % of base)
99 : 89345.dasm (8.98 % of base)
99 : 90384.dasm (9.18 % of base)
99 : 117728.dasm (8.82 % of base)
99 : 51579.dasm (9.11 % of base)
99 : 60208.dasm (9.11 % of base)
99 : 61715.dasm (8.85 % of base)
97 : 108235.dasm (8.72 % of base)
Top file improvements (bytes):
-128 : 81870.dasm (-4.46 % of base)
-89 : 9747.dasm (-2.47 % of base)
-48 : 83076.dasm (-5.21 % of base)
-47 : 34529.dasm (-1.69 % of base)
-46 : 1812.dasm (-17.23 % of base)
-35 : 77950.dasm (-9.41 % of base)
-28 : 71641.dasm (-6.05 % of base)
-23 : 106906.dasm (-4.36 % of base)
-19 : 56778.dasm (-3.09 % of base)
-19 : 104503.dasm (-6.05 % of base)
-19 : 16351.dasm (-32.76 % of base)
-19 : 87026.dasm (-3.18 % of base)
-18 : 83895.dasm (-3.15 % of base)
-18 : 43889.dasm (-3.27 % of base)
-18 : 56989.dasm (-3.27 % of base)
-18 : 61955.dasm (-3.01 % of base)
-18 : 51080.dasm (-3.27 % of base)
-18 : 54717.dasm (-3.27 % of base)
-18 : 83252.dasm (-11.46 % of base)
-18 : 85161.dasm (-3.27 % of base)
65 total files with Code Size differences (36 improved, 29 regressed), 4 unchanged.
Top method regressions (bytes):
117 (10.65 % of base) : 67523.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
112 (10.23 % of base) : 100907.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
112 (10.21 % of base) : 31246.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
109 (9.92 % of base) : 52069.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
108 (9.72 % of base) : 71102.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
107 (9.78 % of base) : 107449.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
107 (9.70 % of base) : 42133.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
107 (9.54 % of base) : 37735.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
107 (9.70 % of base) : 114052.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
104 (9.44 % of base) : 102165.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
103 (9.27 % of base) : 110159.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
102 (8.98 % of base) : 104266.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
101 (9.23 % of base) : 42184.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
99 (8.98 % of base) : 89345.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
99 (9.18 % of base) : 90384.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
99 (8.82 % of base) : 117728.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
99 (9.11 % of base) : 51579.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
99 (9.11 % of base) : 60208.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
99 (8.85 % of base) : 61715.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
97 (8.72 % of base) : 108235.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
Top method improvements (bytes):
-128 (-4.46 % of base) : 81870.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) : 9747.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) : 83076.dasm - Microsoft.CodeAnalysis.CSharp.LocalBinderFactory:VisitLocalDeclarationStatement(Microsoft.CodeAnalysis.CSharp.Syntax.LocalDeclarationStatementSyntax):this (Tier0-FullOpts)
-47 (-1.69 % of base) : 34529.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) : 1812.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
-35 (-9.41 % of base) : 77950.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (Tier0-FullOpts)
-28 (-6.05 % of base) : 71641.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithAnnotationsGreen[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxAnnotation]):System.__Canon (Tier0-FullOpts)
-23 (-4.36 % of base) : 106906.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]:<.cctor>b__4_0(System.Object):this (Tier1)
-19 (-6.05 % of base) : 104503.dasm - Jil.Common.ExtensionMethods+<>c__DisplayClass51_0:<IsContainerType>b__0(System.Type):ubyte:this (Tier1)
-19 (-32.76 % of base) : 16351.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-19 (-3.09 % of base) : 56778.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
-19 (-3.18 % of base) : 87026.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
-18 (-3.15 % of base) : 83895.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax:GetNodeSlot(int):Microsoft.CodeAnalysis.SyntaxNode:this (Tier1)
-18 (-11.46 % of base) : 83252.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-18 (-3.27 % of base) : 43889.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
-18 (-3.27 % of base) : 56989.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
-18 (-3.01 % of base) : 61955.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
-18 (-3.27 % of base) : 51080.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
-18 (-3.27 % of base) : 54717.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
-18 (-3.27 % of base) : 85161.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(uint,int,uint,int,int,int):System.__Canon[]:this (Tier1)
Top method regressions (percentages):
117 (10.65 % of base) : 67523.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
14 (10.61 % of base) : 25342.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
40 (10.23 % of base) : 40205.dasm - System.Tests.Perf_Array:SetupArrayRetrieve2D():this (Tier0-FullOpts)
112 (10.23 % of base) : 100907.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
112 (10.21 % of base) : 31246.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
109 (9.92 % of base) : 52069.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
40 (9.85 % of base) : 116806.dasm - System.Tests.Perf_Array:SetupArrayRetrieve1D():this (Tier0-FullOpts)
107 (9.78 % of base) : 107449.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
108 (9.72 % of base) : 71102.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
107 (9.70 % of base) : 42133.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
107 (9.70 % of base) : 114052.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
6 (9.68 % of base) : 38218.dasm - PerfLabTests.CastingPerf:FooObjIsDescendant():this (Tier0-FullOpts)
6 (9.68 % of base) : 113596.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier0-FullOpts)
6 (9.68 % of base) : 46497.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier0-FullOpts)
6 (9.68 % of base) : 48616.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier0-FullOpts)
6 (9.68 % of base) : 58466.dasm - PerfLabTests.CastingPerf:IntObj():this (Tier0-FullOpts)
6 (9.68 % of base) : 109314.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier0-FullOpts)
107 (9.54 % of base) : 37735.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
104 (9.44 % of base) : 102165.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
103 (9.27 % of base) : 110159.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
Top method improvements (percentages):
-19 (-32.76 % of base) : 16351.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-17 (-21.79 % of base) : 50343.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
-46 (-17.23 % of base) : 1812.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
-15 (-15.15 % of base) : 55466.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (Tier1)
-12 (-12.77 % of base) : 45859.dasm - System.Xml.Linq.XDocument:GetFirstNode[System.__Canon]():System.__Canon:this (Tier0-FullOpts)
-18 (-11.46 % of base) : 83252.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-10 (-10.64 % of base) : 84161.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
-35 (-9.41 % of base) : 77950.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (Tier0-FullOpts)
-12 (-8.70 % of base) : 84402.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-14 (-7.07 % of base) : 21343.dasm - ProtoBuf.ProtoReader+State:DeserializeRootImpl[System.__Canon](System.__Canon):System.__Canon:this (FullOpts)
-11 (-6.51 % of base) : 4384.dasm - Microsoft.Extensions.Options.OptionsMonitor`1[System.__Canon]:add__onChange(System.Action`2[System.__Canon,System.__Canon]):this (Tier0-FullOpts)
-8 (-6.11 % of base) : 82941.dasm - Microsoft.CodeAnalysis.SyntaxNode:FirstAncestorOrSelf[System.__Canon](System.Func`2[System.__Canon,ubyte],ubyte):System.__Canon:this (Tier0-FullOpts)
-19 (-6.05 % of base) : 104503.dasm - Jil.Common.ExtensionMethods+<>c__DisplayClass51_0:<IsContainerType>b__0(System.Type):ubyte:this (Tier1)
-28 (-6.05 % of base) : 71641.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithAnnotationsGreen[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxAnnotation]):System.__Canon (Tier0-FullOpts)
-14 (-5.98 % of base) : 24733.dasm - System.Linq.Enumerable+<CastIterator>d__66`1[System.__Canon]:MoveNext():ubyte:this (Tier0-FullOpts)
-48 (-5.21 % of base) : 83076.dasm - Microsoft.CodeAnalysis.CSharp.LocalBinderFactory:VisitLocalDeclarationStatement(Microsoft.CodeAnalysis.CSharp.Syntax.LocalDeclarationStatementSyntax):this (Tier0-FullOpts)
-12 (-4.67 % of base) : 1649.dasm - System.Linq.EnumerableSorter`2[System.__Canon,int]:ComputeKeys(System.__Canon[],int):this (Tier0-FullOpts)
-128 (-4.46 % of base) : 81870.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) : 106906.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]:<.cctor>b__4_0(System.Object):this (Tier1)
-14 (-4.17 % of base) : 47382.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: 8552866 (overridden on cmd)
Total bytes of diff: 8552361 (overridden on cmd)
Total bytes of delta: -505 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
49 : 28065.dasm (8.61 % of base)
42 : 28938.dasm (6.34 % of base)
40 : 22322.dasm (10.42 % of base)
40 : 26645.dasm (8.77 % of base)
40 : 47637.dasm (10.20 % of base)
15 : 22594.dasm (2.40 % of base)
7 : 47493.dasm (11.11 % of base)
6 : 22832.dasm (9.68 % of base)
6 : 29192.dasm (9.68 % of base)
6 : 40252.dasm (0.63 % of base)
6 : 27385.dasm (9.68 % of base)
6 : 31627.dasm (9.68 % of base)
6 : 46932.dasm (9.68 % of base)
Top file improvements (bytes):
-86 : 6511.dasm (-2.47 % of base)
-47 : 23530.dasm (-1.72 % of base)
-35 : 39645.dasm (-9.67 % of base)
-31 : 19915.dasm (-6.42 % of base)
-30 : 45231.dasm (-11.81 % of base)
-28 : 34159.dasm (-6.10 % of base)
-26 : 3167.dasm (-18.44 % of base)
-21 : 21326.dasm (-4.34 % of base)
-19 : 24480.dasm (-28.79 % of base)
-19 : 2689.dasm (-32.76 % of base)
-18 : 1151.dasm (-8.45 % of base)
-18 : 20818.dasm (-38.30 % of base)
-18 : 42099.dasm (-11.46 % of base)
-17 : 11049.dasm (-21.79 % of base)
-17 : 4415.dasm (-3.33 % of base)
-16 : 19543.dasm (-13.33 % of base)
-16 : 12058.dasm (-39.02 % of base)
-15 : 8596.dasm (-14.85 % of base)
-14 : 11783.dasm (-7.07 % of base)
-14 : 23536.dasm (-12.50 % of base)
49 total files with Code Size differences (36 improved, 13 regressed), 2 unchanged.
Top method regressions (bytes):
49 (8.61 % of base) : 28065.dasm - System.Tests.Perf_Array:SetupArrayCopy2D():this (Tier0-FullOpts)
42 (6.34 % of base) : 28938.dasm - System.Tests.Perf_Array:SetupArrayCopy3D():this (Tier0-FullOpts)
40 (10.20 % of base) : 47637.dasm - System.Tests.Perf_Array:SetupArrayRetrieve1D():this (Tier0-FullOpts)
40 (10.42 % of base) : 22322.dasm - System.Tests.Perf_Array:SetupArrayRetrieve2D():this (Tier0-FullOpts)
40 (8.77 % of base) : 26645.dasm - System.Tests.Perf_Array:SetupArrayRetrieve3D():this (Tier0-FullOpts)
15 (2.40 % of base) : 22594.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) : 47493.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier0-FullOpts)
6 (0.63 % of base) : 40252.dasm - Microsoft.Cci.MetadataWriter:PopulateDeclSecurityTableRowsFor(System.Reflection.Metadata.EntityHandle,System.Collections.Generic.IEnumerable`1[Microsoft.Cci.SecurityAttribute]):this (Tier0-FullOpts)
6 (9.68 % of base) : 22832.dasm - PerfLabTests.CastingPerf:FooObjIsDescendant():this (Tier0-FullOpts)
6 (9.68 % of base) : 27385.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier0-FullOpts)
6 (9.68 % of base) : 29192.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier0-FullOpts)
6 (9.68 % of base) : 31627.dasm - PerfLabTests.CastingPerf:IntObj():this (Tier0-FullOpts)
6 (9.68 % of base) : 46932.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier0-FullOpts)
Top method improvements (bytes):
-86 (-2.47 % of base) : 6511.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) : 23530.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)
-35 (-9.67 % of base) : 39645.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (Tier0-FullOpts)
-31 (-6.42 % of base) : 19915.dasm - Newtonsoft.Json.Utilities.ReflectionUtils:GetAttributes(System.Object,System.Type,ubyte):System.Attribute[] (Tier1)
-30 (-11.81 % of base) : 45231.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (Tier1)
-28 (-6.10 % of base) : 34159.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) : 3167.dasm - Microsoft.Extensions.Options.OptionsMonitor`1[System.__Canon]:add__onChange(System.Action`2[System.__Canon,System.__Canon]):this (Tier0-FullOpts)
-21 (-4.34 % of base) : 21326.dasm - System.Xml.Serialization.ContextAwareTables`1[System.__Canon]:GetOrCreateValue(System.Type,System.Func`2[System.__Canon,System.__Canon]):System.__Canon:this (Tier1)
-19 (-32.76 % of base) : 2689.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-19 (-28.79 % of base) : 24480.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
-18 (-11.46 % of base) : 42099.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-18 (-8.45 % of base) : 1151.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
-18 (-38.30 % of base) : 20818.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
-17 (-3.33 % of base) : 4415.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) : 11049.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
-16 (-39.02 % of base) : 12058.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
-16 (-13.33 % of base) : 19543.dasm - System.Text.Json.Reflection.ReflectionExtensions:GetUniqueCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
-15 (-14.85 % of base) : 8596.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (Tier1)
-14 (-4.22 % of base) : 8945.dasm - Jil.Common.ExtensionMethods:GetCustomAttribute[System.__Canon](System.Type):System.__Canon (Tier1)
-14 (-7.07 % of base) : 11783.dasm - ProtoBuf.ProtoReader+State:DeserializeRootImpl[System.__Canon](System.__Canon):System.__Canon:this (FullOpts)
Top method regressions (percentages):
7 (11.11 % of base) : 47493.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier0-FullOpts)
40 (10.42 % of base) : 22322.dasm - System.Tests.Perf_Array:SetupArrayRetrieve2D():this (Tier0-FullOpts)
40 (10.20 % of base) : 47637.dasm - System.Tests.Perf_Array:SetupArrayRetrieve1D():this (Tier0-FullOpts)
6 (9.68 % of base) : 22832.dasm - PerfLabTests.CastingPerf:FooObjIsDescendant():this (Tier0-FullOpts)
6 (9.68 % of base) : 27385.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier0-FullOpts)
6 (9.68 % of base) : 29192.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier0-FullOpts)
6 (9.68 % of base) : 31627.dasm - PerfLabTests.CastingPerf:IntObj():this (Tier0-FullOpts)
6 (9.68 % of base) : 46932.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier0-FullOpts)
40 (8.77 % of base) : 26645.dasm - System.Tests.Perf_Array:SetupArrayRetrieve3D():this (Tier0-FullOpts)
49 (8.61 % of base) : 28065.dasm - System.Tests.Perf_Array:SetupArrayCopy2D():this (Tier0-FullOpts)
42 (6.34 % of base) : 28938.dasm - System.Tests.Perf_Array:SetupArrayCopy3D():this (Tier0-FullOpts)
15 (2.40 % of base) : 22594.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 (0.63 % of base) : 40252.dasm - Microsoft.Cci.MetadataWriter:PopulateDeclSecurityTableRowsFor(System.Reflection.Metadata.EntityHandle,System.Collections.Generic.IEnumerable`1[Microsoft.Cci.SecurityAttribute]):this (Tier0-FullOpts)
Top method improvements (percentages):
-16 (-39.02 % of base) : 12058.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
-18 (-38.30 % of base) : 20818.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
-19 (-32.76 % of base) : 2689.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-14 (-29.79 % of base) : 18310.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (Tier1)
-19 (-28.79 % of base) : 24480.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
-17 (-21.79 % of base) : 11049.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
-26 (-18.44 % of base) : 3167.dasm - Microsoft.Extensions.Options.OptionsMonitor`1[System.__Canon]:add__onChange(System.Action`2[System.__Canon,System.__Canon]):this (Tier0-FullOpts)
-15 (-14.85 % of base) : 8596.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (Tier1)
-16 (-13.33 % of base) : 19543.dasm - System.Text.Json.Reflection.ReflectionExtensions:GetUniqueCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
-12 (-13.33 % of base) : 47048.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) : 27426.dasm - System.Xml.Linq.XDocument:GetFirstNode[System.__Canon]():System.__Canon:this (Tier0-FullOpts)
-14 (-12.50 % of base) : 23536.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) : 45231.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (Tier1)
-18 (-11.46 % of base) : 42099.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-10 (-10.87 % of base) : 40908.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
-12 (-10.00 % of base) : 15191.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
-35 (-9.67 % of base) : 39645.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (Tier0-FullOpts)
-10 (-9.43 % of base) : 18339.dasm - System.Linq.Expressions.ExpressionVisitor:VisitAndConvert[System.__Canon](System.__Canon,System.String):System.__Canon:this (Tier1)
-10 (-8.62 % of base) : 38436.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (Tier1)
-18 (-8.45 % of base) : 1151.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
coreclr_tests.run.windows.x86.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 291617193 (overridden on cmd)
Total bytes of diff: 291684791 (overridden on cmd)
Total bytes of delta: 67598 (0.02 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
2968 : 278830.dasm (24.47 % of base)
2908 : 277525.dasm (23.55 % of base)
2888 : 277732.dasm (23.40 % of base)
2888 : 278429.dasm (23.47 % of base)
2814 : 278799.dasm (22.37 % of base)
2812 : 278905.dasm (22.34 % of base)
2784 : 279059.dasm (22.34 % of base)
2756 : 279455.dasm (22.03 % of base)
2734 : 278861.dasm (21.46 % of base)
2732 : 277765.dasm (21.43 % of base)
2684 : 279650.dasm (21.11 % of base)
2680 : 278397.dasm (20.94 % of base)
2670 : 277700.dasm (20.87 % of base)
2572 : 277634.dasm (19.69 % of base)
2468 : 279618.dasm (18.71 % of base)
2468 : 279097.dasm (18.71 % of base)
2464 : 277668.dasm (18.53 % of base)
2452 : 278142.dasm (18.44 % of base)
2396 : 277799.dasm (17.80 % of base)
2356 : 277601.dasm (17.40 % of base)
Top file improvements (bytes):
-128 : 483704.dasm (-4.46 % of base)
-122 : 455391.dasm (-9.87 % of base)
-62 : 370349.dasm (-2.79 % of base)
-54 : 304653.dasm (-6.78 % of base)
-54 : 312.dasm (-6.85 % of base)
-48 : 449728.dasm (-5.21 % of base)
-46 : 483655.dasm (-3.13 % of base)
-44 : 172385.dasm (-18.80 % of base)
-44 : 172408.dasm (-18.80 % of base)
-43 : 165437.dasm (-29.25 % of base)
-42 : 424083.dasm (-2.77 % of base)
-42 : 454574.dasm (-3.64 % of base)
-38 : 167496.dasm (-2.81 % of base)
-35 : 448199.dasm (-9.41 % of base)
-35 : 187943.dasm (-9.67 % of base)
-33 : 304643.dasm (-4.66 % of base)
-33 : 233391.dasm (-1.55 % of base)
-33 : 311.dasm (-4.73 % of base)
-33 : 304917.dasm (-4.60 % of base)
-33 : 67.dasm (-4.67 % of base)
78 total files with Code Size differences (50 improved, 28 regressed), 17 unchanged.
Top method regressions (bytes):
2968 (24.47 % of base) : 278830.dasm - Generated938:CalliTest() (FullOpts)
2908 (23.55 % of base) : 277525.dasm - Generated900:CalliTest() (FullOpts)
2888 (23.40 % of base) : 277732.dasm - Generated906:CalliTest() (FullOpts)
2888 (23.47 % of base) : 278429.dasm - Generated926:CalliTest() (FullOpts)
2814 (22.37 % of base) : 278799.dasm - Generated937:CalliTest() (FullOpts)
2812 (22.34 % of base) : 278905.dasm - Generated940:CalliTest() (FullOpts)
2784 (22.34 % of base) : 279059.dasm - Generated945:CalliTest() (FullOpts)
2756 (22.03 % of base) : 279455.dasm - Generated957:CalliTest() (FullOpts)
2734 (21.46 % of base) : 278861.dasm - Generated939:CalliTest() (FullOpts)
2732 (21.43 % of base) : 277765.dasm - Generated907:CalliTest() (FullOpts)
2684 (21.11 % of base) : 279650.dasm - Generated963:CalliTest() (FullOpts)
2680 (20.94 % of base) : 278397.dasm - Generated925:CalliTest() (FullOpts)
2670 (20.87 % of base) : 277700.dasm - Generated905:CalliTest() (FullOpts)
2572 (19.69 % of base) : 277634.dasm - Generated903:CalliTest() (FullOpts)
2468 (18.71 % of base) : 279097.dasm - Generated946:CalliTest() (FullOpts)
2468 (18.71 % of base) : 279618.dasm - Generated962:CalliTest() (FullOpts)
2464 (18.53 % of base) : 277668.dasm - Generated904:CalliTest() (FullOpts)
2452 (18.44 % of base) : 278142.dasm - Generated918:CalliTest() (FullOpts)
2396 (17.80 % of base) : 277799.dasm - Generated908:CalliTest() (FullOpts)
2356 (17.40 % of base) : 277601.dasm - Generated902:CalliTest() (FullOpts)
Top method improvements (bytes):
-128 (-4.46 % of base) : 483704.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
-122 (-9.87 % of base) : 455391.dasm - System.Linq.Expressions.Compiler.ILGen:EmitConvertToType(System.Reflection.Emit.ILGenerator,System.Type,System.Type,ubyte,System.Linq.Expressions.Compiler.ILocalCache) (Tier1)
-62 (-2.79 % of base) : 370349.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1)
-54 (-6.85 % of base) : 312.dasm - InterlockedCompareExchange1:PosTest2[System.__Canon]():ubyte:this (FullOpts)
-54 (-6.78 % of base) : 304653.dasm - InterlockedCompareExchange1:PosTest2[System.__Canon]():ubyte:this (Tier0-FullOpts)
-48 (-5.21 % of base) : 449728.dasm - Microsoft.CodeAnalysis.CSharp.LocalBinderFactory:VisitLocalDeclarationStatement(Microsoft.CodeAnalysis.CSharp.Syntax.LocalDeclarationStatementSyntax):this (Tier0-FullOpts)
-46 (-3.13 % of base) : 483655.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:DeriveUseSiteInfoFromType(byref,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):ubyte:this (Tier1)
-44 (-18.80 % of base) : 172408.dasm - MyCounter[System.__Canon]:Decrement[System.__Canon](int):this (FullOpts)
-44 (-18.80 % of base) : 172385.dasm - MyCounter`1[System.__Canon]:Decrement[System.__Canon](int):this (FullOpts)
-43 (-29.25 % of base) : 165437.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (FullOpts)
-42 (-2.77 % of base) : 424083.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)
-42 (-3.64 % of base) : 454574.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) : 167496.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)
-35 (-9.67 % of base) : 187943.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (FullOpts)
-35 (-9.41 % of base) : 448199.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (Tier0-FullOpts)
-33 (-4.73 % of base) : 311.dasm - InterlockedCompareExchange1:PosTest1[System.__Canon]():ubyte:this (FullOpts)
-33 (-4.66 % of base) : 304643.dasm - InterlockedCompareExchange1:PosTest1[System.__Canon]():ubyte:this (Tier0-FullOpts)
-33 (-4.67 % of base) : 67.dasm - InterlockedExchange1:PosTest1[System.__Canon]():ubyte:this (FullOpts)
-33 (-4.60 % of base) : 304917.dasm - InterlockedExchange1:PosTest1[System.__Canon]():ubyte:this (Tier0-FullOpts)
-33 (-1.55 % of base) : 233391.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)
Top method regressions (percentages):
34 (566.67 % of base) : 182683.dasm - T:TestEntryPoint():int (FullOpts)
280 (61.81 % of base) : 546214.dasm - System.Reflection.Emit.RuntimeTypeBuilder:IsSubclassOf(System.Type):ubyte:this (Tier1)
71 (41.52 % of base) : 165323.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[ComWrappersTests.VtblPtr](int):ComWrappersTests.VtblPtr (FullOpts)
80 (33.33 % of base) : 454409.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
2968 (24.47 % of base) : 278830.dasm - Generated938:CalliTest() (FullOpts)
2908 (23.55 % of base) : 277525.dasm - Generated900:CalliTest() (FullOpts)
2888 (23.47 % of base) : 278429.dasm - Generated926:CalliTest() (FullOpts)
2888 (23.40 % of base) : 277732.dasm - Generated906:CalliTest() (FullOpts)
2814 (22.37 % of base) : 278799.dasm - Generated937:CalliTest() (FullOpts)
2784 (22.34 % of base) : 279059.dasm - Generated945:CalliTest() (FullOpts)
2812 (22.34 % of base) : 278905.dasm - Generated940:CalliTest() (FullOpts)
2756 (22.03 % of base) : 279455.dasm - Generated957:CalliTest() (FullOpts)
2734 (21.46 % of base) : 278861.dasm - Generated939:CalliTest() (FullOpts)
2732 (21.43 % of base) : 277765.dasm - Generated907:CalliTest() (FullOpts)
65 (21.17 % of base) : 172741.dasm - Test_static_assignment_class01:TestEntryPoint():int (FullOpts)
65 (21.17 % of base) : 172746.dasm - Test_static_assignment_struct01:TestEntryPoint():int (FullOpts)
2684 (21.11 % of base) : 279650.dasm - Generated963:CalliTest() (FullOpts)
2680 (20.94 % of base) : 278397.dasm - Generated925:CalliTest() (FullOpts)
2670 (20.87 % of base) : 277700.dasm - Generated905:CalliTest() (FullOpts)
2572 (19.69 % of base) : 277634.dasm - Generated903:CalliTest() (FullOpts)
Top method improvements (percentages):
-19 (-32.76 % of base) : 305809.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-14 (-29.79 % of base) : 166165.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
-43 (-29.25 % of base) : 165437.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (FullOpts)
-22 (-27.16 % of base) : 185493.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
-26 (-26.26 % of base) : 234659.dasm - My:foo[System.__Canon](ubyte,System.Object):System.Object (FullOpts)
-10 (-25.64 % of base) : 204317.dasm - CastExpansionTests:CastToGeneric[System.__Canon](System.Object):System.Object:this (Tier1)
-14 (-25.45 % of base) : 300515.dasm - Program+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
-15 (-25.00 % of base) : 208998.dasm - Xunit.Assert:IsType[System.__Canon](System.Object):System.__Canon (FullOpts)
-19 (-25.00 % of base) : 145276.dasm - Xunit.Assert:Throws[System.__Canon](System.Action):System.__Canon (FullOpts)
-19 (-25.00 % of base) : 236538.dasm - Xunit.Assert:Throws[System.__Canon](System.Action):System.__Canon (FullOpts)
-19 (-25.00 % of base) : 426546.dasm - Xunit.Assert:Throws[System.__Canon](System.Action):System.__Canon (Tier1)
-19 (-23.46 % of base) : 164766.dasm - Xunit.Assert:Throws[System.__Canon](System.Func`1[System.Object]):System.__Canon (FullOpts)
-19 (-23.46 % of base) : 204310.dasm - Xunit.Assert:Throws[System.__Canon](System.Func`1[System.Object]):System.__Canon (Tier1)
-32 (-21.33 % of base) : 228208.dasm - JitTest_castclass_ldlen_array_il.Test:Main():int (FullOpts)
-10 (-21.28 % of base) : 240837.dasm - Program+<>c__5`1[System.__Canon]:<GetCustomAttributes>b__5_0(Program+CustomAttributeData):System.__Canon:this (FullOpts)
-18 (-19.15 % of base) : 280798.dasm - System.CommandLine.Binding.ArgumentConverter:GetValueOrDefault[System.__Canon](System.CommandLine.Binding.ArgumentConversionResult):System.__Canon (FullOpts)
-18 (-19.15 % of base) : 562065.dasm - System.CommandLine.Binding.ArgumentConverter:GetValueOrDefault[System.__Canon](System.CommandLine.Binding.ArgumentConversionResult):System.__Canon (Tier1)
-18 (-19.15 % of base) : 543649.dasm - System.CommandLine.Binding.ArgumentConverter:GetValueOrDefault[System.__Canon](System.CommandLine.Binding.ArgumentConversionResult):System.__Canon (Tier1)
-44 (-18.80 % of base) : 172408.dasm - MyCounter[System.__Canon]:Decrement[System.__Canon](int):this (FullOpts)
-44 (-18.80 % of base) : 172385.dasm - MyCounter`1[System.__Canon]:Decrement[System.__Canon](int):this (FullOpts)
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: 31700815 (overridden on cmd)
Total bytes of diff: 31671055 (overridden on cmd)
Total bytes of delta: -29760 (-0.09 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
3 : 58843.dasm (0.70 % of base)
Top file improvements (bytes):
-219 : 203814.dasm (-5.02 % of base)
-208 : 193560.dasm (-34.61 % of base)
-204 : 193564.dasm (-33.06 % of base)
-192 : 199393.dasm (-17.20 % of base)
-180 : 199392.dasm (-17.11 % of base)
-178 : 65225.dasm (-26.22 % of base)
-169 : 65797.dasm (-24.14 % of base)
-169 : 65798.dasm (-23.54 % of base)
-168 : 199390.dasm (-17.00 % of base)
-156 : 199388.dasm (-16.88 % of base)
-144 : 199386.dasm (-16.74 % of base)
-143 : 193562.dasm (-31.29 % of base)
-140 : 193555.dasm (-31.96 % of base)
-132 : 199384.dasm (-16.58 % of base)
-123 : 66692.dasm (-18.66 % of base)
-123 : 65948.dasm (-18.66 % of base)
-120 : 199382.dasm (-16.39 % of base)
-117 : 203873.dasm (-6.81 % of base)
-109 : 197352.dasm (-14.83 % of base)
-109 : 164828.dasm (-10.05 % of base)
85 total files with Code Size differences (84 improved, 1 regressed), 2 unchanged.
Top method regressions (bytes):
3 (0.70 % of base) : 58843.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) : 203814.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) : 193560.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) : 193564.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) : 199393.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) : 199392.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) : 65225.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) : 65797.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2520[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
-169 (-23.54 % of base) : 65798.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) : 199390.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) : 199388.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) : 199386.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) : 193562.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) : 193555.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) : 199384.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) : 66692.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) : 65948.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) : 199382.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) : 203873.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 (-14.83 % of base) : 197352.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
-109 (-10.05 % of base) : 164828.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
Top method regressions (percentages):
3 (0.70 % of base) : 58843.dasm - Microsoft.CodeAnalysis.CSharp.BoundNodeExtensions:<RewriteInterpolatedStringAddition>g__doRewrite|8_0[System.__Canon,System.__Canon,System.__Canon](Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,System.__Canon,System.Func`4[System.__Canon,int,System.__Canon,System.__Canon],System.Func`5[Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,System.__Canon,System.__Canon,System.__Canon,System.__Canon],byref):System.__Canon (FullOpts)
Top method improvements (percentages):
-34 (-58.62 % of base) : 198869.dasm - CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]:<Cast>b__0():System.__Canon:this (FullOpts)
-74 (-54.41 % of base) : 205987.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) : 205992.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) : 206132.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) : 206137.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) : 203886.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) : 203856.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) : 206830.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) : 235566.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) : 122816.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) : 136422.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) : 173380.dasm - Microsoft.Extensions.Hosting.Internal.ConfigureContainerAdapter`1[System.__Canon]:ConfigureContainer(Microsoft.Extensions.Hosting.HostBuilderContext,System.Object):this (FullOpts)
-40 (-50.00 % of base) : 74295.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) : 230857.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) : 203892.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) : 204458.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) : 204460.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) : 182674.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) : 173455.dasm - Microsoft.Extensions.Hosting.HostApplicationBuilder+<>c__DisplayClass30_0`1[System.__Canon]:<ConfigureContainer>b__1(System.Object):this (FullOpts)
-30 (-46.15 % of base) : 241013.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.__Canon,System.__Canon]:get_Items():System.Collections.Generic.List`1[System.__Canon]:this (FullOpts)
libraries.pmi.windows.x86.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 36478439 (overridden on cmd)
Total bytes of diff: 36469818 (overridden on cmd)
Total bytes of delta: -8621 (-0.02 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
230 : 246125.dasm (7.70 % of base)
85 : 242516.dasm (16.63 % of base)
79 : 242530.dasm (20.79 % of base)
75 : 277151.dasm (6.93 % of base)
71 : 9875.dasm (37.37 % of base)
71 : 9876.dasm (37.97 % of base)
71 : 9879.dasm (34.98 % of base)
71 : 9877.dasm (32.27 % of base)
71 : 9878.dasm (33.18 % of base)
71 : 9874.dasm (37.37 % of base)
52 : 99762.dasm (3.33 % of base)
40 : 171808.dasm (5.67 % of base)
30 : 92923.dasm (2.16 % of base)
27 : 208063.dasm (1.04 % of base)
26 : 197836.dasm (15.29 % of base)
26 : 273459.dasm (14.05 % of base)
24 : 273173.dasm (7.34 % of base)
22 : 273469.dasm (8.49 % of base)
22 : 246003.dasm (2.72 % of base)
22 : 273494.dasm (22.00 % of base)
Top file improvements (bytes):
-253 : 219352.dasm (-20.91 % of base)
-219 : 115378.dasm (-8.18 % of base)
-217 : 123264.dasm (-10.36 % of base)
-217 : 161283.dasm (-10.36 % of base)
-216 : 153503.dasm (-6.72 % of base)
-209 : 58189.dasm (-9.14 % of base)
-202 : 81352.dasm (-8.08 % of base)
-109 : 77668.dasm (-12.88 % of base)
-107 : 194450.dasm (-10.07 % of base)
-89 : 285723.dasm (-2.47 % of base)
-82 : 177176.dasm (-6.22 % of base)
-78 : 177821.dasm (-36.11 % of base)
-64 : 29238.dasm (-13.50 % of base)
-64 : 29245.dasm (-13.01 % of base)
-63 : 71369.dasm (-14.82 % of base)
-60 : 177823.dasm (-4.77 % of base)
-56 : 170153.dasm (-19.58 % of base)
-48 : 259980.dasm (-13.75 % of base)
-46 : 226695.dasm (-3.21 % of base)
-46 : 68900.dasm (-15.97 % of base)
74 total files with Code Size differences (47 improved, 27 regressed), 20 unchanged.
Top method regressions (bytes):
230 (7.70 % of base) : 246125.dasm - System.Linq.Expressions.Expression:ValidateNewArgs(System.Reflection.ConstructorInfo,byref,byref) (FullOpts)
85 (16.63 % of base) : 242516.dasm - System.Formats.Asn1.AsnWriter:WriteEnumeratedValue(System.Enum,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (FullOpts)
79 (20.79 % of base) : 242530.dasm - System.Formats.Asn1.AsnWriter:WriteNamedBitList(System.Enum,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (FullOpts)
75 (6.93 % of base) : 277151.dasm - System.Security.Cryptography.Pkcs.Asn1.PkiStatusInfo:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this (FullOpts)
71 (32.27 % of base) : 9877.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[double](int):double (FullOpts)
71 (37.97 % of base) : 9876.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[int](int):int (FullOpts)
71 (34.98 % of base) : 9879.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[long](int):long (FullOpts)
71 (37.37 % of base) : 9875.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[short](int):short (FullOpts)
71 (33.18 % of base) : 9878.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[System.Numerics.Vector`1[float]](int):System.Numerics.Vector`1[float] (FullOpts)
71 (37.37 % of base) : 9874.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[ubyte](int):ubyte (FullOpts)
52 (3.33 % of base) : 99762.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory:XmlThreadSafetyElement(ubyte,ubyte):Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmptyElementSyntax (FullOpts)
40 (5.67 % of base) : 171808.dasm - System.Xml.Schema.XmlSchemaValidator:GetExpectedAttributes():System.Xml.Schema.XmlSchemaAttribute[]:this (FullOpts)
30 (2.16 % of base) : 92923.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanXmlStringUnQuoted():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
27 (1.04 % of base) : 208063.dasm - Microsoft.Build.Graph.ProjectInterpretation:GetGlobalPropertiesForItem(Microsoft.Build.Execution.ProjectItemInstance,Microsoft.Build.Collections.PropertyDictionary`1[Microsoft.Build.Execution.ProjectPropertyInstance],System.Collections.Generic.IEnumerable`1[Microsoft.Build.Graph.ProjectInterpretation+GlobalPropertiesModifier]):Microsoft.Build.Collections.PropertyDictionary`1[Microsoft.Build.Execution.ProjectPropertyInstance] (FullOpts)
26 (15.29 % of base) : 197836.dasm - Newtonsoft.Json.Utilities.DictionaryWrapper`2[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
26 (14.05 % of base) : 273459.dasm - System.Reflection.Emit.TypeBuilderImpl:CreateTypeInfoCore():System.Reflection.TypeInfo:this (FullOpts)
24 (7.34 % of base) : 273173.dasm - System.Reflection.Emit.EnumBuilderImpl:DefineLiteralCore(System.String,System.Object):System.Reflection.Emit.FieldBuilder:this (FullOpts)
22 (2.72 % of base) : 246003.dasm - System.Linq.Expressions.Expression:ValidateAccessorArgumentTypes(System.Reflection.MethodInfo,System.Reflection.ParameterInfo[],byref,System.String) (FullOpts)
22 (8.49 % of base) : 273469.dasm - System.Reflection.Emit.TypeBuilderImpl:DefineFieldCore(System.String,System.Type,System.Type[],System.Type[],int):System.Reflection.Emit.FieldBuilder:this (FullOpts)
22 (22.00 % of base) : 273494.dasm - System.Reflection.Emit.TypeBuilderImpl:get_UnderlyingSystemType():System.Type:this (FullOpts)
Top method improvements (bytes):
-253 (-20.91 % of base) : 219352.dasm - System.CodeDom.Compiler.CodeGenerator:GenerateExpression(System.CodeDom.CodeExpression):this (FullOpts)
-219 (-8.18 % of base) : 115378.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver:GetAllDescriptors(System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.DiagnosticDescriptor,ubyte]]:this (FullOpts)
-217 (-10.36 % of base) : 161283.dasm - Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers+<CreateAndInitializeDriverAsync>d__41:MoveNext():this (FullOpts)
-217 (-10.36 % of base) : 123264.dasm - Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers+<CreateAndInitializeDriverAsync>d__42:MoveNext():this (FullOpts)
-216 (-6.72 % of base) : 153503.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver:GetAllDiagnosticDescriptorsWithInfo(System.Threading.CancellationToken,byref):System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.DiagnosticDescriptor,Microsoft.CodeAnalysis.DiagnosticDescriptorErrorLoggerInfo]]:this (FullOpts)
-209 (-9.14 % of base) : 58189.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:AppendUseSiteDiagnostics(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
-202 (-8.08 % of base) : 81352.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:AppendUseSiteInfo(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
-109 (-12.88 % of base) : 77668.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
-107 (-10.07 % of base) : 194450.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
-89 (-2.47 % of base) : 285723.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) : 177176.dasm - System.Xml.Serialization.SchemaObjectWriter:Write54_XmlSchemaSequence(System.Xml.Schema.XmlSchemaSequence):this (FullOpts)
-78 (-36.11 % of base) : 177821.dasm - System.Xml.Serialization.XmlSchemas:ItemName(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
-64 (-13.50 % of base) : 29238.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2520[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
-64 (-13.01 % of base) : 29245.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) : 71369.dasm - System.Data.UniqueConstraint:IsConstraintViolated():ubyte:this (FullOpts)
-60 (-4.77 % of base) : 177823.dasm - System.Xml.Serialization.XmlSchemas:GetSchemaItem(System.Xml.Schema.XmlSchemaObject,System.String,System.String):System.String (FullOpts)
-56 (-19.58 % of base) : 170153.dasm - System.Xml.Schema.Compiler:CanonicalizeParticle(System.Xml.Schema.XmlSchemaParticle,ubyte):System.Xml.Schema.XmlSchemaParticle:this (FullOpts)
-48 (-13.75 % of base) : 259980.dasm - System.Net.Http.Headers.ObjectCollection`1[System.__Canon]:CopyTo(System.__Canon[],int):this (FullOpts)
-46 (-3.21 % of base) : 226695.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (FullOpts)
-46 (-15.97 % of base) : 68900.dasm - System.Data.XSDSchema:GetParticleItems(System.Xml.Schema.XmlSchemaParticle):System.Xml.Schema.XmlSchemaObjectCollection (FullOpts)
Top method regressions (percentages):
71 (37.97 % of base) : 9876.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[int](int):int (FullOpts)
71 (37.37 % of base) : 9875.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[short](int):short (FullOpts)
71 (37.37 % of base) : 9874.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[ubyte](int):ubyte (FullOpts)
71 (34.98 % of base) : 9879.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[long](int):long (FullOpts)
71 (33.18 % of base) : 9878.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[System.Numerics.Vector`1[float]](int):System.Numerics.Vector`1[float] (FullOpts)
71 (32.27 % of base) : 9877.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[double](int):double (FullOpts)
22 (22.00 % of base) : 273494.dasm - System.Reflection.Emit.TypeBuilderImpl:get_UnderlyingSystemType():System.Type:this (FullOpts)
79 (20.79 % of base) : 242530.dasm - System.Formats.Asn1.AsnWriter:WriteNamedBitList(System.Enum,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (FullOpts)
85 (16.63 % of base) : 242516.dasm - System.Formats.Asn1.AsnWriter:WriteEnumeratedValue(System.Enum,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (FullOpts)
26 (15.29 % of base) : 197836.dasm - Newtonsoft.Json.Utilities.DictionaryWrapper`2[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
26 (14.05 % of base) : 273459.dasm - System.Reflection.Emit.TypeBuilderImpl:CreateTypeInfoCore():System.Reflection.TypeInfo:this (FullOpts)
22 (8.49 % of base) : 273469.dasm - System.Reflection.Emit.TypeBuilderImpl:DefineFieldCore(System.String,System.Type,System.Type[],System.Type[],int):System.Reflection.Emit.FieldBuilder:this (FullOpts)
20 (7.91 % of base) : 68977.dasm - System.Data.ColumnTypeConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
230 (7.70 % of base) : 246125.dasm - System.Linq.Expressions.Expression:ValidateNewArgs(System.Reflection.ConstructorInfo,byref,byref) (FullOpts)
24 (7.34 % of base) : 273173.dasm - System.Reflection.Emit.EnumBuilderImpl:DefineLiteralCore(System.String,System.Object):System.Reflection.Emit.FieldBuilder:this (FullOpts)
5 (6.94 % of base) : 212061.dasm - Microsoft.Build.Collections.ReadOnlyEmptyDictionary`2[System.__Canon,System.Nullable`1[int]]:Contains(System.Object):ubyte:this (FullOpts)
5 (6.94 % of base) : 212063.dasm - Microsoft.Build.Collections.ReadOnlyEmptyDictionary`2[System.__Canon,System.Nullable`1[int]]:Remove(System.Object):this (FullOpts)
75 (6.93 % of base) : 277151.dasm - System.Security.Cryptography.Pkcs.Asn1.PkiStatusInfo:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this (FullOpts)
14 (6.60 % of base) : 197833.dasm - Newtonsoft.Json.Utilities.DictionaryWrapper`2[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.get_Item(System.Object):System.Object:this (FullOpts)
40 (5.67 % of base) : 171808.dasm - System.Xml.Schema.XmlSchemaValidator:GetExpectedAttributes():System.Xml.Schema.XmlSchemaAttribute[]:this (FullOpts)
Top method improvements (percentages):
-14 (-42.42 % of base) : 299505.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) : 28962.dasm - Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
-16 (-39.02 % of base) : 283130.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
-14 (-38.89 % of base) : 188521.dasm - CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]:<Cast>b__0():System.__Canon:this (FullOpts)
-16 (-36.36 % of base) : 108094.dasm - Roslyn.Utilities.EnumUtilities:GetValues[ubyte]():ubyte[] (FullOpts)
-16 (-36.36 % of base) : 146282.dasm - Roslyn.Utilities.EnumUtilities:GetValues[ubyte]():ubyte[] (FullOpts)
-78 (-36.11 % of base) : 177821.dasm - System.Xml.Serialization.XmlSchemas:ItemName(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
-14 (-35.90 % of base) : 73876.dasm - System.Data.Common.SqlUdtStorage:SetStorage(System.Object,System.Collections.BitArray):this (FullOpts)
-14 (-34.15 % of base) : 268431.dasm - System.Runtime.Serialization.DataNode`1[System.__Canon]:set_Value(System.Object):this (FullOpts)
-14 (-32.56 % of base) : 222288.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) : 222467.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) : 224141.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) : 175015.dasm - System.Xml.Xsl.Runtime.XmlQuerySequence`1[System.__Canon]:System.Collections.IList.IndexOf(System.Object):int:this (FullOpts)
-33 (-29.73 % of base) : 177742.dasm - System.Xml.Serialization.XmlSchemaImporter:IsMixed(System.Xml.Schema.XmlSchemaType):ubyte (FullOpts)
-19 (-29.69 % of base) : 188241.dasm - CommandLine.Infrastructure.ReflectionHelper:CreateDefaultImmutableInstance[System.__Canon](System.Type[]):System.__Canon (FullOpts)
-19 (-29.69 % of base) : 199410.dasm - Newtonsoft.Json.Linq.JToken:ToObject[System.__Canon]():System.__Canon:this (FullOpts)
-43 (-29.25 % of base) : 291594.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (FullOpts)
-43 (-29.25 % of base) : 293329.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (FullOpts)
-14 (-29.17 % of base) : 285178.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) : 284846.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo`1+<>c__DisplayClass29_0[System.__Canon]:<SetCreateObject>b__0():System.__Canon:this (FullOpts)
libraries_tests.run.windows.x86.Release.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 160677288 (overridden on cmd)
Total bytes of diff: 160705089 (overridden on cmd)
Total bytes of delta: 27801 (0.02 % of base)
diff is a regression.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
659 : 373430.dasm (23.83 % of base)
569 : 373352.dasm (22.19 % of base)
434 : 293339.dasm (3.84 % of base)
413 : 373501.dasm (9.64 % of base)
378 : 174509.dasm (18.87 % of base)
313 : 370100.dasm (2.76 % of base)
301 : 174625.dasm (11.19 % of base)
301 : 426385.dasm (2.92 % of base)
294 : 236532.dasm (2.63 % of base)
294 : 620146.dasm (2.65 % of base)
294 : 621742.dasm (2.66 % of base)
251 : 433684.dasm (2.18 % of base)
225 : 207297.dasm (1.93 % of base)
221 : 371906.dasm (51.88 % of base)
213 : 340178.dasm (1.87 % of base)
200 : 431803.dasm (1.70 % of base)
193 : 241258.dasm (1.62 % of base)
193 : 338742.dasm (1.62 % of base)
193 : 612742.dasm (1.62 % of base)
193 : 369987.dasm (1.62 % of base)
Top file improvements (bytes):
-198 : 140385.dasm (-9.68 % of base)
-197 : 78564.dasm (-11.37 % of base)
-196 : 12443.dasm (-9.46 % of base)
-194 : 126357.dasm (-9.38 % of base)
-183 : 373975.dasm (-13.74 % of base)
-164 : 371735.dasm (-11.29 % of base)
-158 : 580069.dasm (-4.74 % of base)
-142 : 183728.dasm (-1.19 % of base)
-141 : 120687.dasm (-1.20 % of base)
-141 : 133890.dasm (-1.20 % of base)
-141 : 438339.dasm (-1.20 % of base)
-141 : 411611.dasm (-1.20 % of base)
-131 : 373969.dasm (-10.15 % of base)
-128 : 152951.dasm (-4.32 % of base)
-107 : 386929.dasm (-12.74 % of base)
-104 : 81121.dasm (-2.28 % of base)
-95 : 373971.dasm (-9.66 % of base)
-89 : 317356.dasm (-2.38 % of base)
-86 : 79009.dasm (-3.82 % of base)
-82 : 56966.dasm (-2.09 % of base)
87 total files with Code Size differences (51 improved, 36 regressed), 20 unchanged.
Top method regressions (bytes):
659 (23.83 % of base) : 373430.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderInt32Array:Read1_ArrayOfArrayOfInt():System.Object:this (Tier0-FullOpts)
569 (22.19 % of base) : 373352.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderTypeWithArrayPropertyHavingChoice:Read3_Item(ubyte,ubyte):SerializationTypes.TypeWithArrayPropertyHavingChoice:this (Tier0-FullOpts)
434 (3.84 % of base) : 293339.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
413 (9.64 % of base) : 373501.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderInt32Array:Read1_ArrayOfArrayOfArrayOfInt():System.Object:this (Tier0-FullOpts)
378 (18.87 % of base) : 174509.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderOrchestra:Read5_Orchestra(ubyte,ubyte):Orchestra:this (Tier0-FullOpts)
313 (2.76 % of base) : 370100.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
301 (11.19 % of base) : 174625.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderPurchaseOrder:Read4_PurchaseOrder(ubyte,ubyte):PurchaseOrder:this (Tier0-FullOpts)
301 (2.92 % of base) : 426385.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
294 (2.63 % of base) : 236532.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
294 (2.65 % of base) : 620146.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
294 (2.66 % of base) : 621742.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
251 (2.18 % of base) : 433684.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
225 (1.93 % of base) : 207297.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
221 (51.88 % of base) : 371906.dasm - System.Reflection.Emit.RuntimeTypeBuilder:IsSubclassOf(System.Type):ubyte:this (Tier1)
213 (1.87 % of base) : 340178.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
200 (1.70 % of base) : 431803.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
193 (1.62 % of base) : 241258.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
193 (1.62 % of base) : 338742.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
193 (1.62 % of base) : 612742.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
193 (1.62 % of base) : 369987.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
Top method improvements (bytes):
-198 (-9.68 % of base) : 140385.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:AppendUseSiteDiagnostics(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,byref):ubyte (Tier0-FullOpts)
-197 (-11.37 % of base) : 78564.dasm - Microsoft.CodeAnalysis.FindSymbols.FindReferencesSearchEngine+SymbolSet+<DetermineInitialUpSymbolsAsync>d__10:MoveNext():this (Tier0-FullOpts)
-196 (-9.46 % of base) : 12443.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:AppendUseSiteDiagnostics(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,byref):ubyte (Tier0-FullOpts)
-194 (-9.38 % of base) : 126357.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:AppendUseSiteDiagnostics(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,byref):ubyte (Tier0-FullOpts)
-183 (-13.74 % of base) : 373975.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) : 371735.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write63_XmlSchema(System.String,System.String,System.Xml.Schema.XmlSchema,ubyte,ubyte):this (Tier0-FullOpts)
-158 (-4.74 % of base) : 580069.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceParameterSymbolBase:AddSynthesizedAttributes(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,byref):this (Tier1)
-142 (-1.19 % of base) : 183728.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
-141 (-1.20 % of base) : 120687.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
-141 (-1.20 % of base) : 133890.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
-141 (-1.20 % of base) : 438339.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
-141 (-1.20 % of base) : 411611.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
-131 (-10.15 % of base) : 373969.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write59_XmlSchemaComplexType(System.String,System.String,System.Xml.Schema.XmlSchemaComplexType,ubyte,ubyte):this (Tier0-FullOpts)
-128 (-4.32 % of base) : 152951.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
-107 (-12.74 % of base) : 386929.dasm - System.Xml.XslCompiledTransformApiTests.CSameInstanceXsltArgumentListTransform:SharedArgList(System.Object):int:this (Tier0-FullOpts)
-104 (-2.28 % of base) : 81121.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol:CalculateUseSiteDiagnostic(byref):ubyte:this (Tier1)
-95 (-9.66 % of base) : 373971.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) : 317356.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) : 79009.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)
-82 (-2.09 % of base) : 56966.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindElementAccessCore(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
Top method regressions (percentages):
221 (51.88 % of base) : 371906.dasm - System.Reflection.Emit.RuntimeTypeBuilder:IsSubclassOf(System.Type):ubyte:this (Tier1)
97 (29.75 % of base) : 456215.dasm - System.Reflection.RuntimeModule:ConvertToTypeHandleArray(System.Type[]):System.RuntimeTypeHandle[] (Tier1)
96 (29.36 % of base) : 371840.dasm - System.Reflection.RuntimeModule:ConvertToTypeHandleArray(System.Type[]):System.RuntimeTypeHandle[] (Tier1)
67 (28.63 % of base) : 623691.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
659 (23.83 % of base) : 373430.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderInt32Array:Read1_ArrayOfArrayOfInt():System.Object:this (Tier0-FullOpts)
569 (22.19 % of base) : 373352.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderTypeWithArrayPropertyHavingChoice:Read3_Item(ubyte,ubyte):SerializationTypes.TypeWithArrayPropertyHavingChoice:this (Tier0-FullOpts)
59 (21.85 % of base) : 327924.dasm - System.Collections.Hashtable:KeyEquals(System.Object,System.Object):ubyte:this (Tier1)
378 (18.87 % of base) : 174509.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderOrchestra:Read5_Orchestra(ubyte,ubyte):Orchestra:this (Tier0-FullOpts)
75 (18.07 % of base) : 336105.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[Interop+WinHttp+WINHTTP_ASYNC_RESULT](int):Interop+WinHttp+WINHTTP_ASYNC_RESULT (Tier1)
18 (17.31 % of base) : 552032.dasm - System.Text.Json.JsonSerializer:ValidateInputType(System.Object,System.Type) (Tier1)
80 (16.46 % of base) : 373353.dasm - System.DefaultBinder:FindMostSpecificType(System.Type,System.Type,System.Type):int (Tier1)
51 (15.64 % of base) : 462556.dasm - System.RuntimeType:GetEnumValues():System.Array:this (Tier1)
46 (15.08 % of base) : 274210.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
58 (15.03 % of base) : 465698.dasm - System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:Insert(System.__Canon,System.__Canon):this (Tier1)
43 (14.88 % of base) : 621744.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
59 (14.53 % of base) : 270621.dasm - System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:Insert(System.__Canon,System.__Canon):this (Tier1)
51 (14.45 % of base) : 483512.dasm - System.RuntimeType:GetEnumValues():System.Array:this (Tier1)
51 (14.25 % of base) : 312336.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
43 (14.10 % of base) : 620747.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
46 (13.94 % of base) : 429241.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
Top method improvements (percentages):
-41 (-42.27 % of base) : 375396.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) : 551021.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
-18 (-38.30 % of base) : 114695.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
-16 (-36.36 % of base) : 55046.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (Tier1)
-22 (-33.33 % of base) : 496438.dasm - Moq.Mock`1[System.__Canon]:get_Object():System.__Canon:this (Tier1)
-19 (-32.76 % of base) : 1656.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-43 (-29.25 % of base) : 108325.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (Tier1)
-14 (-25.93 % of base) : 131796.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) : 95922.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) : 551626.dasm - System.Text.Json.Serialization.Converters.QueueOfTConverter`2[System.__Canon,System.__Canon]:Add(byref,byref):this (Tier1)
-15 (-25.00 % of base) : 555737.dasm - System.Text.Json.Serialization.Converters.StackOfTConverter`2[System.__Canon,System.__Canon]:Add(byref,byref):this (Tier1)
-36 (-25.00 % of base) : 551817.dasm - System.Text.Json.Serialization.Converters.StackOrQueueConverter`1[System.__Canon]:Add(byref,byref):this (Tier1)
-15 (-25.00 % of base) : 115074.dasm - Xunit.Assert:IsAssignableFrom[System.__Canon](System.Object):System.__Canon (Tier1)
-15 (-25.00 % of base) : 108292.dasm - Xunit.Assert:IsType[System.__Canon](System.Object):System.__Canon (Tier1)
-19 (-25.00 % of base) : 108506.dasm - Xunit.Assert:Throws[System.__Canon](System.Action):System.__Canon (Tier1)
-19 (-25.00 % of base) : 183399.dasm - Xunit.Assert:ThrowsAny[System.__Canon](System.Action):System.__Canon (Tier1)
-16 (-23.88 % of base) : 82018.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-19 (-23.46 % of base) : 108088.dasm - Xunit.Assert:Throws[System.__Canon](System.Func`1[System.Object]):System.__Canon (Tier1)
-19 (-23.46 % of base) : 282227.dasm - Xunit.Assert:ThrowsAny[System.__Canon](System.Func`1[System.Object]):System.__Canon (Tier1)
-23 (-23.23 % of base) : 82153.dasm - Microsoft.CodeAnalysis.DefaultTextDocumentServiceProvider:GetService[System.__Canon]():System.__Canon:this (Tier1)
librariestestsnotieredcompilation.run.windows.x86.Release.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 89509872 (overridden on cmd)
Total bytes of diff: 89501425 (overridden on cmd)
Total bytes of delta: -8447 (-0.01 % of base)
diff is a regression.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
659 : 172806.dasm (24.11 % of base)
413 : 172828.dasm (9.72 % of base)
378 : 64210.dasm (18.87 % of base)
365 : 172760.dasm (14.42 % of base)
298 : 64320.dasm (11.60 % of base)
186 : 177369.dasm (9.90 % of base)
128 : 172070.dasm (4.07 % of base)
128 : 172525.dasm (4.07 % of base)
122 : 172069.dasm (2.65 % of base)
122 : 172524.dasm (2.65 % of base)
111 : 172697.dasm (3.81 % of base)
100 : 145705.dasm (9.97 % of base)
88 : 119297.dasm (11.52 % of base)
88 : 119308.dasm (11.99 % of base)
85 : 172822.dasm (5.13 % of base)
85 : 172428.dasm (5.01 % of base)
85 : 172792.dasm (4.78 % of base)
85 : 173231.dasm (4.36 % of base)
85 : 64199.dasm (4.71 % of base)
85 : 172851.dasm (4.71 % of base)
Top file improvements (bytes):
-470 : 209542.dasm (-10.50 % of base)
-364 : 314154.dasm (-7.29 % of base)
-253 : 64882.dasm (-20.91 % of base)
-215 : 10710.dasm (-10.34 % of base)
-205 : 2992.dasm (-10.19 % of base)
-198 : 20703.dasm (-10.01 % of base)
-196 : 51451.dasm (-9.46 % of base)
-196 : 6755.dasm (-9.46 % of base)
-196 : 45622.dasm (-9.46 % of base)
-189 : 199276.dasm (-17.68 % of base)
-189 : 210846.dasm (-17.68 % of base)
-189 : 20679.dasm (-11.26 % of base)
-187 : 16460.dasm (-10.84 % of base)
-187 : 16405.dasm (-10.75 % of base)
-184 : 173046.dasm (-14.05 % of base)
-175 : 21536.dasm (-9.71 % of base)
-172 : 14404.dasm (-18.90 % of base)
-164 : 172163.dasm (-11.29 % of base)
-145 : 199641.dasm (-13.39 % of base)
-145 : 210826.dasm (-13.39 % of base)
93 total files with Code Size differences (53 improved, 40 regressed), 20 unchanged.
Top method regressions (bytes):
659 (24.11 % of base) : 172806.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderInt32Array:Read1_ArrayOfArrayOfInt():System.Object:this (FullOpts)
413 (9.72 % of base) : 172828.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderInt32Array:Read1_ArrayOfArrayOfArrayOfInt():System.Object:this (FullOpts)
378 (18.87 % of base) : 64210.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderOrchestra:Read5_Orchestra(ubyte,ubyte):Orchestra:this (FullOpts)
365 (14.42 % of base) : 172760.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderTypeWithArrayPropertyHavingChoice:Read3_Item(ubyte,ubyte):SerializationTypes.TypeWithArrayPropertyHavingChoice:this (FullOpts)
298 (11.60 % of base) : 64320.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderPurchaseOrder:Read4_PurchaseOrder(ubyte,ubyte):PurchaseOrder:this (FullOpts)
186 (9.90 % of base) : 177369.dasm - (dynamicClass):<xsl:template match="/">(System.Xml.Xsl.Runtime.XmlQueryRuntime) (FullOpts)
128 (4.07 % of base) : 172070.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderXmlSerializerAttributes:Read2_Object(ubyte,ubyte):System.Object:this (FullOpts)
128 (4.07 % of base) : 172525.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderXmlSerializerAttributes:Read2_Object(ubyte,ubyte):System.Object:this (FullOpts)
122 (2.65 % of base) : 172069.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderXmlSerializerAttributes:Read3_XmlSerializerAttributes(ubyte,ubyte):SerializationTypes.XmlSerializerAttributes:this (FullOpts)
122 (2.65 % of base) : 172524.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderXmlSerializerAttributes:Read3_XmlSerializerAttributes(ubyte,ubyte):SerializationTypes.XmlSerializerAttributes:this (FullOpts)
111 (3.81 % of base) : 172697.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderTypeWith2DArrayProperty2:Read3_TypeWith2DArrayProperty2(ubyte,ubyte):SerializationTypes.TypeWith2DArrayProperty2:this (FullOpts)
100 (9.97 % of base) : 145705.dasm - System.Linq.Tests.ToLookupTests+<DebuggerAttributesValid_Data>d__25:MoveNext():ubyte:this (FullOpts)
88 (11.99 % of base) : 119308.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList:VerifyWriteNamedBitList_Generic(int) (FullOpts)
88 (11.52 % of base) : 119297.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList:VerifyWriteNamedBitList_Generic_WithTag(int) (FullOpts)
85 (4.36 % of base) : 173231.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1:Read2_Item(ubyte,ubyte):XmlMembersMappingTypeHavingIntArray:this (FullOpts)
85 (5.01 % of base) : 172428.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderObject:Read1_Object(ubyte,ubyte):System.Object:this (FullOpts)
85 (4.78 % of base) : 172792.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderObject:Read2_Object(ubyte,ubyte):System.Object:this (FullOpts)
85 (5.13 % of base) : 172822.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderObjectArray:Read1_Object(ubyte,ubyte):System.Object:this (FullOpts)
85 (4.71 % of base) : 64199.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderOrchestra:Read3_Orchestra(ubyte,ubyte):Orchestra:this (FullOpts)
85 (4.71 % of base) : 172851.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderTypeHasArrayOfASerializedAsB:Read3_TypeHasArrayOfASerializedAsB(ubyte,ubyte):SerializationTypes.TypeHasArrayOfASerializedAsB:this (FullOpts)
Top method improvements (bytes):
-470 (-10.50 % of base) : 209542.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) : 314154.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) : 64882.dasm - System.CodeDom.Compiler.CodeGenerator:GenerateExpression(System.CodeDom.CodeExpression):this (FullOpts)
-215 (-10.34 % of base) : 10710.dasm - Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers+<CreateAndInitializeDriverAsync>d__41:MoveNext():this (FullOpts)
-205 (-10.19 % of base) : 2992.dasm - Microsoft.VisualStudio.Composition.CompositionConfiguration:ComputeSharingBoundaryMetadata(System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.CompositionConfiguration+PartBuilder]):System.Collections.Immutable.ImmutableDictionary`2[System.String,Microsoft.VisualStudio.Composition.CompositionConfiguration+SharingBoundaryMetadata] (FullOpts)
-198 (-10.01 % of base) : 20703.dasm - Microsoft.CodeAnalysis.FindSymbols.DependentTypeFinder+<GetProjectsThatCouldReferenceTypeAsync>d__10:MoveNext():this (FullOpts)
-196 (-9.46 % of base) : 51451.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:AppendUseSiteDiagnostics(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
-196 (-9.46 % of base) : 6755.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:AppendUseSiteDiagnostics(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
-196 (-9.46 % of base) : 45622.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:AppendUseSiteDiagnostics(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
-189 (-11.26 % of base) : 20679.dasm - Microsoft.CodeAnalysis.FindSymbols.FindReferencesSearchEngine+SymbolSet+<DetermineInitialUpSymbolsAsync>d__10:MoveNext():this (FullOpts)
-189 (-17.68 % of base) : 199276.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) : 210846.dasm - System.Tests.ArrayTests:Sort_Array_Generic[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon[]) (FullOpts)
-187 (-10.75 % of base) : 16405.dasm - Microsoft.CodeAnalysis.ProjectDependencyGraph:GetProjectsThatThisProjectTransitivelyDependsOn_NoLock(Microsoft.CodeAnalysis.ProjectId):System.Collections.Immutable.ImmutableHashSet`1[Microsoft.CodeAnalysis.ProjectId]:this (FullOpts)
-187 (-10.84 % of base) : 16460.dasm - Microsoft.CodeAnalysis.ProjectDependencyGraph:GetProjectsThatTransitivelyDependOnThisProject_NoLock(Microsoft.CodeAnalysis.ProjectId):System.Collections.Immutable.ImmutableHashSet`1[Microsoft.CodeAnalysis.ProjectId]:this (FullOpts)
-184 (-14.05 % of base) : 173046.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write28_XmlSchemaSimpleTypeRestriction(System.String,System.String,System.Xml.Schema.XmlSchemaSimpleTypeRestriction,ubyte,ubyte):this (FullOpts)
-175 (-9.71 % of base) : 21536.dasm - Microsoft.CodeAnalysis.FindSymbols.FindReferencesSearchEngine:GetProjectsToSearchAsync(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISymbol],System.Threading.CancellationToken):System.Threading.Tasks.Task`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Project]]:this (FullOpts)
-172 (-18.90 % of base) : 14404.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) : 172163.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) : 199641.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) : 210826.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)
Top method regressions (percentages):
18 (90.00 % of base) : 98994.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0:<Insert>b__2():this (FullOpts)
17 (43.59 % of base) : 98200.dasm - System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
17 (43.59 % of base) : 98615.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
71 (37.37 % of base) : 100944.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[Microsoft.Win32.UnsafeNativeMethods+EvtVariant](int):Microsoft.Win32.UnsafeNativeMethods+EvtVariant (FullOpts)
659 (24.11 % of base) : 172806.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderInt32Array:Read1_ArrayOfArrayOfInt():System.Object:this (FullOpts)
71 (22.12 % of base) : 119291.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass5_0:<VerifyWriteNamedBitList_FlagsEnumRequired>b__0():this (FullOpts)
22 (22.00 % of base) : 185849.dasm - System.Reflection.Emit.TypeBuilderImpl:get_UnderlyingSystemType():System.Type:this (FullOpts)
71 (21.78 % of base) : 119293.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass5_0:<VerifyWriteNamedBitList_FlagsEnumRequired>b__2():this (FullOpts)
71 (20.76 % of base) : 119306.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass6_0:<VerifyWriteNamedBitList_Null>b__0():this (FullOpts)
71 (20.58 % of base) : 119292.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass5_0:<VerifyWriteNamedBitList_FlagsEnumRequired>b__1():this (FullOpts)
79 (20.52 % of base) : 119809.dasm - System.Formats.Asn1.AsnWriter:WriteEnumeratedValue[long](long,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (FullOpts)
79 (20.52 % of base) : 119825.dasm - System.Formats.Asn1.AsnWriter:WriteEnumeratedValue[ulong](ulong,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (FullOpts)
79 (20.41 % of base) : 119811.dasm - System.Formats.Asn1.AsnWriter:WriteEnumeratedValue[byte](byte,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (FullOpts)
79 (20.41 % of base) : 119799.dasm - System.Formats.Asn1.AsnWriter:WriteEnumeratedValue[int](int,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (FullOpts)
79 (20.41 % of base) : 119803.dasm - System.Formats.Asn1.AsnWriter:WriteEnumeratedValue[ubyte](ubyte,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (FullOpts)
79 (20.41 % of base) : 119793.dasm - System.Formats.Asn1.AsnWriter:WriteEnumeratedValue[uint](uint,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (FullOpts)
79 (20.36 % of base) : 119807.dasm - System.Formats.Asn1.AsnWriter:WriteEnumeratedValue[short](short,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (FullOpts)
79 (20.36 % of base) : 119805.dasm - System.Formats.Asn1.AsnWriter:WriteEnumeratedValue[ushort](ushort,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (FullOpts)
71 (20.34 % of base) : 119307.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass6_0:<VerifyWriteNamedBitList_Null>b__1():this (FullOpts)
71 (20.29 % of base) : 119294.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass5_0:<VerifyWriteNamedBitList_FlagsEnumRequired>b__3():this (FullOpts)
Top method improvements (percentages):
-14 (-42.42 % of base) : 90827.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) : 62860.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) : 139286.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) : 36875.dasm - LamarCodeGeneration.Util.TypeExtensions:As[System.__Canon](System.Object):System.__Canon (FullOpts)
-16 (-39.02 % of base) : 148098.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
-14 (-38.89 % of base) : 42951.dasm - Microsoft.CodeAnalysis.Options.Option`1[System.__Canon]:Microsoft.CodeAnalysis.Options.IOption.get_DefaultValue():System.Object:this (FullOpts)
-14 (-38.89 % of base) : 48585.dasm - Microsoft.CodeAnalysis.Options.Option`1[System.__Canon]:Microsoft.CodeAnalysis.Options.IOption.get_DefaultValue():System.Object:this (FullOpts)
-14 (-38.89 % of base) : 42947.dasm - Microsoft.CodeAnalysis.Options.Option2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
-14 (-38.89 % of base) : 48578.dasm - Microsoft.CodeAnalysis.Options.Option2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
-14 (-38.89 % of base) : 42949.dasm - Microsoft.CodeAnalysis.Options.PerLanguageOption2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
-14 (-38.89 % of base) : 48580.dasm - Microsoft.CodeAnalysis.Options.PerLanguageOption2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
-14 (-32.56 % of base) : 70522.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
-14 (-32.56 % of base) : 72769.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,int]:System.Collections.IDictionary.Remove(System.Object):this (FullOpts)
-14 (-32.56 % of base) : 73130.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,int]:System.Collections.IDictionary.Remove(System.Object):this (FullOpts)
-18 (-30.51 % of base) : 173075.dasm - System.Xml.Schema.XmlSchemaSimpleType:get_DerivedFrom():System.Xml.XmlQualifiedName:this (FullOpts)
-14 (-30.43 % of base) : 100176.dasm - System.Diagnostics.DiagnosticSourceEventSource+TransformSpec+PropertySpec+PropertyFetch+RefTypedFetchProperty`2[System.__Canon,System.__Canon]:Fetch(System.Object):System.Object:this (FullOpts)
-14 (-29.79 % of base) : 835.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
-33 (-29.73 % of base) : 172477.dasm - System.Xml.Serialization.XmlSchemaImporter:IsMixed(System.Xml.Schema.XmlSchemaType):ubyte (FullOpts)
-19 (-29.69 % of base) : 22445.dasm - Newtonsoft.Json.Linq.JToken:ToObject[System.__Canon]():System.__Canon:this (FullOpts)
-43 (-29.25 % of base) : 1757.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: 7942301 (overridden on cmd)
Total bytes of diff: 7939879 (overridden on cmd)
Total bytes of delta: -2422 (-0.03 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
71 : 35475.dasm (37.37 % of base)
22 : 15134.dasm (0.63 % of base)
11 : 8032.dasm (2.60 % of base)
6 : 31098.dasm (0.65 % of base)
6 : 12254.dasm (3.05 % of base)
5 : 34118.dasm (2.79 % of base)
Top file improvements (bytes):
-196 : 21951.dasm (-9.47 % of base)
-172 : 34119.dasm (-36.36 % of base)
-118 : 34865.dasm (-36.20 % of base)
-67 : 35573.dasm (-22.26 % of base)
-56 : 34115.dasm (-21.46 % of base)
-46 : 35366.dasm (-21.30 % of base)
-38 : 34103.dasm (-22.09 % of base)
-35 : 30486.dasm (-9.67 % of base)
-33 : 16923.dasm (-12.55 % of base)
-33 : 24868.dasm (-1.55 % of base)
-32 : 26643.dasm (-15.17 % of base)
-29 : 35827.dasm (-15.43 % of base)
-28 : 18335.dasm (-6.10 % of base)
-26 : 34077.dasm (-1.90 % of base)
-25 : 32093.dasm (-2.72 % of base)
-25 : 8430.dasm (-27.17 % of base)
-24 : 9657.dasm (-6.20 % of base)
-24 : 13096.dasm (-15.89 % of base)
-24 : 34072.dasm (-20.17 % of base)
-23 : 23120.dasm (-2.35 % of base)
58 total files with Code Size differences (52 improved, 6 regressed), 8 unchanged.
Top method regressions (bytes):
71 (37.37 % of base) : 35475.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[System.Runtime.InteropServices.ComTypes.ELEMDESC](int):System.Runtime.InteropServices.ComTypes.ELEMDESC (FullOpts)
22 (0.63 % of base) : 15134.dasm - Microsoft.ML.Data.TextLoader+Bindings:.ctor(Microsoft.ML.Data.TextLoader,Microsoft.ML.Data.TextLoader+Column[],Microsoft.ML.Data.IMultiStreamSource,Microsoft.ML.Data.IMultiStreamSource):this (FullOpts)
11 (2.60 % of base) : 8032.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)
6 (3.05 % of base) : 12254.dasm - FSharp.Compiler.SyntaxTreeOps:unionBindingAndMembers(Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynMemberDefn]):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding] (FullOpts)
6 (0.65 % of base) : 31098.dasm - Microsoft.Cci.MetadataWriter:PopulateDeclSecurityTableRowsFor(System.Reflection.Metadata.EntityHandle,System.Collections.Generic.IEnumerable`1[Microsoft.Cci.SecurityAttribute]):this (FullOpts)
5 (2.79 % of base) : 34118.dasm - System.Management.Automation.Interpreter.NewArrayInitInstruction`1[System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
Top method improvements (bytes):
-196 (-9.47 % of base) : 21951.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:AppendUseSiteDiagnostics(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
-172 (-36.36 % of base) : 34119.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) : 34865.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) : 35573.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) : 34115.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) : 35366.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) : 34103.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`2[System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-35 (-9.67 % of base) : 30486.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (FullOpts)
-33 (-1.55 % of base) : 24868.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 (-12.55 % of base) : 16923.dasm - System.Net.Http.Headers.HttpHeaders:AddValueToStoreValue[System.__Canon](System.__Canon,byref) (FullOpts)
-32 (-15.17 % of base) : 26643.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) : 35827.dasm - System.Runtime.InteropServices.CustomMarshalers.ComDataHelpers:GetOrCreateManagedViewFromComData[System.__Canon,System.__Canon](System.Object,System.Func`2[System.__Canon,System.__Canon]):System.__Canon (FullOpts)
-28 (-6.10 % of base) : 18335.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithAnnotationsGreen[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxAnnotation]):System.__Canon (FullOpts)
-26 (-1.90 % of base) : 34077.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) : 8430.dasm - FSharp.Compiler.TypedTreeOps:targetOfSuccessDecisionTree(FSharp.Compiler.TypedTree+DecisionTree):Microsoft.FSharp.Core.FSharpOption`1[int] (FullOpts)
-25 (-2.72 % of base) : 32093.dasm - System.Runtime.CompilerServices.CallSite`1[System.__Canon]:<MakeUpdateDelegate>g__MakeUpdateDelegateWhenCanCompileToIL|18_0(byref):System.__Canon:this (FullOpts)
-24 (-6.20 % of base) : 9657.dasm - FSharp.Compiler.CheckDeclarations+TcDeclarations:SplitTyconDefn(FSharp.Compiler.Syntax.SynTypeDefn):System.Tuple`2[FSharp.Compiler.CheckDeclarations+MutRecDefnsPhase1DataForTycon,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynMemberDefn]] (FullOpts)
-24 (-15.89 % of base) : 13096.dasm - FSharp.Compiler.CompilerDiagnostics:GetWarningLevel(FSharp.Compiler.ErrorLogger+PhasedDiagnostic):int (FullOpts)
-24 (-20.17 % of base) : 34072.dasm - System.Management.Automation.LanguagePrimitives:ConvertTo[System.__Canon](System.Object):System.__Canon (FullOpts)
-23 (-2.35 % of base) : 23120.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)
Top method regressions (percentages):
71 (37.37 % of base) : 35475.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[System.Runtime.InteropServices.ComTypes.ELEMDESC](int):System.Runtime.InteropServices.ComTypes.ELEMDESC (FullOpts)
6 (3.05 % of base) : 12254.dasm - FSharp.Compiler.SyntaxTreeOps:unionBindingAndMembers(Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynMemberDefn]):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding] (FullOpts)
5 (2.79 % of base) : 34118.dasm - System.Management.Automation.Interpreter.NewArrayInitInstruction`1[System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
11 (2.60 % of base) : 8032.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)
6 (0.65 % of base) : 31098.dasm - Microsoft.Cci.MetadataWriter:PopulateDeclSecurityTableRowsFor(System.Reflection.Metadata.EntityHandle,System.Collections.Generic.IEnumerable`1[Microsoft.Cci.SecurityAttribute]):this (FullOpts)
22 (0.63 % of base) : 15134.dasm - Microsoft.ML.Data.TextLoader+Bindings:.ctor(Microsoft.ML.Data.TextLoader,Microsoft.ML.Data.TextLoader+Column[],Microsoft.ML.Data.IMultiStreamSource,Microsoft.ML.Data.IMultiStreamSource):this (FullOpts)
Top method improvements (percentages):
-14 (-42.42 % of base) : 34198.dasm - System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]:<GetCustomAttributes>b__7_1(System.Object):System.__Canon:this (FullOpts)
-172 (-36.36 % of base) : 34119.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) : 34865.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) : 34277.dasm - System.Management.Automation.Language.GetSafeValueVisitor:VisitArrayExpression(System.Management.Automation.Language.ArrayExpressionAst):System.Object:this (FullOpts)
-14 (-29.79 % of base) : 32224.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
-19 (-28.79 % of base) : 20808.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
-25 (-27.17 % of base) : 8430.dasm - FSharp.Compiler.TypedTreeOps:targetOfSuccessDecisionTree(FSharp.Compiler.TypedTree+DecisionTree):Microsoft.FSharp.Core.FSharpOption`1[int] (FullOpts)
-22 (-27.16 % of base) : 18797.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
-14 (-26.42 % of base) : 19103.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithDiagnosticsGreen[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.DiagnosticInfo[]):System.__Canon (FullOpts)
-67 (-22.26 % of base) : 35573.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) : 34103.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) : 34115.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) : 35366.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) : 34072.dasm - System.Management.Automation.LanguagePrimitives:ConvertTo[System.__Canon](System.Object):System.__Canon (FullOpts)
-12 (-19.67 % of base) : 4540.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) : 9605.dasm - FSharp.Compiler.TypedTreeBasics:ccuOfTyconRef(FSharp.Compiler.TypedTree+EntityRef):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk] (FullOpts)
-14 (-17.72 % of base) : 24534.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (FullOpts)
-14 (-17.50 % of base) : 34874.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`1[System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-12 (-16.44 % of base) : 9312.dasm - FSharp.Compiler.TypedTreeOps:remapAttribKind(FSharp.Compiler.TypedTreeOps+Remap,FSharp.Compiler.TypedTree+AttribKind):FSharp.Compiler.TypedTree+AttribKind (FullOpts)